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 <openrct2-ui/interface/Window.h> 13 #include <openrct2/common.h> 14 #include <openrct2/ride/Ride.h> 15 #include <openrct2/windows/tile_inspector.h> 16 #include <string_view> 17 18 using loadsave_callback = void (*)(int32_t result, const utf8* path); 19 using scenarioselect_callback = void (*)(const utf8* path); 20 struct Peep; 21 struct TileElement; 22 struct Vehicle; 23 enum class GuestListFilterType : int32_t; 24 enum class ScatterToolDensity : uint8_t; 25 26 extern std::vector<ScenerySelection> gWindowSceneryTabSelections; 27 extern size_t gWindowSceneryActiveTabIndex; 28 extern bool gWindowSceneryScatterEnabled; 29 extern uint16_t gWindowSceneryScatterSize; 30 extern ScatterToolDensity gWindowSceneryScatterDensity; 31 extern uint8_t gWindowSceneryPaintEnabled; 32 extern uint8_t gWindowSceneryRotation; 33 extern colour_t gWindowSceneryPrimaryColour; 34 extern colour_t gWindowScenerySecondaryColour; 35 extern colour_t gWindowSceneryTertiaryColour; 36 extern bool gWindowSceneryEyedropperEnabled; 37 38 rct_window* window_about_open(); 39 void WindowCampaignRefreshRides(); 40 rct_window* window_changelog_open(int personality); 41 rct_window* window_cheats_open(); 42 rct_window* window_clear_scenery_open(); 43 rct_window* custom_currency_window_open(); 44 rct_window* window_debug_paint_open(); 45 rct_window* window_editor_inventions_list_open(); 46 rct_window* window_editor_main_open(); 47 rct_window* window_editor_objective_options_open(); 48 rct_window* window_editor_scenario_options_open(); 49 rct_window* window_footpath_open(); 50 void WindowFootpathResetSelectedPath(); 51 rct_window* window_guest_open(Peep* peep); 52 rct_window* window_land_open(); 53 rct_window* window_land_rights_open(); 54 rct_window* window_main_open(); 55 rct_window* window_mapgen_open(); 56 rct_window* window_multiplayer_open(); 57 rct_window* window_news_open(); 58 rct_window* window_news_options_open(); 59 rct_window* window_options_open(); 60 rct_window* window_save_prompt_open(); 61 #ifndef DISABLE_NETWORK 62 rct_window* window_server_list_open(); 63 rct_window* window_server_start_open(); 64 #endif 65 rct_window* window_shortcut_keys_open(); 66 rct_window* window_staff_list_open(); 67 rct_window* window_staff_open(Peep* peep); 68 void WindowStaffListRefresh(); 69 rct_window* window_themes_open(); 70 rct_window* window_title_exit_open(); 71 rct_window* window_title_logo_open(); 72 rct_window* window_title_menu_open(); 73 rct_window* window_title_options_open(); 74 rct_window* window_viewport_open(); 75 rct_window* window_water_open(); 76 rct_window* window_view_clipping_open(); 77 78 // WC_FINANCES 79 rct_window* window_finances_open(); 80 rct_window* window_finances_research_open(); 81 82 // WC_PARK_INFORMATION 83 rct_window* window_park_awards_open(); 84 rct_window* window_park_entrance_open(); 85 rct_window* window_park_guests_open(); 86 rct_window* window_park_objective_open(); 87 rct_window* window_park_rating_open(); 88 89 rct_window* window_banner_open(rct_windownumber number); 90 rct_window* window_ride_demolish_prompt_open(Ride* ride); 91 rct_window* window_ride_refurbish_prompt_open(Ride* ride); 92 rct_window* window_sign_open(rct_windownumber number); 93 rct_window* window_sign_small_open(rct_windownumber number); 94 rct_window* window_player_open(uint8_t id); 95 rct_window* window_new_campaign_open(int16_t campaignType); 96 97 rct_window* window_install_track_open(const utf8* path); 98 void window_guest_list_refresh_list(); 99 rct_window* window_guest_list_open(); 100 rct_window* window_guest_list_open_with_filter(GuestListFilterType type, int32_t index); 101 rct_window* window_staff_fire_prompt_open(Peep* peep); 102 void window_title_editor_open(int32_t tab); 103 void window_title_command_editor_open(struct TitleSequence* sequence, int32_t command, bool insert); 104 rct_window* window_scenarioselect_open(scenarioselect_callback callback, bool titleEditor); 105 rct_window* window_scenarioselect_open(std::function<void(std::string_view)> callback, bool titleEditor, bool disableLocking); 106 107 rct_window* window_error_open(rct_string_id title, rct_string_id message, const class Formatter& formatter); 108 rct_window* window_error_open(std::string_view title, std::string_view message); 109 struct TrackDesign; 110 rct_window* window_loadsave_open( 111 int32_t type, std::string_view defaultPath, std::function<void(int32_t result, std::string_view)> callback, 112 TrackDesign* trackDesign); 113 rct_window* window_track_place_open(const struct track_design_file_ref* tdFileRef); 114 rct_window* window_track_manage_open(struct track_design_file_ref* tdFileRef); 115 116 void TrackPlaceClearProvisionalTemporarily(); 117 void TrackPlaceRestoreProvisional(); 118 119 rct_window* window_map_open(); 120 void window_map_reset(); 121 122 rct_window* window_research_open(); 123 void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dpi, rct_widgetindex baseWidgetIndex); 124 void window_research_funding_page_paint(rct_window* w, rct_drawpixelinfo* dpi, rct_widgetindex baseWidgetIndex); 125 126 rct_window* window_new_ride_open(); 127 rct_window* window_new_ride_open_research(); 128 void window_new_ride_init_vars(); 129 void window_new_ride_focus(RideSelection rideItem); 130 131 rct_window* window_ride_list_open(); 132 void window_ride_list_refresh_list(rct_window* w); 133 134 rct_window* window_ride_main_open(Ride* ride); 135 rct_window* window_ride_open_track(TileElement* tileElement); 136 rct_window* window_ride_open_vehicle(Vehicle* vehicle); 137 void window_ride_measurements_design_cancel(); 138 139 // rct2: 0x00F635EE 140 extern RideSelection _window_track_list_item; 141 rct_window* window_track_list_open(RideSelection item); 142 143 void SetMapTooltip(Formatter& ft); 144 const Formatter& GetMapTooltip(); 145 void window_map_tooltip_update_visibility(); 146 147 rct_window* window_maze_construction_open(); 148 void window_maze_construction_update_pressed_widgets(); 149 150 rct_window* window_network_status_open(const char* text, close_callback onClose); 151 rct_window* window_network_status_open_password(); 152 void window_network_status_close(); 153 154 void window_text_input_key(rct_window* w, char keychar); 155 void window_text_input_open( 156 rct_window* call_w, rct_widgetindex call_widget, rct_string_id title, rct_string_id description, 157 const Formatter& descriptionArgs, rct_string_id existing_text, uintptr_t existing_args, int32_t maxLength); 158 void window_text_input_raw_open( 159 rct_window* call_w, rct_widgetindex call_widget, rct_string_id title, rct_string_id description, 160 const Formatter& descriptionArgs, const_utf8string existing_text, int32_t maxLength); 161 162 void window_text_input_open( 163 std::string_view title, std::string_view description, std::string_view initialValue, size_t maxLength, 164 std::function<void(std::string_view)> okCallback, std::function<void()> cancelCallback); 165 166 rct_window* window_object_load_error_open(utf8* path, size_t numMissingObjects, const ObjectEntryDescriptor* missingObjects); 167 168 rct_window* window_ride_construction_open(); 169 void window_ride_construction_update_active_elements_impl(); 170 void window_ride_construction_update_enabled_track_pieces(); 171 172 rct_window* window_top_toolbar_open(); 173 bool land_tool_is_active(); 174 bool clear_scenery_tool_is_active(); 175 bool water_tool_is_active(); 176 177 rct_window* window_scenery_open(); 178 bool window_scenery_set_selected_item(const ScenerySelection& scenery); 179 void window_scenery_set_default_placement_configuration(); 180 void window_scenery_init(); 181 void window_scenery_reset_selected_scenery_items(); 182 183 extern uint8_t gToolbarDirtyFlags; 184 rct_window* window_game_bottom_toolbar_open(); 185 void window_game_bottom_toolbar_invalidate_news_item(); 186 187 rct_window* window_editor_bottom_toolbar_open(); 188 189 rct_window* window_tile_inspector_open(); 190 void window_tile_inspector_clear_clipboard(); 191 192 rct_window* window_editor_object_selection_open(); 193 194 void window_tooltip_reset(const ScreenCoordsXY& screenCoords); 195 void window_tooltip_show(const OpenRCT2String& message, ScreenCoordsXY screenCoords); 196 void window_tooltip_open(rct_window* widgetWindow, rct_widgetindex widgetIndex, const ScreenCoordsXY& screenCoords); 197 void window_tooltip_close(); 198 199 rct_window* window_scenery_scatter_open(); 200 201 // clang-format off 202 #define WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, CLOSE_STR) \ 203 { WindowWidgetType::Frame, 0, 0, WIDTH - 1, 0, HEIGHT - 1, 0xFFFFFFFF, STR_NONE }, \ 204 { WindowWidgetType::Caption, 0, 1, WIDTH - 2, 1, 14, TITLE, STR_WINDOW_TITLE_TIP }, \ 205 { WindowWidgetType::CloseBox, 0, WIDTH - 13, WIDTH - 3, 2, 13, CLOSE_STR, STR_CLOSE_WINDOW_TIP } 206 207 #define WINDOW_SHIM(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X) 208 #define WINDOW_SHIM_WHITE(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X_WHITE) 209 210 // clang-format on 211