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;
175 col = sel ? TC_WHITE : TC_BLACK;
177 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);
204 for (
int i = 0; i < count; i++) {
227 #ifdef ENABLE_NETWORK 234 if (include_spectator) {
266 return CBF_PLACE_SIGN;
290 _fast_forward ^=
true;
305 OME_SHOW_STATIONNAMES,
306 OME_SHOW_WAYPOINTNAMES,
308 OME_SHOW_COMPETITOR_SIGNS,
311 OME_TRANSPARENTBUILDINGS,
312 OME_SHOW_STATIONSIGNS,
367 case OME_SHOW_COMPETITOR_SIGNS:
384 SLEME_SAVE_SCENARIO = 0,
386 SLEME_SAVE_HEIGHTMAP,
387 SLEME_LOAD_HEIGHTMAP,
436 if (_game_mode == GM_EDITOR) {
442 case SLEME_EXIT_TOINTRO: AskExitToGameMenu();
break;
443 case SLEME_EXIT_GAME: HandleExitGameRequest();
break;
449 case SLNME_EXIT_TOINTRO: AskExitToGameMenu();
break;
450 case SLNME_EXIT_GAME: HandleExitGameRequest();
break;
458 enum MapMenuEntries {
459 MME_SHOW_SMALLMAP = 0,
460 MME_SHOW_EXTRAVIEWPORTS,
463 MME_SHOW_TOWNDIRECTORY,
464 MME_SHOW_INDUSTRYDIRECTORY,
503 case MME_SHOW_TOWNDIRECTORY: ShowTownDirectory();
break;
504 case MME_SHOW_INDUSTRYDIRECTORY: ShowIndustryDirectory();
break;
526 case 0: ShowTownDirectory();
break;
551 case 0: ShowSubsidiesList();
break;
612 #ifdef ENABLE_NETWORK 699 case 0: ShowOperatingProfitGraph();
break;
700 case 1: ShowIncomeGraph();
break;
701 case 2: ShowDeliveredCargoGraph();
break;
702 case 3: ShowPerformanceHistoryGraph();
break;
703 case 4: ShowCompanyValueGraph();
break;
704 case 5: ShowCargoPaymentRates();
break;
706 case 6: ShowCompanyLeagueTable();
break;
707 case 7: ShowPerformanceRatingDetail();
break;
729 case 0: ShowCompanyLeagueTable();
break;
730 case 1: ShowPerformanceRatingDetail();
break;
754 case 0: ShowIndustryDirectory();
break;
756 case 2: ShowBuildIndustryWindow();
break;
892 _last_built_railtype = (
RailType)index;
909 FOR_ALL_ENGINES_OF_TYPE(e,
VEH_ROAD) {
929 _last_built_roadtype = (
RoadType)index;
992 case 1: ShowBuildTreesToolbar();
break;
993 case 2:
return SelectSignTool();
1050 return CBF_PLACE_LANDINFO;
1060 static void MenuClickSmallScreenshot()
1084 if ((uint64)vp.
width * (uint64)vp.
height > 8192 * 8192) {
1105 extern bool _draw_bounding_boxes;
1108 _draw_bounding_boxes = !_draw_bounding_boxes;
1122 extern bool _draw_dirty_blocks;
1125 _draw_dirty_blocks = !_draw_dirty_blocks;
1151 case 0:
return PlaceLandBlockInfo();
1154 case 4: MenuClickSmallScreenshot();
break;
1159 case 9: ShowAboutWindow();
break;
1171 if (_toolbar_mode != TB_LOWER) {
1172 _toolbar_mode = TB_LOWER;
1174 _toolbar_mode = TB_UPPER;
1236 ShowFoundTownWindow();
1244 ShowBuildIndustryWindow();
1268 ShowBuildTreesToolbar();
1276 return SelectSignTool();
1286 static MenuClickedProc *
const _menu_clicked_procs[] = {
1341 this->smallest_x = 0;
1342 this->smallest_y = 0;
1351 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1352 child_wid->SetupSmallestSize(w, init_array);
1353 this->smallest_y =
max(this->smallest_y, child_wid->smallest_y + child_wid->padding_top + child_wid->padding_bottom);
1354 if (this->IsButton(child_wid->type)) {
1356 this->smallest_x =
max(this->smallest_x, child_wid->smallest_x + child_wid->padding_left + child_wid->padding_right);
1363 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1364 child_wid->current_y = this->smallest_y;
1365 if (!this->IsButton(child_wid->type)) {
1366 child_wid->current_x = child_wid->smallest_x;
1374 assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
1378 this->current_x = given_width;
1379 this->current_y = given_height;
1382 memset(this->visible, 0,
sizeof(this->visible));
1383 uint arrangable_count, button_count, spacer_count;
1384 const byte *arrangement = GetButtonArrangement(given_width, arrangable_count, button_count, spacer_count);
1385 for (uint i = 0; i < arrangable_count; i++) {
1386 this->visible[arrangement[i]] =
true;
1391 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1393 widgets[((
NWidgetCore*)child_wid)->index] = child_wid;
1398 uint spacer_space =
max(0, (
int)given_width - (
int)(button_count * this->smallest_x));
1399 uint button_space = given_width - spacer_space;
1404 const byte *cur_wid = rtl ? &arrangement[arrangable_count - 1] : arrangement;
1405 for (uint i = 0; i < arrangable_count; i++) {
1408 if (spacer_space != 0) {
1410 if (possible_spacer != NULL && possible_spacer->
type ==
NWID_SPACER) {
1411 uint add = spacer_space / (spacer_count - spacer_i);
1413 spacer_space -= add;
1419 if (this->IsButton(child_wid->
type)) {
1420 child_wid->
current_x = button_space / (button_count - button_i);
1442 for (
NWidgetBase *child_wid = rtl ? this->tail : this->head; child_wid != NULL; child_wid = rtl ? child_wid->
prev : child_wid->
next) {
1444 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1452 if (!
IsInsideBS(x, this->pos_x, this->current_x) || !
IsInsideBS(y, this->pos_y, this->current_y))
return NULL;
1454 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1456 if (!this->visible[((
NWidgetCore*)child_wid)->index])
continue;
1459 if (nwid != NULL)
return nwid;
1472 virtual const byte *GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const = 0;
1477 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1479 static const uint SMALLEST_ARRANGEMENT = 14;
1480 static const uint BIGGEST_ARRANGEMENT = 20;
1488 static const byte arrange14[] = {
1519 static const byte arrange15[] = {
1552 static const byte arrange16[] = {
1587 static const byte arrange17[] = {
1624 static const byte arrange18[] = {
1663 static const byte arrange19[] = {
1704 static const byte arrange20[] = {
1747 static const byte arrange_all[] = {
1780 uint full_buttons =
max(
CeilDiv(width, this->smallest_x), SMALLEST_ARRANGEMENT);
1781 if (full_buttons > BIGGEST_ARRANGEMENT) {
1782 button_count = arrangable_count =
lengthof(arrange_all);
1783 spacer_count = this->spacers;
1788 static const byte *
const arrangements[] = { arrange14, arrange15, arrange16, arrange17, arrange18, arrange19, arrange20 };
1790 button_count = arrangable_count = full_buttons;
1791 spacer_count = this->spacers;
1792 return arrangements[full_buttons - SMALLEST_ARRANGEMENT] + ((_toolbar_mode == TB_LOWER) ? full_buttons : 0);
1798 uint panel_widths[2];
1806 for (
NWidgetBase *child_wid = this->head; child_wid != NULL; child_wid = child_wid->
next) {
1807 if (child_wid->type ==
NWID_SPACER || this->IsButton(child_wid->type))
continue;
1809 assert(i <
lengthof(this->panel_widths));
1810 this->panel_widths[i++] = child_wid->current_x;
1815 const byte *
GetButtonArrangement(uint &width, uint &arrangable_count, uint &button_count, uint &spacer_count)
const 1817 static const byte arrange_all[] = {
1837 static const byte arrange_nopanel[] = {
1856 static const byte arrange_switch[] = {
1880 uint min_full_width = (
lengthof(arrange_all) -
lengthof(this->panel_widths)) * this->smallest_x + this->panel_widths[0] + this->panel_widths[1];
1881 if (width >= min_full_width) {
1882 width -= this->panel_widths[0] + this->panel_widths[1];
1883 arrangable_count =
lengthof(arrange_all);
1884 button_count = arrangable_count - 2;
1885 spacer_count = this->spacers;
1890 uint min_small_width = (
lengthof(arrange_switch) -
lengthof(this->panel_widths)) * this->smallest_x / 2 + this->panel_widths[1];
1891 if (width > min_small_width) {
1892 width -= this->panel_widths[1];
1893 arrangable_count =
lengthof(arrange_nopanel);
1894 button_count = arrangable_count - 1;
1895 spacer_count = this->spacers - 1;
1896 return arrange_nopanel;
1900 width -= this->panel_widths[1];
1901 arrangable_count =
lengthof(arrange_switch) / 2;
1902 button_count = arrangable_count - 1;
1904 return arrange_switch + ((_toolbar_mode == TB_LOWER) ? arrangable_count : 0);
1912 static ToolbarButtonProc *
const _toolbar_button_procs[] = {
1919 ToolbarSubsidiesClick,
1920 ToolbarStationsClick,
1921 ToolbarFinancesClick,
1922 ToolbarCompaniesClick,
1927 ToolbarIndustryClick,
1933 ToolbarZoomOutClick,
1934 ToolbarBuildRailClick,
1935 ToolbarBuildRoadClick,
1936 ToolbarBuildWaterClick,
1937 ToolbarBuildAirClick,
1940 ToolbarNewspaperClick,
1945 enum MainToolbarHotkeys {
1975 MTHK_SMALL_SCREENSHOT,
1976 MTHK_ZOOMEDIN_SCREENSHOT,
1977 MTHK_DEFAULTZOOM_SCREENSHOT,
1978 MTHK_GIANT_SCREENSHOT,
1981 MTHK_EXTRA_VIEWPORT,
1992 this->InitNested(0);
2024 this->DrawWidgets();
2029 if (_game_mode != GM_MENU && !this->IsWidgetDisabled(widget)) _toolbar_button_procs[widget](
this);
2041 case MTHK_PAUSE: ToolbarPauseClick(
this);
break;
2047 case MTHK_TOWNDIRECTORY: ShowTownDirectory();
break;
2048 case MTHK_SUBSIDIES: ShowSubsidiesList();
break;
2054 case MTHK_GRAPHS: ShowOperatingProfitGraph();
break;
2055 case MTHK_LEAGUE: ShowCompanyLeagueTable();
break;
2056 case MTHK_INDUSTRIES: ShowBuildIndustryWindow();
break;
2061 case MTHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2062 case MTHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2067 case MTHK_BUILD_TREES: ShowBuildTreesToolbar();
break;
2068 case MTHK_MUSIC: ShowMusicWindow();
break;
2070 case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2077 #ifdef ENABLE_NETWORK 2078 case MTHK_CLIENT_LIST:
if (
_networking) ShowClientList();
break;
2089 case CBF_PLACE_SIGN:
2093 case CBF_PLACE_LANDINFO:
2097 default: NOT_REACHED();
2108 if (!this->timer.
Elapsed(delta_ms))
return;
2127 if (this->IsWidgetLowered(i)) {
2128 this->RaiseWidget(i);
2129 this->SetWidgetDirty(i);
2141 if (!gui_scope)
return;
2148 const uint16 _maintoolbar_pause_keys[] = {WKC_F1, WKC_PAUSE, 0};
2149 const uint16 _maintoolbar_zoomin_keys[] = {WKC_NUM_PLUS,
WKC_EQUALS, WKC_SHIFT |
WKC_EQUALS, WKC_SHIFT | WKC_F5, 0};
2150 const uint16 _maintoolbar_zoomout_keys[] = {WKC_NUM_MINUS,
WKC_MINUS, WKC_SHIFT |
WKC_MINUS, WKC_SHIFT | WKC_F6, 0};
2151 const uint16 _maintoolbar_smallmap_keys[] = {WKC_F4,
'M', 0};
2153 static Hotkey maintoolbar_hotkeys[] = {
2154 Hotkey(_maintoolbar_pause_keys,
"pause", MTHK_PAUSE),
2155 Hotkey((uint16)0,
"fastforward", MTHK_FASTFORWARD),
2156 Hotkey(WKC_F2,
"settings", MTHK_SETTINGS),
2157 Hotkey(WKC_F3,
"saveload", MTHK_SAVEGAME),
2158 Hotkey((uint16)0,
"load_game", MTHK_LOADGAME),
2159 Hotkey(_maintoolbar_smallmap_keys,
"smallmap", MTHK_SMALLMAP),
2160 Hotkey(WKC_F5,
"town_list", MTHK_TOWNDIRECTORY),
2161 Hotkey(WKC_F6,
"subsidies", MTHK_SUBSIDIES),
2162 Hotkey(WKC_F7,
"station_list", MTHK_STATIONS),
2163 Hotkey(WKC_F8,
"finances", MTHK_FINANCES),
2164 Hotkey(WKC_F9,
"companies", MTHK_COMPANIES),
2165 Hotkey((uint16)0,
"story_book", MTHK_STORY),
2166 Hotkey((uint16)0,
"goal_list", MTHK_GOAL),
2167 Hotkey(WKC_F10,
"graphs", MTHK_GRAPHS),
2168 Hotkey(WKC_F11,
"league", MTHK_LEAGUE),
2169 Hotkey(WKC_F12,
"industry_list", MTHK_INDUSTRIES),
2170 Hotkey(WKC_SHIFT | WKC_F1,
"train_list", MTHK_TRAIN_LIST),
2171 Hotkey(WKC_SHIFT | WKC_F2,
"roadveh_list", MTHK_ROADVEH_LIST),
2172 Hotkey(WKC_SHIFT | WKC_F3,
"ship_list", MTHK_SHIP_LIST),
2173 Hotkey(WKC_SHIFT | WKC_F4,
"aircraft_list", MTHK_AIRCRAFT_LIST),
2174 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTHK_ZOOM_IN),
2175 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTHK_ZOOM_OUT),
2176 Hotkey(WKC_SHIFT | WKC_F7,
"build_rail", MTHK_BUILD_RAIL),
2177 Hotkey(WKC_SHIFT | WKC_F8,
"build_road", MTHK_BUILD_ROAD),
2178 Hotkey(WKC_SHIFT | WKC_F9,
"build_docks", MTHK_BUILD_DOCKS),
2179 Hotkey(WKC_SHIFT | WKC_F10,
"build_airport", MTHK_BUILD_AIRPORT),
2180 Hotkey(WKC_SHIFT | WKC_F11,
"build_trees", MTHK_BUILD_TREES),
2181 Hotkey(WKC_SHIFT | WKC_F12,
"music", MTHK_MUSIC),
2182 Hotkey((uint16)0,
"ai_debug", MTHK_AI_DEBUG),
2183 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTHK_SMALL_SCREENSHOT),
2184 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT),
2185 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTHK_DEFAULTZOOM_SCREENSHOT),
2186 Hotkey((uint16)0,
"giant_screenshot", MTHK_GIANT_SCREENSHOT),
2187 Hotkey(WKC_CTRL | WKC_ALT |
'C',
"cheats", MTHK_CHEATS),
2188 Hotkey(
'L',
"terraform", MTHK_TERRAFORM),
2189 Hotkey(
'V',
"extra_viewport", MTHK_EXTRA_VIEWPORT),
2190 #ifdef ENABLE_NETWORK 2191 Hotkey((uint16)0,
"client_list", MTHK_CLIENT_LIST),
2193 Hotkey((uint16)0,
"sign_list", MTHK_SIGN_LIST),
2196 HotkeyList MainToolbarWindow::hotkeys(
"maintoolbar", maintoolbar_hotkeys);
2201 static const SpriteID toolbar_button_sprites[] = {
2203 SPR_IMG_FASTFORWARD,
2209 SPR_IMG_COMPANY_LIST,
2210 SPR_IMG_COMPANY_FINANCE,
2211 SPR_IMG_COMPANY_GENERAL,
2215 SPR_IMG_COMPANY_LEAGUE,
2220 SPR_IMG_AIRPLANESLIST,
2227 SPR_IMG_LANDSCAPING,
2231 SPR_IMG_SWITCH_TOOLBAR,
2253 static const NWidgetPart _nested_toolbar_normal_widgets[] = {
2261 _nested_toolbar_normal_widgets,
lengthof(_nested_toolbar_normal_widgets),
2262 &MainToolbarWindow::hotkeys
2268 static ToolbarButtonProc *
const _scen_toolbar_button_procs[] = {
2275 ToolbarScenDateBackward,
2276 ToolbarScenDateForward,
2277 ToolbarScenMapTownDir,
2279 ToolbarZoomOutClick,
2282 ToolbarScenGenIndustry,
2283 ToolbarScenBuildRoad,
2284 ToolbarScenBuildDocks,
2285 ToolbarScenPlantTrees,
2286 ToolbarScenPlaceSign,
2301 enum MainToolbarEditorHotkeys {
2315 MTEHK_SMALL_SCREENSHOT,
2316 MTEHK_ZOOMEDIN_SCREENSHOT,
2317 MTEHK_DEFAULTZOOM_SCREENSHOT,
2318 MTEHK_GIANT_SCREENSHOT,
2323 MTEHK_EXTRA_VIEWPORT,
2331 this->InitNested(0);
2351 this->DrawWidgets();
2363 int height = r.bottom - r.top;
2366 DrawString(r.left, r.right, (height + 1) / 2, STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR, TC_FROMSTRING,
SA_HOR_CENTER);
2392 if (_game_mode == GM_MENU)
return;
2411 case MTEHK_PAUSE: ToolbarPauseClick(
this);
break;
2415 case MTEHK_GENLAND: ToolbarScenGenLand(
this);
break;
2416 case MTEHK_GENTOWN: ToolbarScenGenTown(
this);
break;
2417 case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(
this);
break;
2418 case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(
this);
break;
2419 case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(
this);
break;
2420 case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(
this);
break;
2421 case MTEHK_SIGN: cbf = ToolbarScenPlaceSign(
this);
break;
2422 case MTEHK_MUSIC: ShowMusicWindow();
break;
2423 case MTEHK_LANDINFO: cbf = PlaceLandBlockInfo();
break;
2424 case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot();
break;
2428 case MTEHK_ZOOM_IN: ToolbarZoomInClick(
this);
break;
2429 case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(
this);
break;
2442 case CBF_PLACE_SIGN:
2446 case CBF_PLACE_LANDINFO:
2450 default: NOT_REACHED();
2468 if (!this->timer.
Elapsed(delta_ms))
return;
2489 if (!gui_scope)
return;
2496 if (str == NULL)
return;
2513 static Hotkey scenedit_maintoolbar_hotkeys[] = {
2514 Hotkey(_maintoolbar_pause_keys,
"pause", MTEHK_PAUSE),
2515 Hotkey((uint16)0,
"fastforward", MTEHK_FASTFORWARD),
2516 Hotkey(WKC_F2,
"settings", MTEHK_SETTINGS),
2517 Hotkey(WKC_F3,
"saveload", MTEHK_SAVEGAME),
2518 Hotkey(WKC_F4,
"gen_land", MTEHK_GENLAND),
2519 Hotkey(WKC_F5,
"gen_town", MTEHK_GENTOWN),
2520 Hotkey(WKC_F6,
"gen_industry", MTEHK_GENINDUSTRY),
2521 Hotkey(WKC_F7,
"build_road", MTEHK_BUILD_ROAD),
2522 Hotkey(WKC_F8,
"build_docks", MTEHK_BUILD_DOCKS),
2523 Hotkey(WKC_F9,
"build_trees", MTEHK_BUILD_TREES),
2524 Hotkey(WKC_F10,
"build_sign", MTEHK_SIGN),
2525 Hotkey(WKC_F11,
"music", MTEHK_MUSIC),
2526 Hotkey(WKC_F12,
"land_info", MTEHK_LANDINFO),
2527 Hotkey(WKC_CTRL |
'S',
"small_screenshot", MTEHK_SMALL_SCREENSHOT),
2528 Hotkey(WKC_CTRL |
'P',
"zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT),
2529 Hotkey(WKC_CTRL |
'D',
"defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT),
2530 Hotkey((uint16)0,
"giant_screenshot", MTEHK_GIANT_SCREENSHOT),
2531 Hotkey(_maintoolbar_zoomin_keys,
"zoomin", MTEHK_ZOOM_IN),
2532 Hotkey(_maintoolbar_zoomout_keys,
"zoomout", MTEHK_ZOOM_OUT),
2533 Hotkey(
'L',
"terraform", MTEHK_TERRAFORM),
2534 Hotkey(
'M',
"smallmap", MTEHK_SMALLMAP),
2535 Hotkey(
'V',
"extra_viewport", MTEHK_EXTRA_VIEWPORT),
2538 HotkeyList ScenarioEditorToolbarWindow::hotkeys(
"scenedit_maintoolbar", scenedit_maintoolbar_hotkeys);
2540 static const NWidgetPart _nested_toolb_scen_inner_widgets[] = {
2574 static NWidgetBase *MakeScenarioToolbar(
int *biggest_index)
2579 static const NWidgetPart _nested_toolb_scen_widgets[] = {
2587 _nested_toolb_scen_widgets,
lengthof(_nested_toolb_scen_widgets),
2588 &ScenarioEditorToolbarWindow::hotkeys
2597 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.
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.