From a671d46961ec75815bd975c4b314720b396e9651 Mon Sep 17 00:00:00 2001 From: dP Date: Sun, 5 Jul 2020 23:17:27 +0300 Subject: [PATCH] Add hotkey to toggle minimap --- src/citymania/cm_main.cpp | 8 ++++++++ src/citymania/cm_main.hpp | 2 ++ src/toolbar_gui.cpp | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/src/citymania/cm_main.cpp b/src/citymania/cm_main.cpp index 4fb14f046d..b7cab34ad2 100644 --- a/src/citymania/cm_main.cpp +++ b/src/citymania/cm_main.cpp @@ -2,6 +2,9 @@ #include "cm_main.hpp" +#include "../smallmap_gui.h" +#include "../window_func.h" + #include "../safeguards.h" namespace citymania { @@ -16,5 +19,10 @@ void SwitchToMode(SwitchMode new_mode) { ResetGame(); } +void ToggleSmallMap() { + SmallMapWindow *w = dynamic_cast(FindWindowById(WC_SMALLMAP, 0)); + if (w == nullptr) ShowSmallMap(); + delete w; +} } // namespace citymania \ No newline at end of file diff --git a/src/citymania/cm_main.hpp b/src/citymania/cm_main.hpp index d32a676fbc..6f8c659f38 100644 --- a/src/citymania/cm_main.hpp +++ b/src/citymania/cm_main.hpp @@ -16,6 +16,8 @@ void Emit(const T &event) { _game->events.emit(event); } +void ToggleSmallMap(); + } // namespace citymania #endif diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index d4ee6054c5..ad6927c8ab 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -61,6 +61,7 @@ #include "watch_gui.h" #include "citymania/locations.hpp" +#include "citymania/cm_main.hpp" #include "safeguards.h" @@ -2102,6 +2103,7 @@ enum MainToolbarHotkeys { MTHK_SETTINGS_ADV, MTHK_NEWGRF, MTHK_LANDINFO, + CM_MTHK_SMALLMAP_TOGGLE, CM_LOCATION_HOTKEYS, }; @@ -2218,6 +2220,7 @@ struct MainToolbarWindow : Window { case MTHK_SETTINGS_ADV: ShowGameSettings(); break; case MTHK_NEWGRF: ShowNewGRFSettings(!_networking && _settings_client.gui.UserIsAllowedToChangeNewGRFs(), true, true, &_grfconfig); break; case MTHK_LANDINFO: _last_started_action = PlaceLandBlockInfo(); break; + case CM_MTHK_SMALLMAP_TOGGLE: citymania::ToggleSmallMap(); break; default: return citymania::HandleToolbarHotkey(hotkey); } return ES_HANDLED; @@ -2370,6 +2373,7 @@ static Hotkey maintoolbar_hotkeys[] = { Hotkey((uint16)0, "newgrf_window", MTHK_NEWGRF), Hotkey((uint16)0, "sign_list", MTHK_SIGN_LIST), Hotkey((uint16)0, "land_info", MTHK_LANDINFO), + Hotkey((uint16)0, "cm_smallmap_toggle", CM_MTHK_SMALLMAP_TOGGLE), CM_LOCATION_HOTKEYS_DECL, HOTKEY_LIST_END }; @@ -2524,6 +2528,7 @@ enum MainToolbarEditorHotkeys { MTEHK_TERRAFORM, MTEHK_SMALLMAP, MTEHK_EXTRA_VIEWPORT, + CM_MTEHK_SMALLMAP_TOGGLE, }; struct ScenarioEditorToolbarWindow : Window { @@ -2633,6 +2638,7 @@ struct ScenarioEditorToolbarWindow : Window { case MTEHK_TERRAFORM: ShowEditorTerraformToolbar(); break; case MTEHK_SMALLMAP: ShowSmallMap(); break; case MTEHK_EXTRA_VIEWPORT: ShowExtraViewPortWindowForTileUnderCursor(); break; + case CM_MTEHK_SMALLMAP_TOGGLE: citymania::ToggleSmallMap(); break; default: return ES_NOT_HANDLED; } if (cbf != CBF_NONE) _last_started_action = cbf; @@ -2737,6 +2743,7 @@ static Hotkey scenedit_maintoolbar_hotkeys[] = { Hotkey('L', "terraform", MTEHK_TERRAFORM), Hotkey('M', "smallmap", MTEHK_SMALLMAP), Hotkey('V', "extra_viewport", MTEHK_EXTRA_VIEWPORT), + Hotkey((uint16)0, "cm_smallmap_toggle", CM_MTEHK_SMALLMAP_TOGGLE), HOTKEY_LIST_END }; HotkeyList ScenarioEditorToolbarWindow::hotkeys("scenedit_maintoolbar", scenedit_maintoolbar_hotkeys);