| 593aeae4 |
sago007 |
2011-06-25 22:42 |
1 |
/* |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
2 |
menudef.cpp |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
3 |
Copyright (C) 2011 Poul Sander |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
4 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
5 |
This program is free software; you can redistribute it and/or modify |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
6 |
it under the terms of the GNU General Public License as published by |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
7 |
the Free Software Foundation; either version 2 of the License, or |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
8 |
(at your option) any later version. |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
9 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
10 |
This program is distributed in the hope that it will be useful, |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
13 |
GNU General Public License for more details. |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
14 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
15 |
You should have received a copy of the GNU General Public License |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
16 |
along with this program; if not, write to the Free Software |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
17 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
18 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
19 |
Poul Sander |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
20 |
blockattack@poulsander.com |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
21 |
*/ |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
22 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
23 |
#include "global.hpp" |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
24 |
#include <iostream> |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
25 |
#include <stdlib.h> |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
26 |
#include "menu/MenuItem.hpp" |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
27 |
#include "MenuSystem.h" |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
28 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
29 |
using namespace std; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
30 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
31 |
//Menu |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
32 |
void PrintHi() |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
33 |
{ |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
34 |
cout << "Hi" <<endl; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
35 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
36 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
37 |
//Stores the controls |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
38 |
struct control |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
39 |
{ |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
40 |
SDLKey up; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
41 |
SDLKey down; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
42 |
SDLKey left; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
43 |
SDLKey right; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
44 |
SDLKey change; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
45 |
SDLKey push; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
46 |
}; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
47 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
48 |
bool OpenDialogbox(int x, int y, char *name); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
49 |
void OpenScoresDisplay(); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
50 |
extern control keySettings[3]; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
51 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
52 |
//Function to return the name of a key, to be displayed... |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
53 |
static string getKeyName(SDLKey key) |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
54 |
{ |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
55 |
string keyname(SDL_GetKeyName(key)); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
56 |
cout << key << " translated to " << keyname << endl; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
57 |
return keyname; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
58 |
} |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
59 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
60 |
class Button_changekey : public Button { |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
61 |
private: |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
62 |
SDLKey *m_key2change; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
63 |
string m_keyname; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
64 |
public: |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
65 |
Button_changekey(SDLKey *key, string keyname); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
66 |
void doAction(); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
67 |
}; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
68 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
69 |
Button_changekey::Button_changekey(SDLKey* key, string keyname) { |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
70 |
m_key2change = key; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
71 |
m_keyname = keyname; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
72 |
setLabel(m_keyname+" : "+getKeyName(*m_key2change)); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
73 |
} |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
74 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
75 |
void Button_changekey::doAction() { |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
76 |
setLabel(m_keyname+" : "+getKeyName(*m_key2change)); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
77 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
78 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
79 |
void InitMenues() |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
80 |
{ |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
81 |
ButtonGfx::setSurfaces(menuMarked,menuUnmarked); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
82 |
ButtonGfx::thefont = nf_scoreboard_font; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
83 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
84 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
85 |
void runGame(int gametype); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
86 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
87 |
void runSinglePlayerEndless(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
88 |
runGame(0); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
89 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
90 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
91 |
void runSinglePlayerTimeTrial(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
92 |
runGame(1); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
93 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
94 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
95 |
void runSinglePlayerPuzzle(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
96 |
runGame(3); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
97 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
98 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
99 |
void runSinglePlayerVs(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
100 |
runGame(4); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
101 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
102 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
103 |
void buttonActionMusic(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
104 |
MusicEnabled = !MusicEnabled; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
105 |
b->setLabel(MusicEnabled? "Music: On" : "Music: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
106 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
107 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
108 |
void buttonActionSound(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
109 |
SoundEnabled = !SoundEnabled; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
110 |
b->setLabel(SoundEnabled? "Music: On" : "Music: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
111 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
112 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
113 |
void buttonActionFullscreen(Button* b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
114 |
bFullscreen = !bFullscreen; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
115 |
b->setLabel(bFullscreen? "Fullscreen: On" : "Fullscreen: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
116 |
ResetFullscreen(); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
117 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
118 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
119 |
void buttonActionPlayer1Name(Button *b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
120 |
if (OpenDialogbox(200,100,player1name)) |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
121 |
return; //must save if true |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
122 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
123 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
124 |
void buttonActionPlayer2Name(Button *b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
125 |
if (OpenDialogbox(200,100,player2name)) |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
126 |
return; //must save if true |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
127 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
128 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
129 |
void buttonActionHighscores(Button *b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
130 |
OpenScoresDisplay(); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
131 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
132 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
133 |
static void ChangeKeysMenu(long playernumber) { |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
134 |
Menu km(&screen,false); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
135 |
Button_changekey bLeft(&keySettings[playernumber].left,"Left"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
136 |
Button_changekey bRight(&keySettings[playernumber].right,"Right"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
137 |
Button_changekey bUp(&keySettings[playernumber].up,"Up"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
138 |
Button_changekey bDown(&keySettings[playernumber].down,"Down"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
139 |
Button_changekey bPush(&keySettings[playernumber].push,"Push"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
140 |
Button_changekey bSwitch(&keySettings[playernumber].change,"Change"); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
141 |
km.addButton(&bLeft); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
142 |
km.addButton(&bRight); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
143 |
km.addButton(&bUp); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
144 |
km.addButton(&bDown); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
145 |
km.addButton(&bPush); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
146 |
km.addButton(&bSwitch); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
147 |
km.run(); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
148 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
149 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
150 |
static void ChangeKeysMenu1(Button *b) { |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
151 |
ChangeKeysMenu(0); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
152 |
} |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
153 |
|
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
154 |
static void ChangeKeysMenu2(Button *b) { |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
155 |
ChangeKeysMenu(2); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
156 |
} |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
157 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
158 |
void ConfigureMenu(Button *b) { |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
159 |
Menu cm(&screen,false); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
160 |
Button bMusic,bSound,buttonFullscreen,bPlayer1Name,bPlayer2Name; |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
161 |
Button bPlayer1Keys, bPlayer2Keys; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
162 |
bMusic.setLabel(MusicEnabled? "Music: On" : "Music: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
163 |
bMusic.setAction(buttonActionMusic); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
164 |
bSound.setLabel(SoundEnabled? "Music: On" : "Music: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
165 |
bSound.setAction(buttonActionSound); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
166 |
buttonFullscreen.setLabel(bFullscreen? "Fullscreen: On" : "Fullscreen: Off"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
167 |
buttonFullscreen.setAction(buttonActionFullscreen); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
168 |
bPlayer1Name.setAction(buttonActionPlayer1Name); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
169 |
bPlayer1Name.setLabel("Change player 1's name"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
170 |
bPlayer2Name.setAction(buttonActionPlayer2Name); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
171 |
bPlayer2Name.setLabel("Change player 2's name"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
172 |
bPlayer1Keys.setAction(ChangeKeysMenu1); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
173 |
bPlayer1Keys.setLabel("Change player 1's keys"); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
174 |
bPlayer2Keys.setAction(ChangeKeysMenu2); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
175 |
bPlayer2Keys.setLabel("Change player 2's keys"); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
176 |
cm.addButton(&bMusic); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
177 |
cm.addButton(&bSound); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
178 |
cm.addButton(&buttonFullscreen); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
179 |
cm.addButton(&bPlayer1Name); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
180 |
cm.addButton(&bPlayer2Name); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
181 |
cm.addButton(&bPlayer1Keys); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
182 |
cm.addButton(&bPlayer2Keys); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
183 |
cm.run(); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
184 |
} |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
185 |
|
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
186 |
void MainMenu() |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
187 |
{ |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
188 |
InitMenues(); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
189 |
Menu m(&screen,true); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
190 |
Button bHi,bTimetrial1, bPuzzle, bVs1, bConfigure,bHighscore; |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
191 |
bHi.setLabel("Single player - endless"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
192 |
bHi.setAction(runSinglePlayerEndless); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
193 |
bTimetrial1.setLabel("Single player - time trial"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
194 |
bTimetrial1.setAction(runSinglePlayerTimeTrial); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
195 |
bPuzzle.setLabel("Single player - puzzle mode"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
196 |
bPuzzle.setAction(runSinglePlayerPuzzle); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
197 |
bVs1.setLabel("Single player - vs"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
198 |
bVs1.setAction(runSinglePlayerVs); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
199 |
bConfigure.setLabel("Configure"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
200 |
bConfigure.setAction(ConfigureMenu); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
201 |
bHighscore.setLabel("Highscores"); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
202 |
bHighscore.setAction(buttonActionHighscores); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
203 |
m.addButton(&bHi); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
204 |
m.addButton(&bTimetrial1); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
205 |
m.addButton(&bPuzzle); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
206 |
m.addButton(&bVs1); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
207 |
m.addButton(&bConfigure); |
| fc8e3d6a |
sago007 |
2011-06-25 16:31 |
208 |
m.addButton(&bHighscore); |
| 26ddb424 |
sago007 |
2011-06-09 20:06 |
209 |
m.run(); |
| 593aeae4 |
sago007 |
2011-06-25 22:42 |
210 |
} |
|
|
1970-01-01 00:00 |
211 |
|