104 return DropDownListStringItem::Width() + this->checkmark_width;
107 void Draw(
int left,
int right,
int top,
int bottom,
bool sel,
int bg_colour)
const 134 bool Selectable()
const 144 return GetStringBoundingBox(STR_COMPANY_NAME_COMPANY_NUM).width + this->icon_size.width + this->lock_size.width + 6;
147 uint Height(uint width)
const 152 void Draw(
int left,
int right,
int top,
int bottom,
bool sel,
int bg_colour)
const 160 int icon_offset = (bottom - top - icon_size.height) / 2;
162 int lock_offset = (bottom - top - lock_size.height) / 2;
165 #ifdef ENABLE_NETWORK 177 col = sel ? TC_WHITE : TC_BLACK;
179 DrawString(left +
WD_FRAMERECT_LEFT + (rtl ? 3 + this->lock_size.width : 3 + this->icon_size.width), right -
WD_FRAMERECT_RIGHT - (rtl ? 3 + this->icon_size.width : 3 + this->lock_size.width), top + text_offset, STR_COMPANY_NAME_COMPANY_NUM, col);
206 for (
int i = 0; i < count; i++) {
230 #ifdef ENABLE_NETWORK 271 return CBF_PLACE_SIGN;
295 _fast_forward ^=
true;
310 OME_SHOW_STATIONNAMES,
311 OME_SHOW_WAYPOINTNAMES,
313 OME_SHOW_COMPETITOR_SIGNS,
316 OME_TRANSPARENTBUILDINGS,
317 OME_SHOW_STATIONSIGNS,
372 case OME_SHOW_COMPETITOR_SIGNS:
389 SLEME_SAVE_SCENARIO = 0,
391 SLEME_SAVE_HEIGHTMAP,
392 SLEME_LOAD_HEIGHTMAP,
441 if (_game_mode == GM_EDITOR) {
447 case SLEME_EXIT_TOINTRO: AskExitToGameMenu();
break;
448 case SLEME_EXIT_GAME: HandleExitGameRequest();
break;
454 case SLNME_EXIT_TOINTRO: AskExitToGameMenu();
break;
455 case SLNME_EXIT_GAME: HandleExitGameRequest();
break;
463 enum MapMenuEntries {
464 MME_SHOW_SMALLMAP = 0,
465 MME_SHOW_EXTRAVIEWPORTS,
468 MME_SHOW_TOWNDIRECTORY,
469 MME_SHOW_INDUSTRYDIRECTORY,
508 case MME_SHOW_TOWNDIRECTORY: ShowTownDirectory();
break;
509 case MME_SHOW_INDUSTRYDIRECTORY: ShowIndustryDirectory();
break;
531 case 0: ShowTownDirectory();
break;
556 case 0: ShowSubsidiesList();
break;
617 #ifdef ENABLE_NETWORK 704 case 0: ShowOperatingProfitGraph();
break;
705 case 1: ShowIncomeGraph();
break;
706 case 2: ShowDeliveredCargoGraph();
break;
707 case 3: ShowPerformanceHistoryGraph();
break;
708 case 4: ShowCompanyValueGraph();
break;
709 case 5: ShowCargoPaymentRates();
break;
711 case 6: ShowCompanyLeagueTable();
break;
712 case 7: ShowPerformanceRatingDetail();
break;
734 case 0: ShowCompanyLeagueTable();
break;
735 case 1: ShowPerformanceRatingDetail();
break;
759 case 0: ShowIndustryDirectory();
break;
761 case 2: ShowBuildIndustryWindow();
break;
897 _last_built_railtype = (
RailType)index;
914 FOR_ALL_ENGINES_OF_TYPE(e,
VEH_ROAD) {
934 _last_built_roadtype = (
RoadType)index;
997 case 1: ShowBuildTreesToolbar();
break;
998 case 2:
return SelectSignTool();
1056 return CBF_PLACE_LANDINFO;
1066 static void MenuClickSmallScreenshot()
1090 if ((uint64)vp.
width * (uint64)vp.
height > 8192 * 8192) {
1111 extern bool _draw_bounding_boxes;
1114 _draw_bounding_boxes = !_draw_bounding_boxes;
1128 extern bool _draw_dirty_blocks;
1131 _draw_dirty_blocks = !_draw_dirty_blocks;
1157 case 0:
return PlaceLandBlockInfo();
1160 case 4: MenuClickSmallScreenshot();
break;
1165 case 9: ShowAboutWindow();
break;
1177 if (_toolbar_mode != TB_LOWER) {
1178 _toolbar_mode = TB_LOWER;
1180 _toolbar_mode = TB_UPPER;
1242 ShowFoundTownWindow();
1250 ShowBuildIndustryWindow();
1274 ShowBuildTreesToolbar();
1282 return SelectSignTool();
1292 static MenuClickedProc *
const _menu_clicked_procs[] = {
1347 this->smallest_x = 0;
1348 this->smallest_y = 0;
1357 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1358 child_wid->SetupSmallestSize(w, init_array);
1359 this->smallest_y =
max(this->smallest_y, child_wid->smallest_y + child_wid->padding_top + child_wid->padding_bottom);
1360 if (this->IsButton(child_wid->type)) {
1362 this->smallest_x =
max(this->smallest_x, child_wid->smallest_x + child_wid->padding_left + child_wid->padding_right);
1369 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1370 child_wid->current_y = this->smallest_y;
1371 if (!this->IsButton(child_wid->type)) {
1372 child_wid->current_x = child_wid->smallest_x;
1380 assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
1384 this->current_x = given_width;
1385 this->current_y = given_height;
1388 memset(this->visible, 0,
sizeof(this->visible));
1389 uint arrangable_count, button_count, spacer_count;
1390 const byte *arrangement = GetButtonArrangement(given_width, arrangable_count, button_count, spacer_count);
1391 for (uint i = 0; i < arrangable_count; i++) {
1392 this->visible[arrangement[i]] =
true;
1397 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1399 widgets[((
NWidgetCore*)child_wid)->index] = child_wid;
1404 uint spacer_space =
max(0, (
int)given_width - (
int)(button_count * this->smallest_x));
1405 uint button_space = given_width - spacer_space;
1410 const byte *cur_wid = rtl ? &arrangement[arrangable_count - 1] : arrangement;
1411 for (uint i = 0; i < arrangable_count; i++) {
1414 if (spacer_space != 0) {
1416 if (possible_spacer != NULL && possible_spacer->
type ==
NWID_SPACER) {
1417 uint add = spacer_space / (spacer_count - spacer_i);
1419 spacer_space -= add;
1425 if (this->IsButton(child_wid->
type)) {
1426 child_wid->
current_x = button_space / (button_count - button_i);
1448 for (
NWidgetBase *child_wid = rtl ? this->tail : this->head; child_wid != NULL; child_wid = rtl ? child_wid->
prev : child_wid->
next) {
1450 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1458 if (!
IsInsideBS(x, this->pos_x, this->current_x) || !
IsInsideBS(y, this->pos_y, this->current_y))
return NULL;
1460 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1462 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1465 if (nwid != NULL)
return nwid;
1478 virtual const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const = 0;
1483 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1485 static const uint SMALLEST_ARRANGEMENT = 14;
1486 static const uint BIGGEST_ARRANGEMENT = 20;
1494 static const byte arrange14[] = {
1525 static const byte arrange15[] = {
1558 static const byte arrange16[] = {
1593 static const byte arrange17[] = {
1630 static const byte arrange18[] = {
1669 static const byte arrange19[] = {
1710 static const byte arrange20[] = {
1753 static const byte arrange_all[] = {
1786 uint full_buttons =
max(
CeilDiv(width, this->smallest_x), SMALLEST_ARRANGEMENT);
1787 if (full_buttons > BIGGEST_ARRANGEMENT) {
1788 button_count = arrangable_count =
lengthof(arrange_all);
1789 spacer_count = this->spacers;
1794 static const byte *
const arrangements[] = { arrange14, arrange15, arrange16, arrange17, arrange18, arrange19, arrange20 };
1796 button_count = arrangable_count = full_buttons;
1797 spacer_count = this->spacers;
1798 return arrangements[full_buttons - SMALLEST_ARRANGEMENT] + ((_toolbar_mode == TB_LOWER) ? full_buttons : 0);
1804 uint panel_widths[2];
1812 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1813 if (child_wid->type ==
NWID_SPACER || this->IsButton(child_wid->type))
continue;
1815 assert(i <
lengthof(this->panel_widths));
1816 this->panel_widths[i++] = child_wid->current_x;
1821 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1823 static const byte arrange_all[] = {
1843 static const byte arrange_nopanel[] = {
1862 static const byte arrange_switch[] = {
1886 uint min_full_width = (
lengthof(arrange_all) -
lengthof(this->panel_widths)) * this->smallest_x + this->panel_widths[0] + this->panel_widths[1];
1887 if (width >= min_full_width) {
1888 width -= this->panel_widths[0] + this->panel_widths[1];
1889 arrangable_count =
lengthof(arrange_all);
1890 button_count = arrangable_count - 2;
1891 spacer_count = this->spacers;
1896 uint min_small_width = (
lengthof(arrange_switch) -
lengthof(this->panel_widths)) * this->smallest_x / 2 + this->panel_widths[1];
1897 if (width > min_small_width) {
1898 width -= this->panel_widths[1];
1899 arrangable_count =
lengthof(arrange_nopanel);
1900 button_count = arrangable_count - 1;
1901 spacer_count = this->spacers - 1;
1902 return arrange_nopanel;
1906 width -= this->panel_widths[1];
1907 arrangable_count =
lengthof(arrange_switch) / 2;
1908 button_count = arrangable_count - 1;
1910 return arrange_switch + ((_toolbar_mode == TB_LOWER) ? arrangable_count : 0);
1918 static ToolbarButtonProc *
const _toolbar_button_procs[] = {
1925 ToolbarSubsidiesClick,
1926 ToolbarStationsClick,
1927 ToolbarFinancesClick,
1928 ToolbarCompaniesClick,
1933 ToolbarIndustryClick,
1939 ToolbarZoomOutClick,
1940 ToolbarBuildRailClick,
1941 ToolbarBuildRoadClick,
1942 ToolbarBuildWaterClick,
1943 ToolbarBuildAirClick,
1946 ToolbarNewspaperClick,
1951 enum MainToolbarHotkeys {
1981 MTHK_SMALL_SCREENSHOT,
1982 MTHK_ZOOMEDIN_SCREENSHOT,
1983 MTHK_DEFAULTZOOM_SCREENSHOT,
1984 MTHK_GIANT_SCREENSHOT,
1987 MTHK_EXTRA_VIEWPORT,
1998 this->InitNested(0);
2030 this->DrawWidgets();
2035 if (_game_mode != GM_MENU && !this->IsWidgetDisabled(widget)) _toolbar_button_procs[widget](
this);
2047 case MTHK_PAUSE: ToolbarPauseClick(
this);
break;
2053 case MTHK_TOWNDIRECTORY: ShowTownDirectory();
break;
2054 case MTHK_SUBSIDIES: ShowSubsidiesList();
break;
2060 case MTHK_GRAPHS: ShowOperatingProfitGraph();
break;
2061 case MTHK_LEAGUE: ShowCompanyLeagueTable();
break;
2062 case MTHK_INDUSTRIES: ShowBuildIndustryWindow();
break;
2067 case MTHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2068 case MTHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2073 case MTHK_BUILD_TREES: ShowBuildTreesToolbar();
break;
2074 case MTHK_MUSIC: ShowMusicWindow();
break;
2076 case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2083 #ifdef ENABLE_NETWORK 2084 case MTHK_CLIENT_LIST:
if (
_networking) ShowClientList();
break;
2095 case CBF_PLACE_SIGN:
2099 case CBF_PLACE_LANDINFO:
2103 default: NOT_REACHED();
2114 if (!this->timer.
Elapsed(delta_ms))
return;
2133 if (this->IsWidgetLowered(i)) {
2134 this->RaiseWidget(i);
2135 this->SetWidgetDirty(i);
2147 if (!gui_scope)
return;
2154 const uint16 _maintoolbar_pause_keys[] = {WKC_F1, WKC_PAUSE, 0};
2155 const uint16 _maintoolbar_zoomin_keys[] = {WKC_NUM_PLUS,
WKC_EQUALS, WKC_SHIFT |
WKC_EQUALS, WKC_SHIFT | WKC_F5, 0};
2156 const uint16 _maintoolbar_zoomout_keys[] = {WKC_NUM_MINUS,
WKC_MINUS, WKC_SHIFT |
WKC_MINUS, WKC_SHIFT | WKC_F6, 0};
2157 const uint16 _maintoolbar_smallmap_keys[] = {WKC_F4,
'M', 0};
2159 static Hotkey maintoolbar_hotkeys[] = {
2160 Hotkey(_maintoolbar_pause_keys,
"pause", MTHK_PAUSE),
2161 Hotkey((uint16)0,
"fastforward", MTHK_FASTFORWARD),
2162 Hotkey(WKC_F2,
"settings", MTHK_SETTINGS),
2163 Hotkey(WKC_F3,
"saveload", MTHK_SAVEGAME),
2164 Hotkey((uint16)0,
"load_game", MTHK_LOADGAME),
2165 Hotkey(_maintoolbar_smallmap_keys,
"smallmap", MTHK_SMALLMAP),
2166 Hotkey(WKC_F5,
"town_list", MTHK_TOWNDIRECTORY),
2167 Hotkey(WKC_F6,
"subsidies", MTHK_SUBSIDIES),
2168 Hotkey(WKC_F7,
"station_list", MTHK_STATIONS),
2169 Hotkey(WKC_F8,
"finances", MTHK_FINANCES),
2170 Hotkey(WKC_F9,
"companies", MTHK_COMPANIES),
2171 Hotkey((uint16)0,
"story_book", MTHK_STORY),
2172 Hotkey((uint16)0,
"goal_list", MTHK_GOAL),
2173 Hotkey(WKC_F10,
"graphs", MTHK_GRAPHS),
2174 Hotkey(WKC_F11,
"league", MTHK_LEAGUE),
2175 Hotkey(WKC_F12,
"industry_list", MTHK_INDUSTRIES),
2176 Hotkey(WKC_SHIFT | WKC_F1,
"train_list", MTHK_TRAIN_LIST),
2177 Hotkey(WKC_SHIFT | WKC_F2,
"roadveh_list", MTHK_ROADVEH_LIST),
2178 Hotkey(WKC_SHIFT | WKC_F3,
"ship_list", MTHK_SHIP_LIST),
2179 Hotkey(WKC_SHIFT | WKC_F4,
"aircraft_list", MTHK_AIRCRAFT_LIST),
2180 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTHK_ZOOM_IN),
2181 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTHK_ZOOM_OUT),
2182 Hotkey(WKC_SHIFT | WKC_F7,
"build_rail", MTHK_BUILD_RAIL),
2183 Hotkey(WKC_SHIFT | WKC_F8,
"build_road", MTHK_BUILD_ROAD),
2184 Hotkey(WKC_SHIFT | WKC_F9,
"build_docks", MTHK_BUILD_DOCKS),
2185 Hotkey(WKC_SHIFT | WKC_F10,
"build_airport", MTHK_BUILD_AIRPORT),
2186 Hotkey(WKC_SHIFT | WKC_F11,
"build_trees", MTHK_BUILD_TREES),
2187 Hotkey(WKC_SHIFT | WKC_F12,
"music", MTHK_MUSIC),
2188 Hotkey((uint16)0,
"ai_debug", MTHK_AI_DEBUG),
2189 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTHK_SMALL_SCREENSHOT),
2190 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT),
2191 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT),
2192 Hotkey((uint16)0,
"giant_screenshot", MTHK_GIANT_SCREENSHOT),
2193 Hotkey(WKC_CTRL | WKC_ALT |
'C',
"cheats", MTHK_CHEATS),
2194 Hotkey(
'L',
"terraform", MTHK_TERRAFORM),
2195 Hotkey(
'V',
"extra_viewport", MTHK_EXTRA_VIEWPORT),
2196 #ifdef ENABLE_NETWORK 2197 Hotkey((uint16)0,
"client_list", MTHK_CLIENT_LIST),
2199 Hotkey((uint16)0,
"sign_list", MTHK_SIGN_LIST),
2202 HotkeyList MainToolbarWindow::hotkeys(
"maintoolbar", maintoolbar_hotkeys);
2207 static const SpriteID toolbar_button_sprites[] = {
2209 SPR_IMG_FASTFORWARD,
2215 SPR_IMG_COMPANY_LIST,
2216 SPR_IMG_COMPANY_FINANCE,
2217 SPR_IMG_COMPANY_GENERAL,
2221 SPR_IMG_COMPANY_LEAGUE,
2226 SPR_IMG_AIRPLANESLIST,
2233 SPR_IMG_LANDSCAPING,
2237 SPR_IMG_SWITCH_TOOLBAR,
2259 static const NWidgetPart _nested_toolbar_normal_widgets[] = {
2267 _nested_toolbar_normal_widgets,
lengthof(_nested_toolbar_normal_widgets),
2268 &MainToolbarWindow::hotkeys
2274 static ToolbarButtonProc *
const _scen_toolbar_button_procs[] = {
2281 ToolbarScenDateBackward,
2282 ToolbarScenDateForward,
2283 ToolbarScenMapTownDir,
2285 ToolbarZoomOutClick,
2288 ToolbarScenGenIndustry,
2289 ToolbarScenBuildRoad,
2290 ToolbarScenBuildDocks,
2291 ToolbarScenPlantTrees,
2292 ToolbarScenPlaceSign,
2307 enum MainToolbarEditorHotkeys {
2321 MTEHK_SMALL_SCREENSHOT,
2322 MTEHK_ZOOMEDIN_SCREENSHOT,
2323 MTEHK_DEFAULTZOOM_SCREENSHOT,
2324 MTEHK_GIANT_SCREENSHOT,
2329 MTEHK_EXTRA_VIEWPORT,
2337 this->InitNested(0);
2357 this->DrawWidgets();
2369 int height = r.bottom - r.top;
2372 DrawString(r.left, r.right, (height + 1) / 2, STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR, TC_FROMSTRING,
SA_HOR_CENTER);
2398 if (_game_mode == GM_MENU)
return;
2417 case MTEHK_PAUSE: ToolbarPauseClick(
this);
break;
2421 case MTEHK_GENLAND: ToolbarScenGenLand(
this);
break;
2422 case MTEHK_GENTOWN: ToolbarScenGenTown(
this);
break;
2423 case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(
this);
break;
2424 case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(
this);
break;
2425 case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(
this);
break;
2426 case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(
this);
break;
2427 case MTEHK_SIGN: cbf = ToolbarScenPlaceSign(
this);
break;
2428 case MTEHK_MUSIC: ShowMusicWindow();
break;
2429 case MTEHK_LANDINFO: cbf = PlaceLandBlockInfo();
break;
2430 case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2434 case MTEHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2435 case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2448 case CBF_PLACE_SIGN:
2452 case CBF_PLACE_LANDINFO:
2456 default: NOT_REACHED();
2474 if (!this->timer.
Elapsed(delta_ms))
return;
2495 if (!gui_scope)
return;
2502 if (str == NULL)
return;
2519 static Hotkey scenedit_maintoolbar_hotkeys[] = {
2520 Hotkey(_maintoolbar_pause_keys,
"pause", MTEHK_PAUSE),
2521 Hotkey((uint16)0,
"fastforward", MTEHK_FASTFORWARD),
2522 Hotkey(WKC_F2,
"settings", MTEHK_SETTINGS),
2523 Hotkey(WKC_F3,
"saveload", MTEHK_SAVEGAME),
2524 Hotkey(WKC_F4,
"gen_land", MTEHK_GENLAND),
2525 Hotkey(WKC_F5,
"gen_town", MTEHK_GENTOWN),
2526 Hotkey(WKC_F6,
"gen_industry", MTEHK_GENINDUSTRY),
2527 Hotkey(WKC_F7,
"build_road", MTEHK_BUILD_ROAD),
2528 Hotkey(WKC_F8,
"build_docks", MTEHK_BUILD_DOCKS),
2529 Hotkey(WKC_F9,
"build_trees", MTEHK_BUILD_TREES),
2530 Hotkey(WKC_F10,
"build_sign", MTEHK_SIGN),
2531 Hotkey(WKC_F11,
"music", MTEHK_MUSIC),
2532 Hotkey(WKC_F12,
"land_info", MTEHK_LANDINFO),
2533 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTEHK_SMALL_SCREENSHOT),
2534 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT),
2535 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT),
2536 Hotkey((uint16)0,
"giant_screenshot", MTEHK_GIANT_SCREENSHOT),
2537 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTEHK_ZOOM_IN),
2538 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTEHK_ZOOM_OUT),
2539 Hotkey(
'L',
"terraform", MTEHK_TERRAFORM),
2540 Hotkey(
'M',
"smallmap", MTEHK_SMALLMAP),
2541 Hotkey(
'V',
"extra_viewport", MTEHK_EXTRA_VIEWPORT),
2544 HotkeyList ScenarioEditorToolbarWindow::hotkeys(
"scenedit_maintoolbar", scenedit_maintoolbar_hotkeys);
2546 static const NWidgetPart _nested_toolb_scen_inner_widgets[] = {
2580 static NWidgetBase *MakeScenarioToolbar(
int *biggest_index)
2585 static const NWidgetPart _nested_toolb_scen_widgets[] = {
2593 _nested_toolb_scen_widgets,
lengthof(_nested_toolb_scen_widgets),
2594 &ScenarioEditorToolbarWindow::hotkeys
2603 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
virtual void OnRealtimeTick(uint delta_ms)
Called periodically.
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.
bool Elapsed(uint delta)
Test if a timer has elapsed.
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.
Types for recording game performance data.
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.
bool NetworkCompanyIsPassworded(CompanyID company_id)
Check if the company we want to join requires a password.
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.
void DeleteAllMessages()
Delete all messages and their corresponding window (if any).
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.
void ShowFramerateWindow()
Open the general framerate window.
static uint CeilDiv(uint a, uint b)
Computes ceil(a / b) for non-negative a and b.
static const uint MILLISECONDS_PER_TICK
The number of milliseconds per game tick.
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 DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, ZoomLevel zoom)
Draw a sprite, not in a viewport.
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.