From c6dc091b2fe9767b7c087c9417f5ec0796ea9156 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 28 Jun 2020 18:16:37 +1000 Subject: [PATCH] Fix having to click chat/inventory/fullscreens buttons in extended touch controls twice to get them to work (Thanks SpicedSoup) --- src/Game.c | 13 +++++++++++++ src/Game.h | 1 + src/Input.c | 12 +----------- src/Menus.c | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/Game.c b/src/Game.c index 46cb711a8..9986bca61 100644 --- a/src/Game.c +++ b/src/Game.c @@ -91,6 +91,19 @@ int ScheduledTask_Add(double interval, ScheduledTaskCallback callback) { } +void Game_ToggleFullscreen(void) { + int state = Window_GetWindowState(); + cc_result res; + + if (state == WINDOW_STATE_FULLSCREEN) { + res = Window_ExitFullscreen(); + if (res) Logger_Warn(res, "leaving fullscreen"); + } else { + res = Window_EnterFullscreen(); + if (res) Logger_Warn(res, "going fullscreen"); + } +} + void Game_SetViewDistance(int distance) { distance = min(distance, Game_MaxViewDistance); if (distance == Game_ViewDistance) return; diff --git a/src/Game.h b/src/Game.h index 3c305a302..37e0e6a4b 100644 --- a/src/Game.h +++ b/src/Game.h @@ -49,6 +49,7 @@ enum FpsLimitMethod { }; extern const char* const FpsLimit_Names[FPS_LIMIT_COUNT]; +void Game_ToggleFullscreen(void); void Game_SetViewDistance(int distance); void Game_UserSetViewDistance(int distance); void Game_SetFov(int fov); diff --git a/src/Input.c b/src/Input.c index ff3d885c4..0d7b63ebd 100644 --- a/src/Input.c +++ b/src/Input.c @@ -887,20 +887,10 @@ static cc_bool HandleNonClassicKey(int key) { } static cc_bool HandleCoreKey(int key) { - cc_result res; - if (key == KeyBinds[KEYBIND_HIDE_FPS]) { Gui_ShowFPS = !Gui_ShowFPS; } else if (key == KeyBinds[KEYBIND_FULLSCREEN]) { - int state = Window_GetWindowState(); - - if (state == WINDOW_STATE_FULLSCREEN) { - res = Window_ExitFullscreen(); - if (res) Logger_Warn(res, "leaving fullscreen"); - } else { - res = Window_EnterFullscreen(); - if (res) Logger_Warn(res, "going fullscreen"); - } + Game_ToggleFullscreen(); } else if (key == KeyBinds[KEYBIND_FOG]) { const short* viewDists = Gui_ClassicMenu ? classicDists : normDists; int count = Gui_ClassicMenu ? Array_Elems(classicDists) : Array_Elems(normDists); diff --git a/src/Menus.c b/src/Menus.c index 8d87375c8..bc53cc50e 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -3481,17 +3481,26 @@ static void TouchMore_Toggle(KeyBind bind) { Input_SetPressed(key, !Input_Pressed[key]); } -static void TouchMore_Chat(void* s, void* w) { TouchMore_Toggle(KEYBIND_CHAT); } static void TouchMore_Speed(void* s, void* w) { TouchMore_Toggle(KEYBIND_SPEED); } static void TouchMore_Fly(void* s, void* w) { TouchMore_Toggle(KEYBIND_FLY); } -static void TouchMore_Inv(void* s, void* w) { TouchMore_Toggle(KEYBIND_INVENTORY); } -static void TouchMore_Screen(void* s, void* w) { TouchMore_Toggle(KEYBIND_FULLSCREEN); } static void TouchMore_Noclip(void* s, void* w) { TouchMore_Toggle(KEYBIND_NOCLIP); } +static void TouchMore_Chat(void* s, void* w) { + Gui_Remove((struct Screen*)&TouchMoreScreen); + ChatScreen_OpenInput(&String_Empty); +} +static void TouchMore_Inv(void* s, void* w) { + Gui_Remove((struct Screen*)&TouchMoreScreen); + InventoryScreen_Show(); +} static void TouchMore_Menu(void* s, void* w) { Gui_Remove((struct Screen*)&TouchMoreScreen); PauseScreen_Show(); } +static void TouchMore_Screen(void* s, void* w) { + Gui_Remove((struct Screen*)&TouchMoreScreen); + Game_ToggleFullscreen(); +} static void TouchMore_Fog(void* s, void* w) { Input_SetPressed(KeyBinds[KEYBIND_FOG], true);