8 http://www.newbreedsoftware.com/supertux/
10 December 20, 2003 - December 30, 2003
15 #include <sys/types.h>
25 #include "leveleditor.h"
38 /* ---- Menu Options - Item Sound On/off ----*/
39 void menu_option_sound()
41 if (audio_device == YES)
47 drawcenteredtext("Sound ON", 224, letters_red, NO_UPDATE, 2);
51 drawcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE, 2);
54 if(menuaction == MN_HIT)
55 { /* Disable/Enable sound */
70 drawcenteredtext("Sound ON", 224, letters_blue, NO_UPDATE, 2);
72 drawcenteredtext("Sound OFF", 224, letters_blue, NO_UPDATE, 2);
76 { /* if audio_device != YES */
77 /* let the user move over the deactivated option */
80 drawcenteredtext("Sound OFF", 224, letters_red, NO_UPDATE, 2);
84 drawcenteredtext("Sound OFF", 224, letters_black, NO_UPDATE, 2);
90 /* ---- Menu Options - Item Music On/off ----*/
91 void menu_option_music()
93 if (audio_device == YES)
99 drawcenteredtext("Music ON", 256, letters_red, NO_UPDATE, 2);
103 drawcenteredtext("Music OFF", 256, letters_red, NO_UPDATE, 2);
105 if(menuaction == MN_HIT)
106 { /* Disable/Enable music */
108 { /* In the menu no music is played, so we have to check only use_music */
116 if (!playing_music())
118 switch (current_music)
121 play_music(level_song, 2);
124 play_music(herring_song, 2);
126 case HURRYUP_MUSIC: // keep the compiler happy
127 case NO_MUSIC: // keep the compiler happy for the moment :-)
135 } /* if menuitem != 2 : print normal blue font */
140 drawcenteredtext("Music ON", 256, letters_blue, NO_UPDATE, 2);
144 drawcenteredtext("Music OFF", 256, letters_blue, NO_UPDATE, 2);
149 { /* if audio_device != YES */
150 /* let the user move over the deactivated option */
153 drawcenteredtext("Music OFF", 256, letters_red, NO_UPDATE, 2);
157 drawcenteredtext("Music OFF", 256, letters_black, NO_UPDATE, 2);
164 /* Does the menu item exist? If not, we reset to the most down item */
165 if(menuitem > MENU_MAIN_ITEM_MAX)
167 else if(menuitem < 0)
168 menuitem = MENU_MAIN_ITEM_MAX;
170 /*The menu looks different, when the game is started */
173 drawcenteredtext("Start Game", 192, letters_red, NO_UPDATE, 2);
174 if(menuaction == MN_HIT) /* we are ready to start the game, if this item got hit */
181 drawcenteredtext("Start Game", 192, letters_blue, NO_UPDATE, 2);
185 drawcenteredtext("Options", 224, letters_red, NO_UPDATE, 2);
186 if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
188 menumenu = MENU_OPTIONS;
193 drawcenteredtext("Options", 224, letters_blue, NO_UPDATE, 2);
197 drawcenteredtext("Level editor", 256, letters_red, NO_UPDATE, 2);
198 if(menuaction == MN_HIT) /* Set variables, so that the level editor is executed */
200 level_editor_started = YES;
205 drawcenteredtext("Level editor", 256, letters_blue, NO_UPDATE, 2);
209 drawcenteredtext("Quit", 288, letters_red, NO_UPDATE, 2);
210 if(menuaction == MN_HIT) /* Quit a running game or the application */
217 drawcenteredtext("Quit", 288, letters_blue, NO_UPDATE, 2);
225 /* Does the menu item exist? If not, we reset to the most down item */
226 if(menuitem > MENU_GAME_ITEM_MAX)
228 else if(menuitem < 0)
229 menuitem = MENU_GAME_ITEM_MAX;
231 /*The menu looks different, when the game is started */
234 drawcenteredtext("Return To Game", 192, letters_red, NO_UPDATE, 2);
235 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
239 drawcenteredtext("Return To Game", 192, letters_blue, NO_UPDATE, 2);
243 drawcenteredtext("Save Game", 224, letters_red, NO_UPDATE, 2);
244 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
251 drawcenteredtext("Save Game", 224, letters_blue, NO_UPDATE, 2);
255 drawcenteredtext("Load Game", 256, letters_red, NO_UPDATE, 2);
256 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
258 char *x = NULL; /* In C, you can do this... */
265 drawcenteredtext("Load Game", 256, letters_blue, NO_UPDATE, 2);
269 drawcenteredtext("Options", 288, letters_red, NO_UPDATE, 2);
270 if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
272 menumenu = MENU_OPTIONS;
277 drawcenteredtext("Options", 288, letters_blue, NO_UPDATE, 2);
281 drawcenteredtext("Quit Game", 320, letters_red, NO_UPDATE, 2);
282 if(menuaction == MN_HIT) /* Quit a running game */
287 drawcenteredtext("Quit Game", 320, letters_blue, NO_UPDATE, 2);
293 int menu_options(void)
295 if(menuitem > MENU_OPTIONS_ITEM_MAX )
297 else if(menuitem < 0)
298 menuitem = MENU_OPTIONS_ITEM_MAX;
303 drawcenteredtext("Fullscreen ON", 192, letters_red, NO_UPDATE, 2);
305 drawcenteredtext("Fullscreen OFF", 192, letters_red, NO_UPDATE, 2);
306 if(menuaction == MN_HIT) /* Disable/Enable fullscreen */
319 drawcenteredtext("Fullscreen ON", 192, letters_blue, NO_UPDATE, 2);
321 drawcenteredtext("Fullscreen OFF", 192, letters_blue, NO_UPDATE, 2);
324 /* handle menu sound on/off option */
327 /* handle menu music on/off option */
332 drawcenteredtext("Back", 288, letters_red, NO_UPDATE, 2);
333 if(menuaction == MN_HIT) /* Go back to main menu. */
336 menumenu = MENU_GAME;
338 menumenu = MENU_MAIN;
343 drawcenteredtext("Back", 288, letters_blue, NO_UPDATE, 2);
348 /* Menu LevelEditor */
349 int menu_leveleditor(void)
351 if(menuitem > MENU_LEVELEDITOR_ITEM_MAX )
353 else if(menuitem < 0)
354 menuitem = MENU_LEVELEDITOR_ITEM_MAX;
358 drawcenteredtext("Return To Level Editor", 192, letters_red, NO_UPDATE, 2);
359 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
363 drawcenteredtext("Return To Level Editor", 192, letters_blue, NO_UPDATE, 2);
367 drawcenteredtext("New Level", 224, letters_red, NO_UPDATE, 2);
368 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
375 drawcenteredtext("New Level", 224, letters_blue, NO_UPDATE, 2);
378 drawcenteredtext("Load Level", 256, letters_red, NO_UPDATE, 2);
379 if(menuaction == MN_HIT) /* Create a new Level and load it into the level-editor. */
386 drawcenteredtext("Load Level", 256, letters_blue, NO_UPDATE, 2);
389 drawcenteredtext("Save Level", 288, letters_red, NO_UPDATE, 2);
390 if(menuaction == MN_HIT) /* Save the current level in the level-editor. */
397 drawcenteredtext("Save Level", 288, letters_blue, NO_UPDATE, 2);
401 drawcenteredtext("Quit Level Editor", 320, letters_red, NO_UPDATE, 2);
402 if(menuaction == MN_HIT) /* Quit the level-editor. (to the main-menu) */
408 drawcenteredtext("Quit Level Editor", 320, letters_blue, NO_UPDATE, 2);
414 /* Draw the menu and execute the (menu)events */
422 if(menuaction == MN_UP)
424 /* Go one menu-item up */
427 else if(menuaction == MN_DOWN)
428 ++menuitem; /* Go one menu-item down */
431 if(menumenu == MENU_MAIN)
435 else if(menumenu == MENU_GAME)
439 else if(menumenu == MENU_OPTIONS)
441 quit = menu_options();
443 else if(menumenu == MENU_LEVELEDITOR)
445 quit = menu_leveleditor();
453 /* Check for menu event */
454 void menu_event(SDLKey key)
465 else if (key == SDLK_DOWN)
469 menuaction = MN_DOWN;
472 else if (key == SDLK_SPACE || key == SDLK_RETURN)
480 /* FIXME: NO JOYSTICK SUPPORT */
482 else if (event.type == SDL_JOYBUTTONDOWN)
484 Joystick button: Continue: