From 347fdd0ffc52a93cfcd823488c28fe6bbc587342 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 11 Aug 2019 21:37:11 +1000 Subject: [PATCH] No more compile errors but still completely broken --- src/Game.c | 5 +---- src/InputHandler.c | 5 ++--- src/Menus.c | 9 ++++----- src/Menus.h | 2 +- src/Screens.c | 11 +++++------ 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/Game.c b/src/Game.c index 284dc3df1..56561f7e8 100644 --- a/src/Game.c +++ b/src/Game.c @@ -636,10 +636,7 @@ static void Game_RenderFrame(double delta) { Game_Vertices = 0; Camera.Active->UpdateMouse(delta); - if (!Window_Focused && !Gui_GetInputGrab()) { - Gui_FreeActive(); - Gui_SetActive(PauseScreen_MakeInstance()); - } + if (!Window_Focused && !Gui_GetInputGrab()) PauseScreen_Show(); if (KeyBind_IsPressed(KEYBIND_ZOOM_SCROLL) && !Gui_GetInputGrab()) { InputHandler_SetFOV(Game_ZoomFov); diff --git a/src/InputHandler.c b/src/InputHandler.c index 1ebb48fd5..1e44cb5f9 100644 --- a/src/InputHandler.c +++ b/src/InputHandler.c @@ -481,7 +481,7 @@ static void InputHandler_KeyDown(void* obj, int key, bool was) { Game_ScreenshotRequested = true; return; } else if (Elem_HandlesKeyDown(active, key, was)) { return; - } else if ((key == KEY_ESCAPE || key == KEY_PAUSE) && !active->handlesAllInput) { + } else if ((key == KEY_ESCAPE || key == KEY_PAUSE) && !Gui_GetInputGrab()) { #ifdef CC_BUILD_WEB /* Can't do this in KeyUp, because pressing escape without having */ /* explicitly disabled mouse lock means a KeyUp event isn't sent. */ @@ -490,8 +490,7 @@ static void InputHandler_KeyDown(void* obj, int key, bool was) { /* closes the pause screen. Hence why the next KeyUp must be supressed. */ suppressEscape = true; #endif - Gui_FreeActive(); - Gui_SetActive(PauseScreen_MakeInstance()); return; + PauseScreen_Show(); return; } /* These should not be triggered multiple times when holding down */ diff --git a/src/Menus.c b/src/Menus.c index d08c92f0f..4724d2a92 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -324,7 +324,7 @@ static PackedCol Menu_HexCol(const String* str) { PackedCol v; PackedCol_TryPars #define Menu_ReplaceActive(screen) Gui_FreeActive(); Gui_SetActive(screen); static void Menu_SwitchOptions(void* a, void* b) { Menu_ReplaceActive(OptionsGroupScreen_MakeInstance()); } -static void Menu_SwitchPause(void* a, void* b) { Menu_ReplaceActive(PauseScreen_MakeInstance()); } +static void Menu_SwitchPause(void* a, void* b) { PauseScreen_Show(); } static void Menu_SwitchClassicOptions(void* a, void* b) { Menu_ReplaceActive(ClassicOptionsScreen_MakeInstance()); } static void Menu_SwitchKeysClassic(void* a, void* b) { Menu_ReplaceActive(ClassicKeyBindingsScreen_MakeInstance()); } @@ -671,7 +671,7 @@ static struct ScreenVTABLE PauseScreen_VTABLE = { Menu_MouseDown, Menu_MouseUp, Menu_MouseMove, MenuScreen_MouseScroll, Menu_OnResize, Menu_ContextLost, PauseScreen_ContextRecreated, }; -struct Screen* PauseScreen_MakeInstance(void) { +void PauseScreen_Show(void) { static struct Widget* widgets[8]; struct PauseScreen* s = &PauseScreen_Instance; @@ -681,7 +681,7 @@ struct Screen* PauseScreen_MakeInstance(void) { s->widgetsCount = Array_Elems(widgets); s->VTABLE = &PauseScreen_VTABLE; - return (struct Screen*)s; + Gui_Replace((struct Screen*)s, GUI_PRIORITY_MENU); } @@ -1267,8 +1267,7 @@ static void SaveLevelScreen_SaveMap(struct SaveLevelScreen* s, const String* pat if (res) { Logger_Warn2(res, "closing", path); return; } Chat_Add1("&eSaved map to: %s", path); - Gui_FreeActive(); - Gui_SetActive(PauseScreen_MakeInstance()); + PauseScreen_Show(); } static void SaveLevelScreen_Save(void* screen, void* widget, const char* ext) { diff --git a/src/Menus.h b/src/Menus.h index 9ef0b19ea..f69f37a40 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -7,7 +7,7 @@ */ struct Screen; -struct Screen* PauseScreen_MakeInstance(void); +void PauseScreen_Show(void); struct Screen* OptionsGroupScreen_MakeInstance(void); struct Screen* ClassicOptionsScreen_MakeInstance(void); diff --git a/src/Screens.c b/src/Screens.c index 3a8292c91..f3f67a705 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -564,7 +564,7 @@ static void LoadingScreen_Free(void* screen) { Event_UnregisterFloat(&WorldEvents.Loading, s, LoadingScreen_MapLoading); } -CC_NOINLINE static void LoadingScreen_Reset(const String* title, const String* message) { +CC_NOINLINE static void LoadingScreen_ShowCommon(const String* title, const String* message) { struct LoadingScreen* s = &LoadingScreen_Instance; s->lastState = NULL; s->progress = 0.0f; @@ -576,6 +576,7 @@ CC_NOINLINE static void LoadingScreen_Reset(const String* title, const String* m s->grabsInput = true; s->blocksWorld = true; + Gui_Replace((struct Screen*)s, GUI_PRIORITY_LOADING); } static struct ScreenVTABLE LoadingScreen_VTABLE = { @@ -585,9 +586,8 @@ static struct ScreenVTABLE LoadingScreen_VTABLE = { LoadingScreen_OnResize, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated, }; void LoadingScreen_Show(const String* title, const String* message) { - LoadingScreen_Reset(title, message); LoadingScreen_Instance.VTABLE = &LoadingScreen_VTABLE; - Gui_Replace((struct Screen*)&LoadingScreen_Instance, GUI_PRIORITY_LOADING); + LoadingScreen_ShowCommon(title, message); } struct Screen* LoadingScreen_UNSAFE_RawPointer = (struct Screen*)&LoadingScreen_Instance; @@ -659,9 +659,8 @@ void GeneratingScreen_Show(void) { static const String title = String_FromConst("Generating level"); static const String message = String_FromConst("Generating.."); - LoadingScreen_Reset(&title, &message); LoadingScreen_Instance.VTABLE = &GeneratingScreen_VTABLE; - Gui_Replace((struct Screen*)&LoadingScreen_Instance, GUI_PRIORITY_LOADING); + LoadingScreen_ShowCommon(&title, &message); } @@ -1218,7 +1217,7 @@ static void HUDScreen_Render(void* screen, double delta) { HUDScreen_DrawChat(s, delta); if (s->showingList && Gui_GetActiveScreen() == (struct Screen*)s) { - s->playerList.active = s->handlesAllInput; + s->playerList.active = s->grabsInput; Elem_Render(&s->playerList, delta); /* NOTE: Should usually be caught by KeyUp, but just in case. */ if (!KeyBind_IsPressed(KEYBIND_PLAYER_LIST)) {