static bool InputHandler_HandleCoreKey(Key key) { struct Screen* active = Gui_GetActiveScreen(); if (key == KeyBinds[KEYBIND_HIDE_FPS]) { Gui_ShowFPS = !Gui_ShowFPS; } else if (key == KeyBinds[KEYBIND_FULLSCREEN]) { int state = Window_GetWindowState(); if (state != WINDOW_STATE_MINIMISED) { bool fullscreen = state == WINDOW_STATE_FULLSCREEN; Window_SetWindowState(fullscreen ? WINDOW_STATE_NORMAL : WINDOW_STATE_FULLSCREEN); } } else if (key == KeyBinds[KEYBIND_FOG]) { short* viewDists = Gui_ClassicMenu ? classicViewDists : normViewDists; int count = Gui_ClassicMenu ? Array_Elems(classicViewDists) : Array_Elems(normViewDists); if (Key_IsShiftPressed()) { InputHandler_CycleDistanceBackwards(viewDists, count); } else { InputHandler_CycleDistanceForwards(viewDists, count); } } else if (key == KeyBinds[KEYBIND_INVENTORY] && active == Gui_HUD) { Gui_FreeActive(); Gui_SetActive(InventoryScreen_MakeInstance()); } else if (key == KEY_F5 && Game_ClassicMode) { int weather = Env.Weather == WEATHER_SUNNY ? WEATHER_RAINY : WEATHER_SUNNY; Env_SetWeather(weather); } else { if (Game_ClassicMode) return false; return InputHandler_HandleNonClassicKey(key); } return true; }
bool GameMode_HandlesKeyDown(Key key) { Screen* activeScreen = Gui_GetActiveScreen(); if (key == KeyBind_Get(KeyBind_Inventory) && activeScreen == Gui_HUD) { Gui_ReplaceActive(InventoryScreen_MakeInstance()); return true; } else if (key == KeyBind_Get(KeyBind_DropBlock) && !Game_ClassicMode) { if (Inventory_CanChangeSelected() && Inventory_SelectedBlock != BLOCK_AIR) { /* Don't assign SelectedIndex directly, because we don't want held block switching positions if they already have air in their inventory hotbar. */ Inventory_Set(Inventory_SelectedIndex, BLOCK_AIR); Event_RaiseVoid(&UserEvents_HeldBlockChanged); } return true; } return false; }