From be789d9a341f5d7369f4aa2f74e2f85f3e004a4c Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sun, 6 Mar 2016 23:39:46 +0100 Subject: [PATCH] added dedicated setter function for setting game status --- src/editor.c | 6 ++--- src/events.c | 3 ++- src/game.c | 16 ++++++------ src/init.c | 8 +++--- src/network.c | 3 ++- src/screens.c | 69 ++++++++++++++++++++++++++++----------------------- src/tools.c | 17 ++++++++----- src/tools.h | 2 ++ 8 files changed, 70 insertions(+), 54 deletions(-) diff --git a/src/editor.c b/src/editor.c index 7ed0f977..4705b53c 100644 --- a/src/editor.c +++ b/src/editor.c @@ -6406,7 +6406,7 @@ void CreateLevelEditorGadgets() int old_game_status = game_status; /* setting 'game_status' is needed to get the right fonts for the editor */ - game_status = GAME_MODE_EDITOR; + SetGameStatus(GAME_MODE_EDITOR); /* these values are not constant, but can change at runtime */ ed_fieldx = MAX_ED_FIELDX - 1; @@ -6440,7 +6440,7 @@ void CreateLevelEditorGadgets() CreateTextbuttonGadgets(); CreateDrawingAreas(); - game_status = old_game_status; + SetGameStatus(old_game_status); } void FreeLevelEditorGadgets() @@ -12272,7 +12272,7 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed, if (quick_quit) FadeSkipNextFadeIn(); - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } diff --git a/src/events.c b/src/events.c index 952f8995..1afc85d6 100644 --- a/src/events.c +++ b/src/events.c @@ -1567,7 +1567,8 @@ void HandleKey(Key key, int key_status) default: if (key == KSYM_Escape) { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); + DrawMainMenu(); return; diff --git a/src/game.c b/src/game.c index cc6bcdfc..2aa3b345 100644 --- a/src/game.c +++ b/src/game.c @@ -2446,7 +2446,7 @@ void DisplayGameControlValues() /* redraw game control buttons */ RedrawGameButtons(); - game_status = GAME_MODE_PSEUDO_PANEL; + SetGameStatus(GAME_MODE_PSEUDO_PANEL); for (i = 0; i < NUM_GAME_PANEL_CONTROLS; i++) { @@ -2574,7 +2574,7 @@ void DisplayGameControlValues() redraw_mask |= REDRAW_DOOR_1; } - game_status = GAME_MODE_PLAYING; + SetGameStatus(GAME_MODE_PLAYING); } void UpdateAndDisplayGameControlValues() @@ -3097,7 +3097,7 @@ void InitGame() // required here to update video display before fading (FIX THIS) DrawMaskedBorder(REDRAW_DOOR_2); - game_status = GAME_MODE_PLAYING; + SetGameStatus(GAME_MODE_PLAYING); if (!game.restart_level) CloseDoor(DOOR_CLOSE_1); @@ -4422,7 +4422,7 @@ void GameEnd() if (level_editor_test_game) { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); @@ -4431,7 +4431,7 @@ void GameEnd() if (!local_player->LevelSolved_SaveScore) { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); @@ -4450,7 +4450,7 @@ void GameEnd() if ((hi_pos = NewHiScore()) >= 0) { - game_status = GAME_MODE_SCORES; + SetGameStatus(GAME_MODE_SCORES); DrawHallOfFame(hi_pos); @@ -4462,7 +4462,7 @@ void GameEnd() } else { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); if (raise_level) { @@ -14470,7 +14470,7 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message) if (quick_quit) FadeSkipNextFadeIn(); - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } diff --git a/src/init.c b/src/init.c index e7cbd04a..d7bf92f5 100644 --- a/src/init.c +++ b/src/init.c @@ -5699,7 +5699,7 @@ void ReloadCustomArtwork(int force_reload) print_timestamp_init("ReloadCustomArtwork"); - game_status = GAME_MODE_LOADING; + SetGameStatus(GAME_MODE_LOADING); FadeOut(REDRAW_ALL); @@ -5734,7 +5734,7 @@ void ReloadCustomArtwork(int force_reload) print_timestamp_time("InitMusic"); } - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ init_last = init; /* switch to new busy animation */ @@ -5829,7 +5829,7 @@ void OpenAll() { print_timestamp_init("OpenAll"); - game_status = GAME_MODE_LOADING; + SetGameStatus(GAME_MODE_LOADING); InitCounter(); @@ -5929,7 +5929,7 @@ void OpenAll() return; } - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); FadeSetEnterScreen(); if (!(fading.fade_mode & FADE_TYPE_TRANSFORM)) diff --git a/src/network.c b/src/network.c index e62df4ce..29462401 100644 --- a/src/network.c +++ b/src/network.c @@ -464,7 +464,8 @@ static void Handle_OP_STOP_PLAYING() Request("Network game stopped!", REQ_CONFIRM); } - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); + DrawMainMenu(); } diff --git a/src/screens.c b/src/screens.c index 97feee66..551b2a6b 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1237,7 +1237,7 @@ static void drawChooseTreeCursor(int ypos, boolean active) drawCursorExt(0, ypos, active, -1); - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ } void DrawHeadline() @@ -1301,7 +1301,7 @@ void DrawTitleScreenMessage(int nr, boolean initial) return; /* force TITLE font on title message screen */ - game_status = getTitleMessageGameMode(initial); + SetGameStatus(getTitleMessageGameMode(initial)); /* if chars *and* width set to "-1", automatically determine width */ if (tmi->chars == -1 && tmi->width == -1) @@ -1340,7 +1340,7 @@ void DrawTitleScreenMessage(int nr, boolean initial) filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1, tmi->autowrap, tmi->centered, tmi->parse_comments); - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ } void DrawTitleScreen() @@ -1394,7 +1394,8 @@ void DrawMainMenu() /* needed if last screen was the playing screen, invoked from level editor */ if (level_editor_test_game) { - game_status = GAME_MODE_EDITOR; + SetGameStatus(GAME_MODE_EDITOR); + DrawLevelEd(); return; @@ -1438,7 +1439,8 @@ void DrawMainMenu() if (CheckTitleScreen(levelset_has_changed)) { game_status_last_screen = GAME_MODE_MAIN; - game_status = GAME_MODE_TITLE; + + SetGameStatus(GAME_MODE_TITLE); DrawTitleScreen(); @@ -1571,7 +1573,7 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) if (num_title_screens == 0) { /* switch game mode from title screen mode back to info screen mode */ - game_status = GAME_MODE_INFO; + SetGameStatus(GAME_MODE_INFO); DrawInfoScreen_NotAvailable("Title screen information:", "No title screen for this level set."); @@ -1626,7 +1628,8 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) { if (game_status_last_screen == GAME_MODE_INFO && num_title_screens == 0) { - game_status = GAME_MODE_INFO; + SetGameStatus(GAME_MODE_INFO); + info_mode = INFO_MODE_MAIN; DrawInfoScreen(); @@ -1688,14 +1691,15 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) if (game_status_last_screen == GAME_MODE_INFO) { - game_status = GAME_MODE_INFO; + SetGameStatus(GAME_MODE_INFO); + info_mode = INFO_MODE_MAIN; DrawInfoScreen(); } else /* default: return to main menu */ { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -1830,7 +1834,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_LEVELNR; + SetGameStatus(GAME_MODE_LEVELNR); ChangeViewportPropertiesIfNeeded(); @@ -1856,7 +1860,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) if (pos == MAIN_CONTROL_NAME) { - game_status = GAME_MODE_PSEUDO_TYPENAME; + SetGameStatus(GAME_MODE_PSEUDO_TYPENAME); HandleTypeName(strlen(setup.player_name), 0); } @@ -1868,7 +1872,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_LEVELS; + SetGameStatus(GAME_MODE_LEVELS); SaveLevelSetup_LastSeries(); SaveLevelSetup_SeriesInfo(); @@ -1887,7 +1891,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_SCORES; + SetGameStatus(GAME_MODE_SCORES); DrawHallOfFame(-1); } @@ -1901,7 +1905,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_EDITOR; + SetGameStatus(GAME_MODE_EDITOR); FadeSetEnterScreen(); @@ -1913,7 +1917,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_INFO; + SetGameStatus(GAME_MODE_INFO); + info_mode = INFO_MODE_MAIN; ChangeViewportPropertiesIfNeeded(); @@ -1932,7 +1937,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) CloseDoor(DOOR_CLOSE_2); - game_status = GAME_MODE_SETUP; + SetGameStatus(GAME_MODE_SETUP); + setup_mode = SETUP_MODE_MAIN; ChangeViewportPropertiesIfNeeded(); @@ -1945,7 +1951,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) SaveLevelSetup_SeriesInfo(); if (Request("Do you really want to quit?", REQ_ASK | REQ_STAY_CLOSED)) - game_status = GAME_MODE_QUIT; + SetGameStatus(GAME_MODE_QUIT); } } } @@ -2013,7 +2019,7 @@ static void execInfoLevelSet() static void execExitInfo() { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -2669,7 +2675,8 @@ void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos) void DrawInfoScreen_TitleScreen() { game_status_last_screen = GAME_MODE_INFO; - game_status = GAME_MODE_TITLE; + + SetGameStatus(GAME_MODE_TITLE); DrawTitleScreen(); } @@ -3602,7 +3609,7 @@ void HandleTypeName(int newxpos, Key key) is_active = FALSE; - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); } else if (key == KSYM_Escape) { @@ -3610,7 +3617,7 @@ void HandleTypeName(int newxpos, Key key) is_active = FALSE; - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); } if (is_active) @@ -3648,7 +3655,7 @@ static void DrawChooseTree(TreeInfo **ti_ptr) if (strEqual((*ti_ptr)->subdir, STRING_TOP_DIRECTORY)) { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); @@ -3727,7 +3734,7 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, initCursor(i, IMG_MENU_BUTTON); } - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ redraw_mask |= REDRAW_FIELD; } @@ -3784,7 +3791,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, else num_page_entries = NUM_MENU_ENTRIES_ON_SCREEN; - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ if (button == MB_MENU_INITIALIZE) { @@ -3859,7 +3866,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, HandleMainMenu_SelectLevel(0, 0, new_level_nr); } - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -3874,7 +3881,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, x = (mx - mSX) / 32; y = (my - mSY) / 32 - MENU_SCREEN_START_YPOS; - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ } else if (dx || dy) /* keyboard or scrollbar/scrollbutton input */ { @@ -4057,7 +4064,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, HandleMainMenu_SelectLevel(0, 0, new_level_nr); } - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -4273,7 +4280,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) FadeSound(SND_BACKGROUND_SCORES); - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -4283,7 +4290,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) FadeSound(SND_BACKGROUND_SCORES); - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -5273,7 +5280,7 @@ static void execSetupShortcuts5() static void execExitSetup() { - game_status = GAME_MODE_MAIN; + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } @@ -6924,7 +6931,7 @@ void CreateScreenGadgets() CreateScreenScrollbuttons(); CreateScreenScrollbars(); - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ } void FreeScreenGadgets() diff --git a/src/tools.c b/src/tools.c index 17a5cf5a..2fa69f11 100644 --- a/src/tools.c +++ b/src/tools.c @@ -2382,13 +2382,13 @@ void DrawEnvelopeRequest(char *text) tile_size, tile_size); /* force DOOR font inside door area */ - game_status = GAME_MODE_PSEUDO_DOOR; + SetGameStatus(GAME_MODE_PSEUDO_DOOR); DrawTextBuffer(sx + sx_offset, sy + sy_offset, text_final, font_nr, line_length, -1, max_lines, line_spacing, mask_mode, request.autowrap, request.centered, FALSE); - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ for (i = 0; i < NUM_TOOL_BUTTONS; i++) RedrawGadget(tool_gadget[i]); @@ -2793,7 +2793,7 @@ static void DrawPreviewLevelExt(boolean restart) DrawTextSAligned(pos->x, pos->y, label_text, font_nr, pos->align); } - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ return; } @@ -2895,7 +2895,7 @@ static void DrawPreviewLevelExt(boolean restart) DrawPreviewLevelLabelExt(label_state); } - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ } void DrawPreviewLevelInitial() @@ -3680,7 +3680,7 @@ static boolean RequestDoor(char *text, unsigned int req_state) DrawBackground(DX, DY, DXSIZE, DYSIZE); /* force DOOR font inside door area */ - game_status = GAME_MODE_PSEUDO_DOOR; + SetGameStatus(GAME_MODE_PSEUDO_DOOR); /* write text for request */ for (text_ptr = text, ty = 0; ty < MAX_REQUEST_LINES; ty++) @@ -3720,7 +3720,7 @@ static boolean RequestDoor(char *text, unsigned int req_state) // text_ptr += tl + (tc == ' ' || tc == '?' || tc == '!' ? 1 : 0); } - game_status = last_game_status; /* restore current game status */ + SetGameStatus(last_game_status); /* restore current game status */ if (req_state & REQ_ASK) { @@ -8178,6 +8178,11 @@ void JoinRectangles(int *x, int *y, int *width, int *height, *height = MAX(*height, height2); } +void SetGameStatus(int game_status_new) +{ + game_status = game_status_new; +} + void ChangeViewportPropertiesIfNeeded() { int gfx_game_mode = game_status; diff --git a/src/tools.h b/src/tools.h index 439517c2..6aad5b75 100644 --- a/src/tools.h +++ b/src/tools.h @@ -249,6 +249,8 @@ void PlayMenuMusic(); void PlaySoundActivating(); void PlaySoundSelecting(); +void SetGameStatus(int); + void ToggleFullscreenOrChangeWindowScalingIfNeeded(); void ChangeViewportPropertiesIfNeeded(); -- 2.34.1