void MainMenu::Paint() { BaseClass::Paint(); DrawMainMenu(); DrawLogo(); }
/*notice the default arguments for main. SDL expects main to look like that, so don't change it*/ int main(int argc, char *argv[]) { debuginputs = 1,bsize = 5; /*defaults for placeholder reasons*/ c1 = DEBUG; c2 = DEBUG; stage = ST_PLATFORM; /**/ pause = 0; pausequeue = 0; fpress = 0; Init_All(); /* SaveCFG(&f2,"res/test.txt");*/ do { UpdateMouse(); if(pausequeue==1){ pausequeue=0; GamePause(); } pausetimer--; InputControl(); if(GameState==VERSUS){ DrawVersus(); UpdateVersus(); }else if(GameState==MAIN_MENU){ DrawMainMenu(); UpdateMenu(); }else if(GameState==C_SELECT){ DrawCharSel(); UpdateCharSel(); }else if(GameState==C_CREATOR){ DrawCharCr(); UpdateCharCr(); } NextFrame(); if(endgame){ done = 1; } ResetBuffer(); }while(!done); exit(0); /*technically this will end the program, but the compiler likes all functions that can return a value TO return a value*/ return 0; }
void Menu::Draw(const sf::Event& ev){ ChangeRoom(ev); if (ev.type == sf::Event::Resized){ RepositionButtons(); ResizeBackgrounds(); } switch (mCurrentRoom){ case MainMenu:{ DrawMainMenu(ev); break; } case Library:{ DrawLibrary(ev); break; } case About:{ DrawAbout(ev); break; } } };
void HandleKey(Key key, int key_status) { boolean anyTextGadgetActiveOrJustFinished = anyTextGadgetActive(); static struct SetupKeyboardInfo ski; static struct SetupShortcutInfo ssi; static struct { Key *key_custom; Key *key_snap; Key key_default; byte action; } key_info[] = { { &ski.left, &ssi.snap_left, DEFAULT_KEY_LEFT, JOY_LEFT }, { &ski.right, &ssi.snap_right, DEFAULT_KEY_RIGHT, JOY_RIGHT }, { &ski.up, &ssi.snap_up, DEFAULT_KEY_UP, JOY_UP }, { &ski.down, &ssi.snap_down, DEFAULT_KEY_DOWN, JOY_DOWN }, { &ski.snap, NULL, DEFAULT_KEY_SNAP, JOY_BUTTON_SNAP }, { &ski.drop, NULL, DEFAULT_KEY_DROP, JOY_BUTTON_DROP } }; int joy = 0; int i; if (game_status == GAME_MODE_PLAYING) { /* only needed for single-step tape recording mode */ static boolean clear_button_2[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE }; static boolean element_dropped[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE }; int pnr; ssi = setup.shortcut; for (pnr = 0; pnr < MAX_PLAYERS; pnr++) { byte key_action = 0; if (setup.input[pnr].use_joystick) continue; ski = setup.input[pnr].key; for (i = 0; i < NUM_PLAYER_ACTIONS; i++) if (key == *key_info[i].key_custom) key_action |= key_info[i].action; for (i = 0; i < NUM_DIRECTIONS; i++) if (key == *key_info[i].key_snap) key_action |= key_info[i].action | JOY_BUTTON_SNAP; if (tape.single_step && clear_button_2[pnr]) { stored_player[pnr].action &= ~KEY_BUTTON_2; clear_button_2[pnr] = FALSE; } if (key_status == KEY_PRESSED) stored_player[pnr].action |= key_action; else stored_player[pnr].action &= ~key_action; if (tape.single_step && tape.recording && tape.pausing) { if (key_status == KEY_PRESSED && (key_action & (KEY_MOTION | KEY_BUTTON_1))) { TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); if (key_action & KEY_MOTION) { if (stored_player[pnr].action & KEY_BUTTON_2) element_dropped[pnr] = TRUE; } } else if (key_status == KEY_RELEASED && (key_action & KEY_BUTTON_2)) { if (!element_dropped[pnr]) { TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); stored_player[pnr].action |= KEY_BUTTON_2; clear_button_2[pnr] = TRUE; } element_dropped[pnr] = FALSE; } } #if 1 else if (tape.recording && tape.pausing) { /* prevent key release events from un-pausing a paused game */ if (key_status == KEY_PRESSED && (key_action & KEY_ACTION)) TapeTogglePause(TAPE_TOGGLE_MANUAL); } #else else if (tape.recording && tape.pausing && (key_action & KEY_ACTION)) TapeTogglePause(TAPE_TOGGLE_MANUAL); #endif } } else { for (i = 0; i < NUM_PLAYER_ACTIONS; i++) if (key == key_info[i].key_default) joy |= key_info[i].action; } if (joy) { if (key_status == KEY_PRESSED) key_joystick_mapping |= joy; else key_joystick_mapping &= ~joy; HandleJoystick(); } if (game_status != GAME_MODE_PLAYING) key_joystick_mapping = 0; if (key_status == KEY_RELEASED) return; if ((key == KSYM_Return || key == KSYM_KP_Enter) && (GetKeyModState() & KMOD_Alt) && video.fullscreen_available) { setup.fullscreen = !setup.fullscreen; ToggleFullscreenIfNeeded(); if (game_status == GAME_MODE_SETUP) RedrawSetupScreenAfterFullscreenToggle(); return; } #if 0 if (game_status == GAME_MODE_PLAYING && local_player->LevelSolved_GameEnd && (key == KSYM_Return || key == setup.shortcut.toggle_pause)) #else if (game_status == GAME_MODE_PLAYING && AllPlayersGone && (key == KSYM_Return || key == setup.shortcut.toggle_pause)) #endif { GameEnd(); return; } if (game_status == GAME_MODE_MAIN && (key == setup.shortcut.toggle_pause || key == KSYM_space)) { StartGameActions(options.network, setup.autorecord, level.random_seed); return; } if (game_status == GAME_MODE_MAIN || game_status == GAME_MODE_PLAYING) { if (key == setup.shortcut.save_game) TapeQuickSave(); else if (key == setup.shortcut.load_game) TapeQuickLoad(); else if (key == setup.shortcut.toggle_pause) TapeTogglePause(TAPE_TOGGLE_MANUAL); HandleTapeButtonKeys(key); HandleSoundButtonKeys(key); } if (game_status == GAME_MODE_PLAYING && !network_playing) { int centered_player_nr_next = -999; if (key == setup.shortcut.focus_player_all) centered_player_nr_next = -1; else for (i = 0; i < MAX_PLAYERS; i++) if (key == setup.shortcut.focus_player[i]) centered_player_nr_next = i; if (centered_player_nr_next != -999) { game.centered_player_nr_next = centered_player_nr_next; game.set_centered_player = TRUE; if (tape.recording) { tape.centered_player_nr_next = game.centered_player_nr_next; tape.set_centered_player = TRUE; } } } HandleKeysSpecial(key); if (HandleGadgetsKeyInput(key)) { if (key != KSYM_BackSpace) /* always allow ESC key to be handled */ key = KSYM_UNDEFINED; } switch (game_status) { case GAME_MODE_PSEUDO_TYPENAME: HandleTypeName(0, key); break; case GAME_MODE_TITLE: case GAME_MODE_MAIN: case GAME_MODE_LEVELS: case GAME_MODE_SETUP: case GAME_MODE_INFO: case GAME_MODE_SCORES: switch (key) { case KSYM_space: case KSYM_Return: if (game_status == GAME_MODE_TITLE) HandleTitleScreen(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_MAIN) HandleMainMenu(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_SETUP) HandleSetupScreen(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_INFO) HandleInfoScreen(0, 0, 0, 0, MB_MENU_CHOICE); else if (game_status == GAME_MODE_SCORES) HandleHallOfFame(0, 0, 0, 0, MB_MENU_CHOICE); break; case KSYM_BackSpace: if (game_status != GAME_MODE_MAIN) FadeSkipNextFadeIn(); if (game_status == GAME_MODE_TITLE) HandleTitleScreen(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_SETUP) HandleSetupScreen(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_INFO) HandleInfoScreen(0, 0, 0, 0, MB_MENU_LEAVE); else if (game_status == GAME_MODE_SCORES) HandleHallOfFame(0, 0, 0, 0, MB_MENU_LEAVE); break; case KSYM_Page_Up: if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_SETUP) HandleSetupScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_INFO) HandleInfoScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_SCORES) HandleHallOfFame(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK); break; case KSYM_Page_Down: if (game_status == GAME_MODE_LEVELS) HandleChooseLevel(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_SETUP) HandleSetupScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_INFO) HandleInfoScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); else if (game_status == GAME_MODE_SCORES) HandleHallOfFame(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK); break; #ifdef DEBUG case KSYM_0: GameFrameDelay = (GameFrameDelay == 500 ? GAME_FRAME_DELAY : 500); break; case KSYM_b: setup.sp_show_border_elements = !setup.sp_show_border_elements; printf("Supaplex border elements %s\n", setup.sp_show_border_elements ? "enabled" : "disabled"); break; #endif default: break; } break; case GAME_MODE_EDITOR: if (!anyTextGadgetActiveOrJustFinished || key == KSYM_BackSpace) HandleLevelEditorKeyInput(key); break; case GAME_MODE_PLAYING: { switch (key) { case KSYM_BackSpace: RequestQuitGame(setup.ask_on_escape); break; #ifdef DEBUG case KSYM_0: #if 0 case KSYM_1: case KSYM_2: case KSYM_3: case KSYM_4: case KSYM_5: case KSYM_6: case KSYM_7: case KSYM_8: case KSYM_9: #endif if (key == KSYM_0) { if (GameFrameDelay == 500) GameFrameDelay = GAME_FRAME_DELAY; else GameFrameDelay = 500; } else GameFrameDelay = (key - KSYM_0) * 10; printf("Game speed == %d%% (%d ms delay between two frames)\n", GAME_FRAME_DELAY * 100 / GameFrameDelay, GameFrameDelay); break; case KSYM_d: if (options.debug) { options.debug = FALSE; printf("debug mode disabled\n"); } else { options.debug = TRUE; printf("debug mode enabled\n"); } break; case KSYM_S: if (!global.fps_slowdown) { global.fps_slowdown = TRUE; global.fps_slowdown_factor = 2; printf("fps slowdown enabled -- display only every 2nd frame\n"); } else if (global.fps_slowdown_factor == 2) { global.fps_slowdown_factor = 4; printf("fps slowdown enabled -- display only every 4th frame\n"); } else { global.fps_slowdown = FALSE; global.fps_slowdown_factor = 1; printf("fps slowdown disabled\n"); } break; case KSYM_f: ScrollStepSize = TILEX/8; printf("ScrollStepSize == %d (1/8)\n", ScrollStepSize); break; case KSYM_g: ScrollStepSize = TILEX/4; printf("ScrollStepSize == %d (1/4)\n", ScrollStepSize); break; case KSYM_h: ScrollStepSize = TILEX/2; printf("ScrollStepSize == %d (1/2)\n", ScrollStepSize); break; case KSYM_l: ScrollStepSize = TILEX; printf("ScrollStepSize == %d (1/1)\n", ScrollStepSize); break; case KSYM_v: printf("::: currently using game engine version %d\n", game.engine_version); break; #endif default: break; } break; } default: if (key == KSYM_BackSpace) { game_status = GAME_MODE_MAIN; DrawMainMenu(); return; } } }
static void HandleKeysSpecial(Key key) { static char cheat_input[2 * MAX_CHEAT_INPUT_LEN + 1] = ""; char letter = getCharFromKey(key); int cheat_input_len = strlen(cheat_input); int i; if (letter == 0) return; if (cheat_input_len >= 2 * MAX_CHEAT_INPUT_LEN) { for (i = 0; i < MAX_CHEAT_INPUT_LEN + 1; i++) cheat_input[i] = cheat_input[MAX_CHEAT_INPUT_LEN + i]; cheat_input_len = MAX_CHEAT_INPUT_LEN; } cheat_input[cheat_input_len++] = letter; cheat_input[cheat_input_len] = '\0'; #if DEBUG_EVENTS printf("::: '%s' [%d]\n", cheat_input, cheat_input_len); #endif if (game_status == GAME_MODE_MAIN) { if (is_string_suffix(cheat_input, ":insert-solution-tape") || is_string_suffix(cheat_input, ":ist")) { InsertSolutionTape(); } else if (is_string_suffix(cheat_input, ":reload-graphics") || is_string_suffix(cheat_input, ":rg")) { ReloadCustomArtwork(1 << ARTWORK_TYPE_GRAPHICS); DrawMainMenu(); } else if (is_string_suffix(cheat_input, ":reload-sounds") || is_string_suffix(cheat_input, ":rs")) { ReloadCustomArtwork(1 << ARTWORK_TYPE_SOUNDS); DrawMainMenu(); } else if (is_string_suffix(cheat_input, ":reload-music") || is_string_suffix(cheat_input, ":rm")) { ReloadCustomArtwork(1 << ARTWORK_TYPE_MUSIC); DrawMainMenu(); } else if (is_string_suffix(cheat_input, ":reload-artwork") || is_string_suffix(cheat_input, ":ra")) { ReloadCustomArtwork(1 << ARTWORK_TYPE_GRAPHICS | 1 << ARTWORK_TYPE_SOUNDS | 1 << ARTWORK_TYPE_MUSIC); DrawMainMenu(); } else if (is_string_suffix(cheat_input, ":dump-level") || is_string_suffix(cheat_input, ":dl")) { DumpLevel(&level); } else if (is_string_suffix(cheat_input, ":dump-tape") || is_string_suffix(cheat_input, ":dt")) { DumpTape(&tape); } else if (is_string_suffix(cheat_input, ":save-native-level") || is_string_suffix(cheat_input, ":snl")) { SaveNativeLevel(&level); } } else if (game_status == GAME_MODE_PLAYING) { #ifdef DEBUG if (is_string_suffix(cheat_input, ".q")) DEBUG_SetMaximumDynamite(); #endif } else if (game_status == GAME_MODE_EDITOR) { if (is_string_suffix(cheat_input, ":dump-brush") || is_string_suffix(cheat_input, ":DB")) { DumpBrush(); } else if (is_string_suffix(cheat_input, ":DDB")) { DumpBrush_Small(); } } }