8 http://www.newbreedsoftware.com/supertux/
10 December 20, 2003 - December 29, 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 */
264 drawcenteredtext("Load Game", 256, letters_blue, NO_UPDATE, 2);
268 drawcenteredtext("Options", 288, letters_red, NO_UPDATE, 2);
269 if(menuaction == MN_HIT) /* Switch to the 'Options' menu */
271 menumenu = MENU_OPTIONS;
276 drawcenteredtext("Options", 288, letters_blue, NO_UPDATE, 2);
280 drawcenteredtext("Quit Game", 320, letters_red, NO_UPDATE, 2);
281 if(menuaction == MN_HIT) /* Quit a running game */
286 drawcenteredtext("Quit Game", 320, letters_blue, NO_UPDATE, 2);
292 int menu_options(void)
294 if(menuitem > MENU_OPTIONS_ITEM_MAX )
296 else if(menuitem < 0)
297 menuitem = MENU_OPTIONS_ITEM_MAX;
302 drawcenteredtext("Fullscreen ON", 192, letters_red, NO_UPDATE, 2);
304 drawcenteredtext("Fullscreen OFF", 192, letters_red, NO_UPDATE, 2);
305 if(menuaction == MN_HIT) /* Disable/Enable fullscreen */
318 drawcenteredtext("Fullscreen ON", 192, letters_blue, NO_UPDATE, 2);
320 drawcenteredtext("Fullscreen OFF", 192, letters_blue, NO_UPDATE, 2);
323 /* handle menu sound on/off option */
326 /* handle menu music on/off option */
331 drawcenteredtext("Back", 288, letters_red, NO_UPDATE, 2);
332 if(menuaction == MN_HIT) /* Go back to main menu. */
335 menumenu = MENU_GAME;
337 menumenu = MENU_MAIN;
342 drawcenteredtext("Back", 288, letters_blue, NO_UPDATE, 2);
347 /* Menu LevelEditor */
348 int menu_leveleditor(void)
350 if(menuitem > MENU_LEVELEDITOR_ITEM_MAX )
352 else if(menuitem < 0)
353 menuitem = MENU_LEVELEDITOR_ITEM_MAX;
357 drawcenteredtext("Return To Level Editor", 192, letters_red, NO_UPDATE, 2);
358 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
362 drawcenteredtext("Return To Level Editor", 192, letters_blue, NO_UPDATE, 2);
366 drawcenteredtext("New Level", 224, letters_red, NO_UPDATE, 2);
367 if(menuaction == MN_HIT) /* Don't show the menu anymore, if this item got hit */
374 drawcenteredtext("New Level", 224, letters_blue, NO_UPDATE, 2);
377 drawcenteredtext("Load Level", 256, letters_red, NO_UPDATE, 2);
378 if(menuaction == MN_HIT) /* Create a new Level and load it into the level-editor. */
385 drawcenteredtext("Load Level", 256, letters_blue, NO_UPDATE, 2);
388 drawcenteredtext("Save Level", 288, letters_red, NO_UPDATE, 2);
389 if(menuaction == MN_HIT) /* Save the current level in the level-editor. */
396 drawcenteredtext("Save Level", 288, letters_blue, NO_UPDATE, 2);
400 drawcenteredtext("Quit Level Editor", 320, letters_red, NO_UPDATE, 2);
401 if(menuaction == MN_HIT) /* Quit the level-editor. (to the main-menu) */
407 drawcenteredtext("Quit Level Editor", 320, letters_blue, NO_UPDATE, 2);
413 /* Draw the menu and execute the (menu)events */
421 if(menuaction == MN_UP)
423 /* Go one menu-item up */
426 else if(menuaction == MN_DOWN)
427 ++menuitem; /* Go one menu-item down */
430 if(menumenu == MENU_MAIN)
434 else if(menumenu == MENU_GAME)
438 else if(menumenu == MENU_OPTIONS)
440 quit = menu_options();
442 else if(menumenu == MENU_LEVELEDITOR)
444 quit = menu_leveleditor();
452 /* Check for menu event */
453 void menu_event(SDLKey key)
464 else if (key == SDLK_DOWN)
468 menuaction = MN_DOWN;
471 else if (key == SDLK_SPACE || key == SDLK_RETURN)
479 /* FIXME: NO JOYSTICK SUPPORT */
481 else if (event.type == SDL_JOYBUTTONDOWN)
483 Joystick button: Continue: