102 return DropDownListStringItem::Width() + this->checkmark_width;
105 void Draw(
int left,
int right,
int top,
int bottom,
bool sel,
int bg_colour)
const 130 bool Selectable()
const 143 uint Height(uint width)
const 148 void Draw(
int left,
int right,
int top,
int bottom,
bool sel,
int bg_colour)
const 156 int icon_offset = (bottom - top - icon_size.height) / 2;
167 col = sel ? TC_WHITE : TC_BLACK;
196 for (
int i = 0; i < count; i++) {
219 #ifdef ENABLE_NETWORK 226 if (include_spectator) {
258 return CBF_PLACE_SIGN;
282 _fast_forward ^=
true;
297 OME_SHOW_STATIONNAMES,
298 OME_SHOW_WAYPOINTNAMES,
300 OME_SHOW_COMPETITOR_SIGNS,
303 OME_TRANSPARENTBUILDINGS,
304 OME_SHOW_STATIONSIGNS,
359 case OME_SHOW_COMPETITOR_SIGNS:
376 SLEME_SAVE_SCENARIO = 0,
378 SLEME_SAVE_HEIGHTMAP,
379 SLEME_LOAD_HEIGHTMAP,
428 if (_game_mode == GM_EDITOR) {
434 case SLEME_EXIT_TOINTRO: AskExitToGameMenu();
break;
435 case SLEME_EXIT_GAME: HandleExitGameRequest();
break;
441 case SLNME_EXIT_TOINTRO: AskExitToGameMenu();
break;
442 case SLNME_EXIT_GAME: HandleExitGameRequest();
break;
450 enum MapMenuEntries {
451 MME_SHOW_SMALLMAP = 0,
452 MME_SHOW_EXTRAVIEWPORTS,
455 MME_SHOW_TOWNDIRECTORY,
456 MME_SHOW_INDUSTRYDIRECTORY,
495 case MME_SHOW_TOWNDIRECTORY: ShowTownDirectory();
break;
496 case MME_SHOW_INDUSTRYDIRECTORY: ShowIndustryDirectory();
break;
518 case 0: ShowTownDirectory();
break;
543 case 0: ShowSubsidiesList();
break;
604 #ifdef ENABLE_NETWORK 691 case 0: ShowOperatingProfitGraph();
break;
692 case 1: ShowIncomeGraph();
break;
693 case 2: ShowDeliveredCargoGraph();
break;
694 case 3: ShowPerformanceHistoryGraph();
break;
695 case 4: ShowCompanyValueGraph();
break;
696 case 5: ShowCargoPaymentRates();
break;
698 case 6: ShowCompanyLeagueTable();
break;
699 case 7: ShowPerformanceRatingDetail();
break;
721 case 0: ShowCompanyLeagueTable();
break;
722 case 1: ShowPerformanceRatingDetail();
break;
746 case 0: ShowIndustryDirectory();
break;
748 case 2: ShowBuildIndustryWindow();
break;
884 _last_built_railtype = (
RailType)index;
901 FOR_ALL_ENGINES_OF_TYPE(e,
VEH_ROAD) {
921 _last_built_roadtype = (
RoadType)index;
984 case 1: ShowBuildTreesToolbar();
break;
985 case 2:
return SelectSignTool();
1042 return CBF_PLACE_LANDINFO;
1052 static void MenuClickSmallScreenshot()
1076 if ((uint64)vp.
width * (uint64)vp.
height > 8192 * 8192) {
1097 extern bool _draw_bounding_boxes;
1100 _draw_bounding_boxes = !_draw_bounding_boxes;
1114 extern bool _draw_dirty_blocks;
1117 _draw_dirty_blocks = !_draw_dirty_blocks;
1143 case 0:
return PlaceLandBlockInfo();
1146 case 4: MenuClickSmallScreenshot();
break;
1150 case 8: ShowAboutWindow();
break;
1162 if (_toolbar_mode != TB_LOWER) {
1163 _toolbar_mode = TB_LOWER;
1165 _toolbar_mode = TB_UPPER;
1227 ShowFoundTownWindow();
1235 ShowBuildIndustryWindow();
1259 ShowBuildTreesToolbar();
1267 return SelectSignTool();
1277 static MenuClickedProc *
const _menu_clicked_procs[] = {
1332 this->smallest_x = 0;
1333 this->smallest_y = 0;
1342 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1343 child_wid->SetupSmallestSize(w, init_array);
1344 this->smallest_y =
max(this->smallest_y, child_wid->smallest_y + child_wid->padding_top + child_wid->padding_bottom);
1345 if (this->IsButton(child_wid->type)) {
1347 this->smallest_x =
max(this->smallest_x, child_wid->smallest_x + child_wid->padding_left + child_wid->padding_right);
1354 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1355 child_wid->current_y = this->smallest_y;
1356 if (!this->IsButton(child_wid->type)) {
1357 child_wid->current_x = child_wid->smallest_x;
1365 assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
1369 this->current_x = given_width;
1370 this->current_y = given_height;
1373 memset(this->visible, 0,
sizeof(this->visible));
1374 uint arrangable_count, button_count, spacer_count;
1375 const byte *arrangement = GetButtonArrangement(given_width, arrangable_count, button_count, spacer_count);
1376 for (uint i = 0; i < arrangable_count; i++) {
1377 this->visible[arrangement[i]] =
true;
1382 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1384 widgets[((
NWidgetCore*)child_wid)->index] = child_wid;
1389 uint spacer_space =
max(0, (
int)given_width - (
int)(button_count * this->smallest_x));
1390 uint button_space = given_width - spacer_space;
1395 const byte *cur_wid = rtl ? &arrangement[arrangable_count - 1] : arrangement;
1396 for (uint i = 0; i < arrangable_count; i++) {
1399 if (spacer_space != 0) {
1401 if (possible_spacer != NULL && possible_spacer->
type ==
NWID_SPACER) {
1402 uint add = spacer_space / (spacer_count - spacer_i);
1404 spacer_space -= add;
1410 if (this->IsButton(child_wid->
type)) {
1411 child_wid->
current_x = button_space / (button_count - button_i);
1433 for (
NWidgetBase *child_wid = rtl ? this->tail : this->head; child_wid != NULL; child_wid = rtl ? child_wid->
prev : child_wid->
next) {
1435 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1443 if (!
IsInsideBS(x, this->pos_x, this->current_x) || !
IsInsideBS(y, this->pos_y, this->current_y))
return NULL;
1445 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1447 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1450 if (nwid != NULL)
return nwid;
1463 virtual const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const = 0;
1468 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1470 static const uint SMALLEST_ARRANGEMENT = 14;
1471 static const uint BIGGEST_ARRANGEMENT = 20;
1479 static const byte arrange14[] = {
1510 static const byte arrange15[] = {
1543 static const byte arrange16[] = {
1578 static const byte arrange17[] = {
1615 static const byte arrange18[] = {
1654 static const byte arrange19[] = {
1695 static const byte arrange20[] = {
1738 static const byte arrange_all[] = {
1771 uint full_buttons =
max(
CeilDiv(width, this->smallest_x), SMALLEST_ARRANGEMENT);
1772 if (full_buttons > BIGGEST_ARRANGEMENT) {
1773 button_count = arrangable_count =
lengthof(arrange_all);
1774 spacer_count = this->spacers;
1779 static const byte *
const arrangements[] = { arrange14, arrange15, arrange16, arrange17, arrange18, arrange19, arrange20 };
1781 button_count = arrangable_count = full_buttons;
1782 spacer_count = this->spacers;
1783 return arrangements[full_buttons - SMALLEST_ARRANGEMENT] + ((_toolbar_mode == TB_LOWER) ? full_buttons : 0);
1789 uint panel_widths[2];
1797 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1798 if (child_wid->type ==
NWID_SPACER || this->IsButton(child_wid->type))
continue;
1800 assert(i <
lengthof(this->panel_widths));
1801 this->panel_widths[i++] = child_wid->current_x;
1806 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1808 static const byte arrange_all[] = {
1828 static const byte arrange_nopanel[] = {
1847 static const byte arrange_switch[] = {
1871 uint min_full_width = (
lengthof(arrange_all) -
lengthof(this->panel_widths)) * this->smallest_x + this->panel_widths[0] + this->panel_widths[1];
1872 if (width >= min_full_width) {
1873 width -= this->panel_widths[0] + this->panel_widths[1];
1874 arrangable_count =
lengthof(arrange_all);
1875 button_count = arrangable_count - 2;
1876 spacer_count = this->spacers;
1881 uint min_small_width = (
lengthof(arrange_switch) -
lengthof(this->panel_widths)) * this->smallest_x / 2 + this->panel_widths[1];
1882 if (width > min_small_width) {
1883 width -= this->panel_widths[1];
1884 arrangable_count =
lengthof(arrange_nopanel);
1885 button_count = arrangable_count - 1;
1886 spacer_count = this->spacers - 1;
1887 return arrange_nopanel;
1891 width -= this->panel_widths[1];
1892 arrangable_count =
lengthof(arrange_switch) / 2;
1893 button_count = arrangable_count - 1;
1895 return arrange_switch + ((_toolbar_mode == TB_LOWER) ? arrangable_count : 0);
1903 static ToolbarButtonProc *
const _toolbar_button_procs[] = {
1910 ToolbarSubsidiesClick,
1911 ToolbarStationsClick,
1912 ToolbarFinancesClick,
1913 ToolbarCompaniesClick,
1918 ToolbarIndustryClick,
1924 ToolbarZoomOutClick,
1925 ToolbarBuildRailClick,
1926 ToolbarBuildRoadClick,
1927 ToolbarBuildWaterClick,
1928 ToolbarBuildAirClick,
1931 ToolbarNewspaperClick,
1936 enum MainToolbarHotkeys {
1966 MTHK_SMALL_SCREENSHOT,
1967 MTHK_ZOOMEDIN_SCREENSHOT,
1968 MTHK_DEFAULTZOOM_SCREENSHOT,
1969 MTHK_GIANT_SCREENSHOT,
1972 MTHK_EXTRA_VIEWPORT,
1981 this->InitNested(0);
2011 this->DrawWidgets();
2016 if (_game_mode != GM_MENU && !this->IsWidgetDisabled(widget)) _toolbar_button_procs[widget](
this);
2028 case MTHK_PAUSE: ToolbarPauseClick(
this);
break;
2034 case MTHK_TOWNDIRECTORY: ShowTownDirectory();
break;
2035 case MTHK_SUBSIDIES: ShowSubsidiesList();
break;
2041 case MTHK_GRAPHS: ShowOperatingProfitGraph();
break;
2042 case MTHK_LEAGUE: ShowCompanyLeagueTable();
break;
2043 case MTHK_INDUSTRIES: ShowBuildIndustryWindow();
break;
2048 case MTHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2049 case MTHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2054 case MTHK_BUILD_TREES: ShowBuildTreesToolbar();
break;
2055 case MTHK_MUSIC: ShowMusicWindow();
break;
2057 case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2064 #ifdef ENABLE_NETWORK 2065 case MTHK_CLIENT_LIST:
if (
_networking) ShowClientList();
break;
2076 case CBF_PLACE_SIGN:
2080 case CBF_PLACE_LANDINFO:
2084 default: NOT_REACHED();
2111 if (this->IsWidgetLowered(i)) {
2112 this->RaiseWidget(i);
2113 this->SetWidgetDirty(i);
2125 if (!gui_scope)
return;
2132 const uint16 _maintoolbar_pause_keys[] = {WKC_F1, WKC_PAUSE, 0};
2133 const uint16 _maintoolbar_zoomin_keys[] = {WKC_NUM_PLUS,
WKC_EQUALS, WKC_SHIFT |
WKC_EQUALS, WKC_SHIFT | WKC_F5, 0};
2134 const uint16 _maintoolbar_zoomout_keys[] = {WKC_NUM_MINUS,
WKC_MINUS, WKC_SHIFT |
WKC_MINUS, WKC_SHIFT | WKC_F6, 0};
2135 const uint16 _maintoolbar_smallmap_keys[] = {WKC_F4,
'M', 0};
2137 static Hotkey maintoolbar_hotkeys[] = {
2138 Hotkey(_maintoolbar_pause_keys,
"pause", MTHK_PAUSE),
2139 Hotkey((uint16)0,
"fastforward", MTHK_FASTFORWARD),
2140 Hotkey(WKC_F2,
"settings", MTHK_SETTINGS),
2141 Hotkey(WKC_F3,
"saveload", MTHK_SAVEGAME),
2142 Hotkey((uint16)0,
"load_game", MTHK_LOADGAME),
2143 Hotkey(_maintoolbar_smallmap_keys,
"smallmap", MTHK_SMALLMAP),
2144 Hotkey(WKC_F5,
"town_list", MTHK_TOWNDIRECTORY),
2145 Hotkey(WKC_F6,
"subsidies", MTHK_SUBSIDIES),
2146 Hotkey(WKC_F7,
"station_list", MTHK_STATIONS),
2147 Hotkey(WKC_F8,
"finances", MTHK_FINANCES),
2148 Hotkey(WKC_F9,
"companies", MTHK_COMPANIES),
2149 Hotkey((uint16)0,
"story_book", MTHK_STORY),
2150 Hotkey((uint16)0,
"goal_list", MTHK_GOAL),
2151 Hotkey(WKC_F10,
"graphs", MTHK_GRAPHS),
2152 Hotkey(WKC_F11,
"league", MTHK_LEAGUE),
2153 Hotkey(WKC_F12,
"industry_list", MTHK_INDUSTRIES),
2154 Hotkey(WKC_SHIFT | WKC_F1,
"train_list", MTHK_TRAIN_LIST),
2155 Hotkey(WKC_SHIFT | WKC_F2,
"roadveh_list", MTHK_ROADVEH_LIST),
2156 Hotkey(WKC_SHIFT | WKC_F3,
"ship_list", MTHK_SHIP_LIST),
2157 Hotkey(WKC_SHIFT | WKC_F4,
"aircraft_list", MTHK_AIRCRAFT_LIST),
2158 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTHK_ZOOM_IN),
2159 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTHK_ZOOM_OUT),
2160 Hotkey(WKC_SHIFT | WKC_F7,
"build_rail", MTHK_BUILD_RAIL),
2161 Hotkey(WKC_SHIFT | WKC_F8,
"build_road", MTHK_BUILD_ROAD),
2162 Hotkey(WKC_SHIFT | WKC_F9,
"build_docks", MTHK_BUILD_DOCKS),
2163 Hotkey(WKC_SHIFT | WKC_F10,
"build_airport", MTHK_BUILD_AIRPORT),
2164 Hotkey(WKC_SHIFT | WKC_F11,
"build_trees", MTHK_BUILD_TREES),
2165 Hotkey(WKC_SHIFT | WKC_F12,
"music", MTHK_MUSIC),
2166 Hotkey((uint16)0,
"ai_debug", MTHK_AI_DEBUG),
2167 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTHK_SMALL_SCREENSHOT),
2168 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT),
2169 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT),
2170 Hotkey((uint16)0,
"giant_screenshot", MTHK_GIANT_SCREENSHOT),
2171 Hotkey(WKC_CTRL | WKC_ALT |
'C',
"cheats", MTHK_CHEATS),
2172 Hotkey(
'L',
"terraform", MTHK_TERRAFORM),
2173 Hotkey(
'V',
"extra_viewport", MTHK_EXTRA_VIEWPORT),
2174 #ifdef ENABLE_NETWORK 2175 Hotkey((uint16)0,
"client_list", MTHK_CLIENT_LIST),
2177 Hotkey((uint16)0,
"sign_list", MTHK_SIGN_LIST),
2180 HotkeyList MainToolbarWindow::hotkeys(
"maintoolbar", maintoolbar_hotkeys);
2185 static const SpriteID toolbar_button_sprites[] = {
2187 SPR_IMG_FASTFORWARD,
2193 SPR_IMG_COMPANY_LIST,
2194 SPR_IMG_COMPANY_FINANCE,
2195 SPR_IMG_COMPANY_GENERAL,
2199 SPR_IMG_COMPANY_LEAGUE,
2204 SPR_IMG_AIRPLANESLIST,
2211 SPR_IMG_LANDSCAPING,
2215 SPR_IMG_SWITCH_TOOLBAR,
2237 static const NWidgetPart _nested_toolbar_normal_widgets[] = {
2245 _nested_toolbar_normal_widgets,
lengthof(_nested_toolbar_normal_widgets),
2246 &MainToolbarWindow::hotkeys
2252 static ToolbarButtonProc *
const _scen_toolbar_button_procs[] = {
2259 ToolbarScenDateBackward,
2260 ToolbarScenDateForward,
2261 ToolbarScenMapTownDir,
2263 ToolbarZoomOutClick,
2266 ToolbarScenGenIndustry,
2267 ToolbarScenBuildRoad,
2268 ToolbarScenBuildDocks,
2269 ToolbarScenPlantTrees,
2270 ToolbarScenPlaceSign,
2285 enum MainToolbarEditorHotkeys {
2299 MTEHK_SMALL_SCREENSHOT,
2300 MTEHK_ZOOMEDIN_SCREENSHOT,
2301 MTEHK_DEFAULTZOOM_SCREENSHOT,
2302 MTEHK_GIANT_SCREENSHOT,
2307 MTEHK_EXTRA_VIEWPORT,
2313 this->InitNested(0);
2331 this->DrawWidgets();
2343 int height = r.bottom - r.top;
2346 DrawString(r.left, r.right, (height + 1) / 2, STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR, TC_FROMSTRING,
SA_HOR_CENTER);
2372 if (_game_mode == GM_MENU)
return;
2391 case MTEHK_PAUSE: ToolbarPauseClick(
this);
break;
2395 case MTEHK_GENLAND: ToolbarScenGenLand(
this);
break;
2396 case MTEHK_GENTOWN: ToolbarScenGenTown(
this);
break;
2397 case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(
this);
break;
2398 case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(
this);
break;
2399 case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(
this);
break;
2400 case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(
this);
break;
2401 case MTEHK_SIGN: cbf = ToolbarScenPlaceSign(
this);
break;
2402 case MTEHK_MUSIC: ShowMusicWindow();
break;
2403 case MTEHK_LANDINFO: cbf = PlaceLandBlockInfo();
break;
2404 case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2408 case MTEHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2409 case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2422 case CBF_PLACE_SIGN:
2426 case CBF_PLACE_LANDINFO:
2430 default: NOT_REACHED();
2466 if (!gui_scope)
return;
2473 if (str == NULL)
return;
2490 static Hotkey scenedit_maintoolbar_hotkeys[] = {
2491 Hotkey(_maintoolbar_pause_keys,
"pause", MTEHK_PAUSE),
2492 Hotkey((uint16)0,
"fastforward", MTEHK_FASTFORWARD),
2493 Hotkey(WKC_F2,
"settings", MTEHK_SETTINGS),
2494 Hotkey(WKC_F3,
"saveload", MTEHK_SAVEGAME),
2495 Hotkey(WKC_F4,
"gen_land", MTEHK_GENLAND),
2496 Hotkey(WKC_F5,
"gen_town", MTEHK_GENTOWN),
2497 Hotkey(WKC_F6,
"gen_industry", MTEHK_GENINDUSTRY),
2498 Hotkey(WKC_F7,
"build_road", MTEHK_BUILD_ROAD),
2499 Hotkey(WKC_F8,
"build_docks", MTEHK_BUILD_DOCKS),
2500 Hotkey(WKC_F9,
"build_trees", MTEHK_BUILD_TREES),
2501 Hotkey(WKC_F10,
"build_sign", MTEHK_SIGN),
2502 Hotkey(WKC_F11,
"music", MTEHK_MUSIC),
2503 Hotkey(WKC_F12,
"land_info", MTEHK_LANDINFO),
2504 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTEHK_SMALL_SCREENSHOT),
2505 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT),
2506 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT),
2507 Hotkey((uint16)0,
"giant_screenshot", MTEHK_GIANT_SCREENSHOT),
2508 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTEHK_ZOOM_IN),
2509 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTEHK_ZOOM_OUT),
2510 Hotkey(
'L',
"terraform", MTEHK_TERRAFORM),
2511 Hotkey(
'M',
"smallmap", MTEHK_SMALLMAP),
2512 Hotkey(
'V',
"extra_viewport", MTEHK_EXTRA_VIEWPORT),
2515 HotkeyList ScenarioEditorToolbarWindow::hotkeys(
"scenedit_maintoolbar", scenedit_maintoolbar_hotkeys);
2517 static const NWidgetPart _nested_toolb_scen_inner_widgets[] = {
2551 static NWidgetBase *MakeScenarioToolbar(
int *biggest_index)
2556 static const NWidgetPart _nested_toolb_scen_widgets[] = {
2564 _nested_toolb_scen_widgets,
lengthof(_nested_toolb_scen_widgets),
2565 &ScenarioEditorToolbarWindow::hotkeys
2574 if (_game_mode == GM_EDITOR) {
virtual void OnPlaceObjectAbort()
The user cancelled a tile highlight mode that has been set.
EventState
State of handling an event.
bool DoZoomInOutWindow(ZoomStateChange how, Window *w)
Zooms a viewport in a window in or out.
Functions related to OTTD's strings.
Window * ShowBuildRailToolbar(RailType railtype)
Open the build rail toolbar window for a specific rail type.
Functions/types related to NewGRF debugging.
GameSettings _settings_game
Game settings of a running game or the scenario editor.
used in multiplayer to create a new companies etc.
bool _networking
are we in networking mode?
void NetworkSendCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback, const char *text, CompanyID company)
Prepare a DoCommand to be send over the network.
Horizontally center the text.
void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectMode mode)
Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen...
GRFConfig * _grfconfig
First item in list of current GRF set up.
byte landscape
the landscape we're currently in
void SetWidgetLoweredState(byte widget_index, bool lowered_stat)
Sets the lowered/raised status of a widget.
RailType
Enumeration for all possible railtypes.
All data for a single hotkey.
High level window description.
void ShowSpriteAlignerWindow()
Show the window for aligning sprites.
TownFoundingByte found_town
town founding,
byte _display_opt
What do we want to draw/do?
EconomySettings economy
settings to change the economy
WindowFlags flags
Window flags.
Zoom out (get helicopter view).
int height
Screen height of the viewport.
static Titem * Get(size_t index)
Returns Titem with given index.
void HandleZoomMessage(Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out)
Update the status of the zoom-buttons according to the zoom-level of the viewport.
Hotkey related functions.
Functions related to dates.
GUIs related to networking.
static T ToggleBit(T &x, const uint8 y)
Toggles a bit in a variable.
Window for configuring the AIs
void ShowSmallMap()
Show the smallmap window.
Functions/types related to the road GUIs.
Window * FindWindowById(WindowClass cls, WindowNumber number)
Find a window by its class and window number.
The passed event is not handled.
int PositionMainToolbar(Window *w)
(Re)position main toolbar window at the screen.
void ShowQueryString(StringID str, StringID caption, uint maxsize, Window *parent, CharSetFilter afilter, QueryStringFlags flags)
Show a query popup window with a textbox in it.
void ShowDropDownList(Window *w, const DropDownList *list, int selected, int button, uint width, bool auto_width, bool instant_close)
Show a drop down list.
virtual void OnTick()
Called once per (game) tick.
Window * ShowSignList()
Open the sign list window.
Sign list; Window numbers:
Window * ShowBuildRoadToolbar(RoadType roadtype)
Open the build road toolbar window.
Functions related to vehicles.
void DrawCompanyIcon(CompanyID c, int x, int y)
Draw the icon of a company.
void ShowGoalsList(CompanyID company)
Open a goal list window.
virtual void OnDropdownSelect(int widget, int index)
A dropdown option associated to this window has been selected.
Window * ShowBuildDocksToolbar()
Open the build water toolbar window.
static bool IsInsideBS(const T x, const uint base, const uint size)
Checks if a value is between a window started at some base point.
void NetworkClientRequestMove(CompanyID company_id, const char *pass)
Notify the server of this client wanting to be moved to another company.
void NetworkServerDoMove(ClientID client_id, CompanyID company_id)
Handle the tid-bits of moving a client from one company to another.
Display signs, station names and waypoint names of opponent companies. Buoys and oilrig-stations are ...
Also draw details of track and roads.
void ShowAIConfigWindow()
Open the AI config window.
Zoom in (get more detailed view).
The client is spectating.
bool CanBuildVehicleInfrastructure(VehicleType type)
Check whether we can build infrastructure for the given vehicle type.
void ReInit(int rx=0, int ry=0)
Re-initialize a window, and optionally change its size.
Stuff related to the text buffer GUI.
Functions to make screenshots.
bool NetworkMaxSpectatorsReached()
Check if max_spectatos has been reached on the server (local check only).
#define CLRBITS(x, y)
Clears several bits in a variable.
virtual void OnPlaceObject(Point pt, TileIndex tile)
The user clicked some place on the map when a tile highlight mode has been set.
int32 Year
Type for the year, note: 0 based, i.e. starts at the year 0.
Functions related to signs.
RoadType
The different roadtypes we support.
static T max(const T a, const T b)
Returns the maximum of two values.
Fully zoomed in screenshot of the visible area.
Functions related to the vehicle's GUIs.
Functions, definitions and such used only by the GUI.
Servers always have this ID.
bool _left_button_clicked
Is left mouse button clicked?
static const Year DEF_START_YEAR
The default starting year.
T * Append(uint to_add=1)
Append an item and return it.
CompanyByte _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
void ShowLandInfo(TileIndex tile)
Show land information window.
Functions related to (drawing on) viewports.
void SetupScreenshotViewport(ScreenshotType t, ViewPort *vp)
Configure a ViewPort for rendering (a part of) the map into a screenshot.
Declaration of linkgraph overlay GUI.
void ShiftDates(int interval)
Shift all dates (join dates and edge annotations) of link graphs and link graph jobs by the number of...
Data structure for an opened window.
virtual void OnInvalidateData(int data=0, bool gui_scope=true)
Some data on this window has become invalid.
void InvalidateWindowClassesData(WindowClass cls, int data, bool gui_scope)
Mark window data of all windows of a given class as invalid (in need of re-computing) Note that by de...
Bottom offset of image in the button.
Main window; Window numbers:
void SetDate(Date date, DateFract fract)
Set the date.
enable the 'Default' button ("\0" is returned)
virtual EventState OnHotkey(int hotkey)
A hotkey has been pressed.
void ShowCompanyStations(CompanyID company)
Opens window with list of company's stations.
virtual bool IsPrimaryVehicle() const
Whether this is the primary vehicle in the chain.
void ShowCompany(CompanyID company)
Show the window with the overview of the company.
const byte * GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count) const
Get the arrangement of the buttons for the toolbar.
SoundSettings sound
sound effect settings
void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallbackProc *callback)
Show a modal confirmation window with standard 'yes' and 'no' buttons The window is aligned to the ce...
GUI functions related to the news.
static LinkGraphSchedule instance
Static instance of LinkGraphSchedule.
VehicleType
Available vehicle types.
void ShowMessageHistory()
Display window with news messages history.
#define FONT_HEIGHT_NORMAL
Height of characters in the normal (FS_NORMAL) font.
Simple vector template class, with automatic delete.
ClientID _network_own_client_id
Our client identifier.
ClientSettings _settings_client
The current settings for this game.
bool masked
Masked and unselectable item.
Definition of base types and functions in a cross-platform compatible way.
A number of safeguards to prevent using unsafe methods.
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
List of hotkeys for a window.
rectangle (stations, depots, ...)
First company, same as owner.
static uint CeilDiv(uint a, uint b)
Computes ceil(a / b) for non-negative a and b.
Drop down list entry for showing a checked/unchecked toggle item.
GUI functions related to transparency.
GUI Functions related to companies.
void ShowLastNewsMessage()
Show previous news item.
byte misc_flags
Miscellaneous flags.
GUI related functions in the console.
void ShowCheatWindow()
Open cheat window.
virtual void OnClick(Point pt, int widget, int click_count)
A click with the left mouse button has been made on the window.
int DrawString(int left, int right, int top, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
Draw string, possibly truncated to make it fit in its allocated space.
Functions related to cheating.
Basic functions/variables used all over the place.
bool DoCommandP(const CommandContainer *container, bool my_cmd)
Shortcut for the long DoCommandP when having a container with the data.
static void ToggleTransparency(TransparencyOption to)
Toggle the transparency option bit.
#define lengthof(x)
Return the length of an fixed size array.
PauseModeByte _pause_mode
The current pause mode.
Window * ShowBuildAirToolbar()
Open the build airport toolbar window.
Functions related to sound.
uint32 StringID
Numeric value that represents a string, independent of the selected language.
Maximum number of companies.
Window * ShowAIDebugWindow(CompanyID show_company)
Open the AI debug window and select the given company.
DropDownList * GetRailTypeDropDownList(bool for_replacement, bool all_option)
Create a drop down list for all the rail types of the local company.
static T Clamp(const T a, const T min, const T max)
Clamp a value between an interval.
void SetDirty() const
Mark entire window as dirty (in need of re-paint)
void ShowExtraViewPortWindow(TileIndex tile=INVALID_TILE)
Show a new Extra Viewport window.
bool MakeScreenshot(ScreenshotType t, const char *name)
Make an actual screenshot.
bool newgrf_developer_tools
activate NewGRF developer tools and allow modifying NewGRFs in an existing game
void ShowHighscoreTable(int difficulty=SP_CUSTOM, int8 rank=-1)
Show the highscore table for a given difficulty.
Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize)
Return the string dimension in pixels.
static const uint8 PC_VERY_DARK_RED
Almost-black red palette colour.
Draw only every second pixel, used for greying-out.
No window, redirects to WC_MAIN_WINDOW.
static const uint8 PC_DARK_RED
Dark red palette colour.
Functions related to companies.
void ShowNewGRFSettings(bool editable, bool show_params, bool exec_changes, GRFConfig **config)
Setup the NewGRF gui.
static T ClrBit(T &x, const uint8 y)
Clears a bit in a variable.
Declaration of functions and types defined in highscore.h and highscore_gui.h.
GUISettings gui
settings related to the GUI
Base class for all vehicles.
Data structure for viewport, display of a part of the world.
uint32 SpriteID
The number of a sprite, without mapping bits and colourtables.
static bool StrEmpty(const char *s)
Check if a string buffer is empty.
Declarations for savegames operations.
Zoomed to default zoom level screenshot of the visible area.
uint32 TileIndex
The index/ID of a Tile.
void ShowSaveLoadDialog(AbstractFileType abstract_filetype, SaveLoadOperation fop)
Launch save/load dialog in the given mode.
static size_t GetNumItems()
Returns number of valid items in the pool.
TextDirection _current_text_dir
Text direction of the currently selected language.
int result
Result code to return to window on selection.
This window won't get focus/make any other window lose focus when click.
void ShowIndustryCargoesWindow()
Open the industry and cargoes window with an industry.
Top offset of image in the button.
OwnerByte owner
Which company owns the vehicle?
RoadTypes avail_roadtypes
Road types available to this company.
void ShowLinkGraphLegend()
Open a link graph legend window.
Do not add shading to this text colour.
Container for the 'normal' main toolbar.
Drop down list entry for showing a company entry, with companies 'blob'.
virtual void OnPaint()
The window must be repainted.
bool confirm
Play sound effect on succesful constructions or other actions.
virtual void OnTimeout()
Called when this window's timeout has been reached.
Base functions for all Games.
Functions related to commands.
bool NetworkMaxCompaniesReached()
Check if max_companies has been reached on the server (local check only).
Network functions used by other parts of OpenTTD.
bool _network_server
network-server is active
void ShowStoryBook(CompanyID company, uint16 page_id=INVALID_STORY_PAGE)
Raise or create the story book window for company, at page page_id.
Main toolbar (the long bar at the top); Window numbers:
Coordinates of a point in 2D.
Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom)
Get the size of a sprite.
Perform palette animation.
void ShowCompanyFinances(CompanyID company)
Open the finances window of a company.
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-NULL) Titem.
void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num)
Change the cursor and mouse click/drag handling to a mode for performing special operations like tile...
virtual void FindWindowPlacementAndResize(int def_width, int def_height)
Resize window towards the default size.
bool UserIsAllowedToChangeNewGRFs() const
Returns true when the user has sufficient privileges to edit newgrfs on a running game...
static const Year MIN_YEAR
The absolute minimum & maximum years in OTTD.
int32 Date
The type to store our dates in.
void HandleButtonClick(byte widget)
Do all things to make a button look clicked and mark it to be unclicked in a few ticks.
virtual void FindWindowPlacementAndResize(int def_width, int def_height)
Resize window towards the default size.
void ShowGameSettings()
Open advanced settings window.
Offset at right to draw the frame rectangular area.
Window * ShowBuildRoadScenToolbar()
Show the road building toolbar in the scenario editor.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
#define FOR_ALL_VEHICLES(var)
Iterate over all vehicles.
void ShowExtraViewPortWindowForTileUnderCursor()
Show a new Extra Viewport window.
GameCreationSettings game_creation
settings used during the creation of a game (map)
void IConsoleSwitch()
Toggle in-game console between opened and closed.
void ResetObjectToPlace()
Reset the cursor and mouse mode handling back to default (normal cursor, only clicking in windows)...
Specification of a rectangle with absolute coordinates of all edges.
void ShowGameOptions()
Open the game options window.
The passed event is handled.
Text is written right-to-left by default.
Date ConvertYMDToDate(Year year, Month month, Day day)
Converts a tuple of Year, Month and Day to a Date.
Road vehicle is a tram/light rail vehicle.
Functions related to tile highlights.
Owner
Enum for all companies/owners.
Window functions not directly related to making/drawing windows.
Manually align the window (so no automatic location finding)
GUI functions that shouldn't be here.
Window * ShowBuildDocksScenToolbar()
Open the build water toolbar window for the scenario editor.
void PlaceProc_Sign(TileIndex tile)
PlaceProc function, called when someone pressed the button if the sign-tool is selected.
uint8 timeout_timer
Timer value of the WF_TIMEOUT for flags.
byte climates
Climates supported by the engine.
Date _date
Current date in days (day counter)
Window white border counter bit mask.
Hack, used to update the button status.
Base list item class from which others are derived.
VehicleTypeByte type
Type of vehicle.
Dimensions (a width and height) of a rectangle in 2D.
bool click_beep
Beep on a random selection of buttons.
Offset at left to draw the frame rectangular area.
static const Year MAX_YEAR
MAX_YEAR, nicely rounded value of the number of years that can be encoded in a single 32 bits date...
void CheckBlitter()
Check whether we still use the right blitter, or use another (better) one.
void ShowTransparencyToolbar()
Show the transparency toolbar.
Year starting_year
starting date
static bool IsTransparencySet(TransparencyOption to)
Check if the transparency option bit is set and if we aren't in the game menu (there's never transpar...
void MarkWholeScreenDirty()
This function mark the whole screen as dirty.
AutoDeleteSmallVector< const DropDownListItem *, 4 > DropDownList
A drop down list is a collection of drop down list items.
ScreenshotType
Type of requested screenshot.
static void SetDParam(uint n, uint64 v)
Set a string parameter v at index n in the global string parameter array.
int width
Screen width of the viewport.