/* * This file is part of OpenTTD. * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . */ /** @file window_type.h Types related to windows */ #ifndef WINDOW_TYPE_H #define WINDOW_TYPE_H /** * Widget ID. * Even though the ID is signed, actual IDs must be non-negative. * Negative IDs are used for special cases, like denoting 'no widget'. */ using WidgetID = int; /** %Window numbers. */ enum WindowNumberEnum { WN_GAME_OPTIONS_AI = 0, ///< AI settings. WN_GAME_OPTIONS_GS, ///< GS settings. WN_GAME_OPTIONS_ABOUT, ///< About window. WN_GAME_OPTIONS_NEWGRF_STATE, ///< NewGRF settings. WN_GAME_OPTIONS_GAME_OPTIONS, ///< Game options. WN_GAME_OPTIONS_GAME_SETTINGS, ///< Game settings. WN_QUERY_STRING = 0, ///< Query string. WN_QUERY_STRING_SIGN, ///< Query string for signs. WN_CONFIRM_POPUP_QUERY = 0, ///< Query popup confirm. WN_CONFIRM_POPUP_QUERY_BOOTSTRAP, ///< Query popup confirm for bootstrap. WN_NETWORK_WINDOW_GAME = 0, ///< Network game window. WN_NETWORK_WINDOW_CONTENT_LIST, ///< Network content list. WN_NETWORK_WINDOW_START, ///< Network start server. WN_NETWORK_STATUS_WINDOW_JOIN = 0, ///< Network join status. WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD, ///< Network content download status. }; /** %Window classes. */ enum WindowClass { WC_NONE, ///< No window, redirects to WC_MAIN_WINDOW. /** * Main window; %Window numbers: * - 0 = #MainWidgets */ WC_MAIN_WINDOW = WC_NONE, /** * Main toolbar (the long bar at the top); %Window numbers: * - 0 = #ToolbarNormalWidgets * - 0 = #ToolbarEditorWidgets */ WC_MAIN_TOOLBAR, /** * Statusbar (at the bottom of your screen); %Window numbers: * - 0 = #StatusbarWidgets */ WC_STATUS_BAR, /** * Build toolbar; %Window numbers: * - #TRANSPORT_RAIL = #RailToolbarWidgets * - #TRANSPORT_AIR = #AirportToolbarWidgets * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_ROAD = #RoadToolbarWidgets */ WC_BUILD_TOOLBAR, /** * Scenario build toolbar; %Window numbers: * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_ROAD = #RoadToolbarWidgets */ WC_SCEN_BUILD_TOOLBAR, /** * Build trees toolbar; %Window numbers: * - 0 = #BuildTreesWidgets */ WC_BUILD_TREES, /** * Transparency toolbar; %Window numbers: * - 0 = #TransparencyToolbarWidgets */ WC_TRANSPARENCY_TOOLBAR, /** * Build signal toolbar; %Window numbers: * - #TRANSPORT_RAIL = #BuildSignalWidgets */ WC_BUILD_SIGNAL, /** * Small map; %Window numbers: * - 0 = #SmallMapWidgets */ WC_SMALLMAP, /** * Error message; %Window numbers: * - 0 = #ErrorMessageWidgets */ WC_ERRMSG, /** * Tooltip window; %Window numbers: * - 0 = #ToolTipsWidgets */ WC_TOOLTIPS, /** * Query string window; %Window numbers: * - #WN_QUERY_STRING = #QueryStringWidgets * - #WN_QUERY_STRING_SIGN = #QueryEditSignWidgets */ WC_QUERY_STRING, /** * Popup with confirm question; %Window numbers: * - #WN_CONFIRM_POPUP_QUERY = #QueryWidgets * - #WN_CONFIRM_POPUP_QUERY_BOOTSTRAP = #BootstrapAskForDownloadWidgets */ WC_CONFIRM_POPUP_QUERY, /** * Popup with a set of buttons, designed to ask the user a question * from a GameScript. %Window numbers: * - uniqueid = #GoalQuestionWidgets */ WC_GOAL_QUESTION, /** * Saveload window; %Window numbers: * - 0 = #SaveLoadWidgets */ WC_SAVELOAD, /** * Land info window; %Window numbers: * - 0 = #LandInfoWidgets */ WC_LAND_INFO, /** * Drop down menu; %Window numbers: * - 0 = #DropdownMenuWidgets */ WC_DROPDOWN_MENU, /** * On Screen Keyboard; %Window numbers: * - 0 = #OnScreenKeyboardWidgets */ WC_OSK, /** * Set date; %Window numbers: * - #VehicleID = #SetDateWidgets */ WC_SET_DATE, /** * Script settings; %Window numbers: * - 0 = #ScriptSettingsWidgets */ WC_SCRIPT_SETTINGS, /** * NewGRF parameters; %Window numbers: * - 0 = #NewGRFParametersWidgets */ WC_GRF_PARAMETERS, /** * textfile; %Window numbers: * - 0 = #TextfileWidgets */ WC_TEXTFILE, /** * Town authority; %Window numbers: * - #TownID = #TownAuthorityWidgets */ WC_TOWN_AUTHORITY, /** * Vehicle details; %Window numbers: * - #VehicleID = #VehicleDetailsWidgets */ WC_VEHICLE_DETAILS, /** * Vehicle refit; %Window numbers: * - #VehicleID = #VehicleRefitWidgets */ WC_VEHICLE_REFIT, /** * Vehicle orders; %Window numbers: * - #VehicleID = #OrderWidgets */ WC_VEHICLE_ORDERS, /** * Replace vehicle window; %Window numbers: * - #VehicleType = #ReplaceVehicleWidgets */ WC_REPLACE_VEHICLE, /** * Vehicle timetable; %Window numbers: * - #VehicleID = #VehicleTimetableWidgets */ WC_VEHICLE_TIMETABLE, /** * Company colour selection; %Window numbers: * - #CompanyID = #SelectCompanyLiveryWidgets */ WC_COMPANY_COLOUR, /** * Alter company face window; %Window numbers: * - #CompanyID = #SelectCompanyManagerFaceWidgets */ WC_COMPANY_MANAGER_FACE, /** * Select station (when joining stations); %Window numbers: * - 0 = #JoinStationWidgets */ WC_SELECT_STATION, /** * News window; %Window numbers: * - 0 = #NewsWidgets */ WC_NEWS_WINDOW, /** * Town directory; %Window numbers: * - 0 = #TownDirectoryWidgets */ WC_TOWN_DIRECTORY, /** * Subsidies list; %Window numbers: * - 0 = #SubsidyListWidgets */ WC_SUBSIDIES_LIST, /** * Industry directory; %Window numbers: * - 0 = #IndustryDirectoryWidgets */ WC_INDUSTRY_DIRECTORY, /** * News history list; %Window numbers: * - 0 = #MessageHistoryWidgets */ WC_MESSAGE_HISTORY, /** * Sign list; %Window numbers: * - 0 = #SignListWidgets */ WC_SIGN_LIST, /** * Scripts list; %Window numbers: * - 0 = #ScriptListWidgets */ WC_SCRIPT_LIST, /** * Goals list; %Window numbers: * - 0 ; #GoalListWidgets */ WC_GOALS_LIST, /** * Story book; %Window numbers: * - CompanyID = #StoryBookWidgets */ WC_STORY_BOOK, /** * Station list; %Window numbers: * - #CompanyID = #StationListWidgets */ WC_STATION_LIST, /** * Trains list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_TRAINS_LIST, /** * Road vehicle list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_ROADVEH_LIST, /** * Ships list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_SHIPS_LIST, /** * Aircraft list; %Window numbers: * - Packed value = #GroupListWidgets / #VehicleListWidgets */ WC_AIRCRAFT_LIST, /** * Town view; %Window numbers: * - #TownID = #TownViewWidgets */ WC_TOWN_VIEW, /** * Vehicle view; %Window numbers: * - #VehicleID = #VehicleViewWidgets */ WC_VEHICLE_VIEW, /** * Station view; %Window numbers: * - #StationID = #StationViewWidgets */ WC_STATION_VIEW, /** * Depot view; %Window numbers: * - #TileIndex = #DepotWidgets */ WC_VEHICLE_DEPOT, /** * Waypoint view; %Window numbers: * - #WaypointID = #WaypointWidgets */ WC_WAYPOINT_VIEW, /** * Industry view; %Window numbers: * - #IndustryID = #IndustryViewWidgets */ WC_INDUSTRY_VIEW, /** * Company view; %Window numbers: * - #CompanyID = #CompanyWidgets */ WC_COMPANY, /** * Build object; %Window numbers: * - 0 = #BuildObjectWidgets */ WC_BUILD_OBJECT, /** * Build vehicle; %Window numbers: * - #VehicleType = #BuildVehicleWidgets * - #TileIndex = #BuildVehicleWidgets */ WC_BUILD_VEHICLE, /** * Build bridge; %Window numbers: * - #TransportType = #BuildBridgeSelectionWidgets */ WC_BUILD_BRIDGE, /** * Build station; %Window numbers: * - #TRANSPORT_AIR = #AirportPickerWidgets * - #TRANSPORT_WATER = #DockToolbarWidgets * - #TRANSPORT_RAIL = #BuildRailStationWidgets */ WC_BUILD_STATION, /** * Build bus station; %Window numbers: * - #TRANSPORT_ROAD = #BuildRoadStationWidgets */ WC_BUS_STATION, /** * Build truck station; %Window numbers: * - #TRANSPORT_ROAD = #BuildRoadStationWidgets */ WC_TRUCK_STATION, /** * Build depot; %Window numbers: * - #TRANSPORT_WATER = #BuildDockDepotWidgets * - #TRANSPORT_RAIL = #BuildRailDepotWidgets * - #TRANSPORT_ROAD = #BuildRoadDepotWidgets */ WC_BUILD_DEPOT, /** * Build waypoint; %Window numbers: * - #TRANSPORT_RAIL = #BuildRailWaypointWidgets */ WC_BUILD_WAYPOINT, /** * Found a town; %Window numbers: * - 0 = #TownFoundingWidgets */ WC_FOUND_TOWN, /** * Build industry; %Window numbers: * - 0 = #DynamicPlaceIndustriesWidgets */ WC_BUILD_INDUSTRY, /** * Select game window; %Window numbers: * - 0 = #SelectGameIntroWidgets */ WC_SELECT_GAME, /** * Landscape generation (in Scenario Editor); %Window numbers: * - 0 = #TerraformToolbarWidgets * - 0 = #EditorTerraformToolbarWidgets */ WC_SCEN_LAND_GEN, /** * Generate landscape (newgame); %Window numbers: * - GLWM_SCENARIO = #CreateScenarioWidgets * - #GenerateLandscapeWindowMode = #GenerateLandscapeWidgets */ WC_GENERATE_LANDSCAPE, /** * Progress report of landscape generation; %Window numbers: * - 0 = #GenerationProgressWidgets * - 1 = #ScanProgressWidgets */ WC_MODAL_PROGRESS, /** * Network window; %Window numbers: * - #WN_NETWORK_WINDOW_GAME = #NetworkGameWidgets * - #WN_NETWORK_WINDOW_CONTENT_LIST = #NetworkContentListWidgets * - #WN_NETWORK_WINDOW_START = #NetworkStartServerWidgets */ WC_NETWORK_WINDOW, /** * Client list; %Window numbers: * - 0 = #ClientListWidgets */ WC_CLIENT_LIST, /** * Network status window; %Window numbers: * - #WN_NETWORK_STATUS_WINDOW_JOIN = #NetworkJoinStatusWidgets * - #WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD = #NetworkContentDownloadStatusWidgets */ WC_NETWORK_STATUS_WINDOW, /** * Network ask relay window; %Window numbers: * - 0 - #NetworkAskRelayWidgets */ WC_NETWORK_ASK_RELAY, /** * Network ask survey window; %Window numbers: * - 0 - #NetworkAskSurveyWidgets */ WC_NETWORK_ASK_SURVEY, /** * Chatbox; %Window numbers: * - #DestType = #NetWorkChatWidgets */ WC_SEND_NETWORK_MSG, /** * Industry cargoes chain; %Window numbers: * - 0 = #IndustryCargoesWidgets */ WC_INDUSTRY_CARGOES, /** * Legend for graphs; %Window numbers: * - 0 = #GraphLegendWidgets */ WC_GRAPH_LEGEND, /** * Finances of a company; %Window numbers: * - #CompanyID = #CompanyWidgets */ WC_FINANCES, /** * Income graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_INCOME_GRAPH, /** * Operating profit graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_OPERATING_PROFIT, /** * Delivered cargo graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_DELIVERED_CARGO, /** * Performance history graph; %Window numbers: * - 0 = #PerformanceHistoryGraphWidgets */ WC_PERFORMANCE_HISTORY, /** * Company value graph; %Window numbers: * - 0 = #CompanyValueWidgets */ WC_COMPANY_VALUE, /** * Company league window; %Window numbers: * - 0 = #CompanyLeagueWidgets */ WC_COMPANY_LEAGUE, /** * Payment rates graph; %Window numbers: * - 0 = #CargoPaymentRatesWidgets */ WC_PAYMENT_RATES, /** * Performance detail window; %Window numbers: * - 0 = #PerformanceRatingDetailsWidgets */ WC_PERFORMANCE_DETAIL, /** * Company infrastructure overview; %Window numbers: * - #CompanyID = #CompanyInfrastructureWidgets */ WC_COMPANY_INFRASTRUCTURE, /** * Buyout company (merger); %Window numbers: * - #CompanyID = #BuyCompanyWidgets */ WC_BUY_COMPANY, /** * Engine preview window; %Window numbers: * - #EngineID = #EnginePreviewWidgets */ WC_ENGINE_PREVIEW, /** * Music window; %Window numbers: * - 0 = #MusicWidgets */ WC_MUSIC_WINDOW, /** * Music track selection; %Window numbers: * - 0 = MusicTrackSelectionWidgets */ WC_MUSIC_TRACK_SELECTION, /** * Game options window; %Window numbers: * - #WN_GAME_OPTIONS_AI = #AIConfigWidgets * - #WN_GAME_OPTIONS_GS = #GSConfigWidgets * - #WN_GAME_OPTIONS_ABOUT = #AboutWidgets * - #WN_GAME_OPTIONS_NEWGRF_STATE = #NewGRFStateWidgets * - #WN_GAME_OPTIONS_GAME_OPTIONS = #GameOptionsWidgets * - #WN_GAME_OPTIONS_GAME_SETTINGS = #GameSettingsWidgets */ WC_GAME_OPTIONS, /** * Custom currency; %Window numbers: * - 0 = #CustomCurrencyWidgets */ WC_CUSTOM_CURRENCY, /** * Cheat window; %Window numbers: * - 0 = #CheatWidgets */ WC_CHEATS, /** * Extra viewport; %Window numbers: * - Ascending value = #ExtraViewportWidgets */ WC_EXTRA_VIEWPORT, /** * Console; %Window numbers: * - 0 = #ConsoleWidgets */ WC_CONSOLE, /** * Bootstrap; %Window numbers: * - 0 = #BootstrapBackgroundWidgets */ WC_BOOTSTRAP, /** * Highscore; %Window numbers: * - 0 = #HighscoreWidgets */ WC_HIGHSCORE, /** * Endscreen; %Window numbers: * - 0 = #HighscoreWidgets */ WC_ENDSCREEN, /** * Script debug window; %Window numbers: * - Ascending value = #ScriptDebugWidgets */ WC_SCRIPT_DEBUG, /** * NewGRF inspect (debug); %Window numbers: * - Packed value = #NewGRFInspectWidgets */ WC_NEWGRF_INSPECT, /** * Sprite aligner (debug); %Window numbers: * - 0 = #SpriteAlignerWidgets */ WC_SPRITE_ALIGNER, /** * Linkgraph legend; %Window numbers: * - 0 = #LinkGraphWidgets */ WC_LINKGRAPH_LEGEND, /** * Save preset; %Window numbers: * - 0 = #SavePresetWidgets */ WC_SAVE_PRESET, /** * Framerate display; %Window numbers: * - 0 = #FramerateDisplayWidgets */ WC_FRAMERATE_DISPLAY, /** * Frame time graph; %Window numbers: * - 0 = #FrametimeGraphWindowWidgets */ WC_FRAMETIME_GRAPH, /** * Screenshot window; %Window numbers: * - 0 = #ScreenshotWidgets */ WC_SCREENSHOT, /* * Help and manuals window; %Window numbers: * - 0 = #HelpWindowWidgets */ WC_HELPWIN, WC_INVALID = 0xFFFF, ///< Invalid window. }; /** Data value for #Window::OnInvalidateData() of windows with class #WC_GAME_OPTIONS. */ enum GameOptionsInvalidationData { GOID_DEFAULT = 0, GOID_NEWGRF_RESCANNED, ///< NewGRFs were just rescanned. GOID_NEWGRF_CURRENT_LOADED, ///< The current list of active NewGRF has been loaded. GOID_NEWGRF_LIST_EDITED, ///< List of active NewGRFs is being edited. GOID_NEWGRF_CHANGES_MADE, ///< Changes have been made to a given NewGRF either through the palette or its parameters. GOID_NEWGRF_CHANGES_APPLIED, ///< The active NewGRF list changes have been applied. }; struct Window; /** Number to differentiate different windows of the same class */ typedef int32_t WindowNumber; /** State of handling an event. */ enum EventState { ES_HANDLED, ///< The passed event is handled. ES_NOT_HANDLED, ///< The passed event is not handled. }; #endif /* WINDOW_TYPE_H */