1 /***************************************************************************** 2 * Copyright (c) 2014-2020 OpenRCT2 developers 3 * 4 * For a complete list of all authors, please refer to contributors.md 5 * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 6 * 7 * OpenRCT2 is licensed under the GNU General Public License version 3. 8 *****************************************************************************/ 9 10 #pragma once 11 12 #include "../common.h" 13 #include "../interface/Window.h" 14 #include "../windows/Intent.h" 15 16 #include <string> 17 #include <string_view> 18 19 class Formatter; 20 21 namespace OpenRCT2::Ui 22 { 23 /** 24 * Manager of in-game windows and widgets. 25 */ 26 struct IWindowManager 27 { 28 virtual ~IWindowManager() = default; 29 virtual void Init() abstract; 30 virtual rct_window* OpenWindow(rct_windowclass wc) abstract; 31 virtual rct_window* OpenView(uint8_t view) abstract; 32 virtual rct_window* OpenDetails(uint8_t type, int32_t id) abstract; 33 virtual rct_window* OpenIntent(Intent* intent) abstract; 34 virtual void BroadcastIntent(const Intent& intent) abstract; 35 virtual rct_window* ShowError(rct_string_id title, rct_string_id message, const Formatter& formatter) abstract; 36 virtual rct_window* ShowError(std::string_view title, std::string_view message) abstract; 37 virtual void ForceClose(rct_windowclass windowClass) abstract; 38 virtual void UpdateMapTooltip() abstract; 39 virtual void HandleInput() abstract; 40 virtual void HandleKeyboard(bool isTitle) abstract; 41 virtual std::string GetKeyboardShortcutString(std::string_view shortcutId) abstract; 42 virtual void SetMainView(const ScreenCoordsXY& viewPos, ZoomLevel zoom, int32_t rotation) abstract; 43 virtual void UpdateMouseWheel() abstract; 44 virtual rct_window* GetOwner(const rct_viewport* viewport) abstract; 45 }; 46 47 IWindowManager* CreateDummyWindowManager(); 48 } // namespace OpenRCT2::Ui 49