Go to the documentation of this file.
34 #include "table/strings.h"
50 static const NWidgetPart _nested_land_info_widgets[] = {
64 _nested_land_info_widgets,
lengthof(_nested_land_info_widgets)
79 for (
size_t i = 0; i < this->landinfo_data.size(); i++) {
84 if (!this->cargo_acceptance.empty()) {
95 for (
size_t i = 0; i < this->landinfo_data.size(); i++) {
97 size->width = std::max(size->width,
width);
102 if (!this->cargo_acceptance.empty()) {
104 size->width = std::max(size->width, std::min(
static_cast<uint
>(
ScaleGUITrad(300)),
width));
115 # define LANDINFOD_LEVEL 0
117 # define LANDINFOD_LEVEL 1
119 Debug(misc, LANDINFOD_LEVEL,
"TILE: {:#x} ({},{})", tile,
TileX(tile),
TileY(tile));
120 Debug(misc, LANDINFOD_LEVEL,
"type = {:#x}",
_m[tile].type);
121 Debug(misc, LANDINFOD_LEVEL,
"height = {:#x}",
_m[tile].
height);
122 Debug(misc, LANDINFOD_LEVEL,
"m1 = {:#x}",
_m[tile].m1);
123 Debug(misc, LANDINFOD_LEVEL,
"m2 = {:#x}",
_m[tile].m2);
124 Debug(misc, LANDINFOD_LEVEL,
"m3 = {:#x}",
_m[tile].m3);
125 Debug(misc, LANDINFOD_LEVEL,
"m4 = {:#x}",
_m[tile].m4);
126 Debug(misc, LANDINFOD_LEVEL,
"m5 = {:#x}",
_m[tile].m5);
127 Debug(misc, LANDINFOD_LEVEL,
"m6 = {:#x}",
_me[tile].m6);
128 Debug(misc, LANDINFOD_LEVEL,
"m7 = {:#x}",
_me[tile].m7);
129 Debug(misc, LANDINFOD_LEVEL,
"m8 = {:#x}",
_me[tile].m8);
130 #undef LANDINFOD_LEVEL
146 td.
owner_type[0] = STR_LAND_AREA_INFORMATION_OWNER;
170 AddAcceptedCargo(tile, acceptance,
nullptr);
171 GetTileDesc(tile, &td);
173 this->landinfo_data.clear();
177 this->landinfo_data.push_back(GetString(td.
str));
180 for (uint i = 0; i < 4; i++) {
183 SetDParam(0, STR_LAND_AREA_INFORMATION_OWNER_N_A);
185 this->landinfo_data.push_back(GetString(td.
owner_type[i]));
189 StringID str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A;
198 str = STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED;
200 str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR;
205 this->landinfo_data.push_back(GetString(str));
208 std::stringstream tile_ss;
209 tile_ss <<
"0x" << std::setfill(
'0') << std::setw(4) << std::hex << std::uppercase << tile;
210 std::string tile_str = tile_ss.str();
216 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_LANDINFO_COORDS));
219 SetDParam(0, STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE);
224 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY));
229 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_BUILD_DATE));
235 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_STATION_CLASS));
241 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_STATION_TYPE));
247 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_AIRPORT_CLASS));
253 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_AIRPORT_NAME));
259 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME));
265 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_RAIL_TYPE));
271 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT));
277 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_ROAD_TYPE));
283 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT));
289 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_TRAM_TYPE));
295 this->landinfo_data.push_back(GetString(STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT));
299 if (td.
grf !=
nullptr) {
301 this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_NEWGRF_NAME));
305 std::stringstream line;
306 line << GetString(STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED);
310 if (acceptance[i] > 0) {
312 if (found) line <<
", ";
316 if (acceptance[i] < 8) {
319 line << GetString(STR_LAND_AREA_INFORMATION_CARGO_EIGHTS);
326 this->cargo_acceptance = line.str();
328 this->cargo_acceptance.clear();
362 if (!gui_scope)
return;
382 static const NWidgetPart _nested_about_widgets[] = {
402 _nested_about_widgets,
lengthof(_nested_about_widgets)
405 static const char *
const _credits[] = {
406 u8
"Original design by Chris Sawyer",
407 u8
"Original graphics by Simon Foster",
409 u8
"The OpenTTD team (in alphabetical order):",
410 u8
" Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)",
411 u8
" Christoph Elsenhans (frosch) - General coding (since 0.6)",
412 u8
" Lo\u00efc Guilloux (glx) - General / Windows Expert (since 0.4.5)",
413 u8
" Charles Pigott (LordAro) - General / Correctness police (since 1.9)",
414 u8
" Michael Lutz (michi_cc) - Path based signals (since 0.7)",
415 u8
" Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)",
416 u8
" Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)",
417 u8
" Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods (since 0.4.5)",
418 u8
" Remko Bijker (Rubidium) - Coder and way more (since 0.4.5)",
419 u8
" Patric Stout (TrueBrain) - NoProgrammer (since 0.3), sys op",
420 u8
" Tyler Trahan (2TallTyler) - General coding (since 13)",
422 u8
"Inactive Developers:",
423 u8
" Grzegorz Duczy\u0144ski (adf88) - General coding (1.7 - 1.8)",
424 u8
" Albert Hofkamp (Alberth) - GUI expert (0.7 - 1.9)",
425 u8
" Jean-Fran\u00e7ois Claeys (Belugas) - GUI, NewGRF and more (0.4.5 - 1.0)",
426 u8
" Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7)",
427 u8
" Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)",
428 u8
" Ulf Hermann (fonsinchen) - Cargo Distribution (1.3 - 1.6)",
429 u8
" Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)",
430 u8
" Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)",
431 u8
" Attila B\u00e1n (MiHaMiX) - Developer WebTranslator 1 and 2 (0.3 - 0.5)",
432 u8
" Ingo von Borstel (planetmaker) - General coding, Support (1.1 - 1.9)",
433 u8
" Zden\u011bk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)",
434 u8
" Jos\u00e9 Soler (Terkhen) - General coding (1.0 - 1.4)",
435 u8
" Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)",
436 u8
" Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)",
437 u8
" Leif Linse (Zuu) - AI/Game Script (1.2 - 1.6)",
439 u8
"Retired Developers:",
440 u8
" Tam\u00e1s Farag\u00f3 (Darkvater) - Ex-Lead coder (0.3 - 0.5)",
441 u8
" Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)",
442 u8
" Emil Djupfeld (egladil) - MacOSX (0.4.5 - 0.6)",
443 u8
" Simon Sasburg (HackyKid) - Many bugfixes (0.4 - 0.4.5)",
444 u8
" Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)",
445 u8
" Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)",
446 u8
" Petr Baudi\u0161 (pasky) - Many patches, NewGRF support (0.3 - 0.3)",
447 u8
" Benedikt Br\u00fcggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)",
448 u8
" Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)",
450 u8
"Special thanks go out to:",
451 u8
" Josef Drexler - For his great work on TTDPatch",
452 u8
" Marcin Grzegorczyk - Track foundations and for describing TTD internals",
453 u8
" Stefan Mei\u00dfner (sign_de) - For his work on the console",
454 u8
" Mike Ragsdale - OpenTTD installer",
455 u8
" Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
456 u8
" Richard Kempton (richK) - additional airports, initial TGP implementation",
457 u8
" Alberto Demichelis - Squirrel scripting language \u00a9 2003-2008",
458 u8
" L. Peter Deutsch - MD5 implementation \u00a9 1999, 2000, 2002",
459 u8
" Michael Blunck - Pre-signals and semaphores \u00a9 2003",
460 u8
" George - Canal/Lock graphics \u00a9 2003-2004",
461 u8
" Andrew Parkhouse (andythenorth) - River graphics",
462 u8
" David Dallaston (Pikka) - Tram tracks",
463 u8
" All Translators - Who made OpenTTD a truly international game",
464 u8
" Bug Reporters - Without whom OpenTTD would still be full of bugs!",
467 u8
"And last but not least:",
468 u8
" Chris Sawyer - For an amazing game!"
502 for (uint i = 0; i <
lengthof(_credits); i++) {
519 for (uint i = 0; i <
lengthof(_credits); i++) {
520 if (y >= r.top + 7 && y < r.bottom - this->
line_height) {
531 this->text_position -= count;
541 void ShowAboutWindow()
555 StringID msg = STR_MESSAGE_ESTIMATED_COST;
559 msg = STR_MESSAGE_ESTIMATED_INCOME;
578 StringID msg = STR_INCOME_FLOAT_COST;
582 msg = STR_INCOME_FLOAT_INCOME;
607 msg = STR_FEEDER_INCOME;
627 assert(
string != STR_NULL);
630 return AddTextEffect(
string, pt.x, pt.y, 0,
TE_STATIC);
640 assert(
string != STR_NULL);
643 UpdateTextEffect(te_id,
string);
652 if (*te_id == INVALID_TE_ID)
return;
654 RemoveTextEffect(*te_id);
655 *te_id = INVALID_TE_ID;
658 static const NWidgetPart _nested_tooltips_widgets[] = {
666 _nested_tooltips_widgets,
lengthof(_nested_tooltips_widgets)
680 this->string_id = str;
681 static_assert(
sizeof(this->params[0]) ==
sizeof(
params[0]));
684 _global_string_params.
offset = 0;
689 this->close_cond = close_tooltip;
710 if (pt.y + sm_height > scr_bot) pt.y = std::min(_cursor.
pos.y + _cursor.total_offs.y - 5, scr_bot) - sm_height;
711 pt.x = sm_width >= _screen.width ? 0 :
SoftClamp(_cursor.
pos.x - (sm_width >> 1), 0, _screen.width - sm_width);
735 for (uint arg = 0; arg < this->
paramcount; arg++) {
751 switch (this->close_cond) {
754 case TCC_NONE:
break;
756 case TCC_EXIT_VIEWPORT: {
777 if (str == STR_NULL || !_cursor.
in_window)
return;
779 new TooltipsWindow(parent, str, paramcount, params, close_tooltip);
782 void QueryString::HandleEditBox(
Window *w,
int wid)
792 static int GetCaretWidth()
797 void QueryString::DrawEditBox(
const Window *w,
int wid)
const
807 Rect r = wi->GetCurrentRect();
828 const Textbuf *tb = &this->text;
829 int delta = std::min(0, (fr.right - fr.left) - tb->
pixels - GetCaretWidth());
838 if (focussed && tb->
caret) {
865 const Textbuf *tb = &this->text;
866 int delta = std::min(0, (r.right - r.left) - tb->
pixels - GetCaretWidth());
894 const Textbuf *tb = &this->text;
895 int delta = std::min(0, r.
Width() - tb->
pixels - GetCaretWidth());
902 return {
Clamp(r.left + p1.x + delta, r.left, r.right), r.top,
Clamp(r.left + p2.x + delta, r.left, r.right), r.bottom };
924 if (!
IsInsideMM(pt.y, r.top, r.bottom))
return nullptr;
927 const Textbuf *tb = &this->text;
928 int delta = std::min(0, r.
Width() - tb->
pixels - GetCaretWidth());
934 void QueryString::ClickEditBox(
Window *w,
Point pt,
int wid,
int click_count,
bool focus_changed)
944 Rect cr = wi->GetCurrentRect().
WithWidth(clearbtn_width, !rtl);
947 if (this->text.
bytes > 1) {
973 char *last_of = &this->editbox.text.
buf[this->editbox.text.
max_bytes - 1];
974 GetString(this->editbox.text.
buf, str, last_of);
988 this->editbox.caption = caption;
991 this->editbox.text.
afilter = afilter;
995 this->UpdateWarningStringSize();
1002 void UpdateWarningStringSize()
1007 this->warning_size.height =
GetStringHeight(STR_WARNING_PASSWORD_SECURITY, this->warning_size.width);
1036 STR_WARNING_PASSWORD_SECURITY, TC_FROMSTRING,
SA_CENTER);
1047 if (this->editbox.orig ==
nullptr || strcmp(this->editbox.text.
buf, this->editbox.orig) != 0) {
1048 assert(this->
parent !=
nullptr);
1051 this->editbox.handled =
true;
1074 if (!this->editbox.handled && this->parent !=
nullptr) {
1076 this->parent =
nullptr;
1083 static const NWidgetPart _nested_query_string_widgets[] = {
1089 NWidget(
WWT_EDITBOX, COLOUR_GREY,
WID_QS_TEXT),
SetMinimalSize(256, 12),
SetFill(1, 1),
SetPadding(2, 2, 2, 2),
1103 _nested_query_string_widgets,
lengthof(_nested_query_string_widgets)
1117 assert(parent !=
nullptr);
1139 this->proc = callback;
1147 if (this->proc !=
nullptr) this->
proc(this->
parent,
false);
1188 this->message, TC_FROMSTRING,
SA_CENTER);
1200 this->proc =
nullptr;
1202 if (proc !=
nullptr) {
1220 if (this->proc !=
nullptr) {
1222 this->proc =
nullptr;
1234 static const NWidgetPart _nested_query_widgets[] = {
1254 _nested_query_widgets,
lengthof(_nested_query_widgets)
1274 if (qw->
parent != parent || qw->
proc != callback)
continue;
1280 new QueryWindow(&_query_desc, caption, message, parent, callback);
@ ES_HANDLED
The passed event is handled.
StringID airport_class
Name of the airport class.
static const uint TIMER_INTERVAL
Scrolling interval, scaled by line text line height. This value chosen to maintain parity: 2100 / FON...
const char * grf
newGRF used for the tile contents
void FindWindowPlacementAndResize(int def_width, int def_height) override
Resize window towards the default size.
static constexpr bool IsInsideMM(const T x, const size_t min, const size_t max) noexcept
Checks if a value is in an interval.
Window * FindWindowFromPt(int x, int y)
Do a search for a window at specific coordinates.
void SetStringParameters(int widget) const override
Initialize string parameters for a widget.
int Height() const
Get height of Rect.
bool ScrollMainWindowToTile(TileIndex tile, bool instant)
Scrolls the viewport of the main window to a given location.
int ok_button
Widget button of parent window to simulate when pressing OK in OSK.
char32_t WChar
Type for wide characters, i.e.
void CopyOutDParam(uint64 *dst, int offs, int num)
Copy num string parameters from the global string parameter array to the dst array.
virtual void OnEditboxChanged(int widget)
The text in an editbox has been edited.
void ShowExtraViewportWindow(TileIndex tile=INVALID_TILE)
Show a new Extra Viewport window.
uint16 max_bytes
the maximum size of the buffer in bytes (including terminating '\0')
@ QSF_PASSWORD
password entry box, show warning about password security
Dimensions (a width and height) of a rectangle in 2D.
@ TE_RISING
Make the text effect slowly go upwards.
NWidgetBase * nested_root
Root of the nested tree.
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
@ WC_LAND_INFO
Land info window; Window numbers:
@ QSF_ACCEPT_UNCHANGED
return success even when the text didn't change
Rect Shrink(int s) const
Copy and shrink Rect by s pixels.
Town * ClosestTownFromTile(TileIndex tile, uint threshold)
Return the town closest (in distance or ownership) to a given tile, within a given threshold.
StringID railtype
Type of rail on the tile.
void ReInit(int rx=0, int ry=0)
Re-initialize a window, and optionally change its size.
Owner owner[4]
Name of the owner(s)
static Point RemapCoords(int x, int y, int z)
Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.
StringID station_class
Class of station.
Tindex index
Index of this pool item.
void OnInvalidateData(int data=0, bool gui_scope=true) override
Some data on this window has become invalid.
static CargoSpec * Get(size_t index)
Retrieve cargo details for the given cargo ID.
@ TE_STATIC
Keep the text effect static.
Class for storing amounts of cargo.
void OnRealtimeTick(uint delta_ms) override
Called periodically.
@ OSKA_DISABLED
The OSK shall not be activated at all.
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
Update size and resize step of a widget in the window.
Dimension maxdim(const Dimension &d1, const Dimension &d2)
Compute bounding box of both dimensions.
Window * FindWindowById(WindowClass cls, WindowNumber number)
Find a window by its class and window number.
uint16 tram_speed
Speed limit of tram (bridges and track)
int GetTileZ(TileIndex tile)
Get bottom height of the tile.
TileExtended * _me
Extended Tiles of the map.
void HideFillingPercent(TextEffectID *te_id)
Hide vehicle loading indicators.
@ WDF_NO_FOCUS
This window won't get focus/make any other window lose focus when click.
bool _ctrl_pressed
Is Ctrl pressed?
@ FILLRECT_CHECKER
Draw only every second pixel, used for greying-out.
uint16 caretxoffs
the current position of the caret in pixels
void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string)
Update vehicle loading indicators.
ClientSettings _settings_client
The current settings for this game.
@ WC_OSK
On Screen Keyboard; Window numbers:
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.
static uint TileY(TileIndex tile)
Get the Y component of a tile.
StringID airport_tile_name
Name of the airport tile.
bool IsOSKOpenedFor(const Window *w, int button)
Check whether the OSK is opened for a specific editbox.
@ FR_LOWERED
If set the frame is lowered and the background colour brighter (ie. buttons when pressed)
void OnClick(Point pt, int widget, int click_count) override
A click with the left mouse button has been made on the window.
void Close() override
Hide the window and all its child windows, and mark them for a later deletion.
const char * GetCharAtPosition(const Window *w, int wid, const Point &pt) const
Get the character that is rendered at a position.
void HandleButtonClick(byte widget)
Do all things to make a button look clicked and mark it to be unclicked in a few ticks.
byte _colour_gradient[COLOUR_END][8]
All 16 colour gradients 8 colours per gradient from darkest (0) to lightest (7)
Tile description for the 'land area information' tool.
int text_position
The top of the scrolling text.
static void SetDParam(uint n, uint64 v)
Set a string parameter v at index n in the global string parameter array.
StringID airport_name
Name of the airport.
Data stored about a string that can be modified in the GUI.
QueryStringFlags flags
Flags controlling behaviour of the window.
uint16 pixels
the current size of the string in pixels
bool Succeeded() const
Did this command succeed?
Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize)
Return the string dimension in pixels.
void DrawWidget(const Rect &r, int widget) const override
Draw the contents of a nested widget.
QueryString editbox
Editbox.
char *const buf
buffer in which text is saved
static uint TileX(TileIndex tile)
Get the X component of a tile.
SmallMap< int, QueryString * > querystrings
QueryString associated to WWT_EDITBOX widgets.
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x=0, int y=0, const GRFFile *textref_stack_grffile=nullptr, uint textref_stack_size=0, const uint32 *textref_stack=nullptr)
Display an error message in a window.
int DrawStringMultiLine(int left, int right, int top, int bottom, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
Draw string, possibly over multiple lines.
@ QSF_LEN_IN_CHARS
the length of the string is counted in characters
static const int MAX_CHAR_LENGTH
Max. length of UTF-8 encoded unicode character.
void Close() override
Hide the window and all its child windows, and mark them for a later deletion.
StringID caption
title of window
High level window description.
GrfSpecFeature GetGrfSpecFeature(TileIndex tile)
Get the GrfSpecFeature associated with the tile.
Date build_date
Date of construction of tile contents.
void DrawWidget(const Rect &r, int widget) const override
Draw the contents of a nested widget.
size_t Utf8StringLength(const char *s)
Get the length of an UTF-8 encoded string in number of characters and thus not the number of bytes th...
const NWID * GetWidget(uint widnum) const
Get the nested widget with number widnum from the nested widget tree.
@ WC_CONFIRM_POPUP_QUERY
Popup with confirm question; Window numbers:
TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID string)
Display vehicle loading indicators.
@ WC_QUERY_STRING
Query string window; Window numbers:
@ WDP_AUTO
Find a place automatically.
ResizeInfo resize
Resize information.
Common return value for all commands.
void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip)
Shows a tooltip.
@ WN_QUERY_STRING
Query string.
@ FS_NORMAL
Index of the normal font in the font tables.
void InitNested(WindowNumber number=0)
Perform complete initialization of the Window with nested widgets, to allow use.
int height
Height of the window (number of pixels down in y direction)
@ WF_WHITE_BORDER
Window white border counter bit mask.
QueryStringFlags
Flags used in ShowQueryString() call.
uint16 marklength
the length of the marked area in pixels
void StrMakeValidInPlace(char *str, const char *last, StringValidationSettings settings)
Scans the string for invalid characters and replaces then with a question mark '?' (if not ignored).
void SetDirty() const
Mark entire window as dirty (in need of re-paint)
StringID roadtype
Type of road on the tile.
uint Horizontal() const
Get total horizontal padding of RectPadding.
Rect GetBoundingRect(const Window *w, int wid, const char *from, const char *to) const
Get the bounding rectangle for a range of the query string.
@ WN_CONFIRM_POPUP_QUERY
Query popup confirm.
@ ES_NOT_HANDLED
The passed event is not handled.
void SetStringParameters(int widget) const override
Initialize string parameters for a widget.
QueryCallbackProc * proc
callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' click...
void GetNameOfOwner(Owner owner, TileIndex tile)
Set the right DParams to get the name of an owner.
uint offset
Current offset in the data/type arrays.
Class for the string query window.
int GetMainViewTop()
Return the top of the main view available for general use.
GameSettings _settings_game
Game settings of a running game or the scenario editor.
@ SA_FORCE
Force the alignment, i.e. don't swap for RTL languages.
Point total_size
union of sprite properties
EconomySettings economy
settings to change the economy
const char * GetCharAtPosition(const char *str, int x, FontSize start_fontsize)
Get the character from a string that is drawn at a specific position.
Window * parent
Parent window.
@ WL_INFO
Used for DoCommand-like (and some non-fatal AI GUI) errors/information.
CompanyID _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
std::vector< std::string > StringList
Type for a list of strings.
bool IsWidgetGloballyFocused(byte widget_index) const
Check if given widget has user input focus.
void ShowQueryString(StringID str, StringID caption, uint maxsize, Window *parent, CharSetFilter afilter, QueryStringFlags flags)
Show a query popup window with a textbox in it.
int left
x position of left edge of the window
WindowFlags flags
Window flags.
Rect Indent(int indent, bool end) const
Copy Rect and indent it from its position.
Money GetCost() const
The costs as made up to this moment.
void OnInit() override
Notification that the nested widget tree gets initialized.
bool caret
is the caret ("_") visible or not
bool _mouse_hovering
The mouse is hovering over the same point.
Rect WithWidth(int width, bool end) const
Copy Rect and set its width.
void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, ZoomLevel zoom)
Draw a sprite, not in a viewport.
@ WDF_MODAL
The window is a modal child of some other window, meaning the parent is 'inactive'.
Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion)
Calculate string bounding box for multi-line strings.
Coordinates of a point in 2D.
CharSetFilter afilter
Allowed characters.
StringID station_name
Type of station within the class.
uint64 * GetDataPointer() const
Get a pointer to the current element in the data array.
uint64 dparam[2]
Parameters of the str string.
bool SetFocusedWidget(int widget_index)
Set focus within this window to the given widget.
void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost)
Display animated income or costs on the map.
static const uint8 PC_BLACK
Black palette colour.
WindowNumber window_number
Window number within the window class.
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.
uint Vertical() const
Get total vertical padding of RectPadding.
void InvalidateData(int data=0, bool gui_scope=true)
Mark this window's data as invalid (in need of re-computing)
@ WC_NONE
No window, redirects to WC_MAIN_WINDOW.
@ SA_HOR_CENTER
Horizontally center the text.
Iterable ensemble of all valid Windows.
static const uint8 PC_GREY
Grey palette colour.
StringList landinfo_data
Info lines to show.
EventState OnKeyPress(WChar key, uint16 keycode) override
A key has been pressed.
bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height)
Set up a clipping area for only drawing into a certain area.
int GetStringHeight(const char *str, int maxw, FontSize fontsize)
Calculates height of string (in pixels).
Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom)
Get the size of a sprite.
byte dist_local_authority
distance for town local authority, default 20
uint64 params[10]
local copy of #_global_string_params
OskActivation
Method to open the OSK.
uint32 StringID
Numeric value that represents a string, independent of the selected language.
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...
uint16 bytes
the current size of the string in bytes (including terminating '\0')
int cancel_button
Widget button of parent window to simulate when pressing CANCEL in OSK.
CompanyID _current_company
Company currently doing an action.
@ WC_GAME_OPTIONS
Game options window; Window numbers:
bool IsNewGRFInspectable() const override
Is the data related to this window NewGRF inspectable?
void ShowFeederIncomeAnimation(int x, int y, int z, Money transfer, Money income)
Display animated feeder income.
static T Clamp(const T a, const T min, const T max)
Clamp a value between an interval.
void OnClick(Point pt, int widget, int click_count) override
A click with the left mouse button has been made on the window.
static const Date INVALID_DATE
Representation of an invalid date.
static const uint8 PC_LIGHT_YELLOW
Light yellow palette colour.
#define FONT_HEIGHT_NORMAL
Height of characters in the normal (FS_NORMAL) font.
void SetStringParameters(int widget) const override
Initialize string parameters for a widget.
void CloseWindowByClass(WindowClass cls)
Close all windows of a given class.
@ WC_TOOLTIPS
Tooltip window; Window numbers:
void UpdateSize()
Update Textbuf type with its actual physical character and screenlength Get the count of characters i...
void ShowNewGRFInspectWindow() const override
Show the NewGRF inspection window.
@ OWNER_NONE
The tile has no ownership.
Window used for asking the user a YES/NO question.
Dimension warning_size
How much space to use for the warning text.
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
Update size and resize step of a widget in the window.
@ NUM_CARGO
Maximal number of cargo types in a game.
static const int num_visible_lines
The number of lines visible simultaneously.
@ OSKA_SINGLE_CLICK
Single click after focus click opens OSK.
EventState
State of handling an event.
void ShowLandInfo(TileIndex tile)
Show land information window.
void OnClick(Point pt, int widget, int click_count) override
A click with the left mouse button has been made on the window.
uint8 osk_activation
Mouse gesture to trigger the OSK.
uint CountElapsed(uint delta)
Count how many times the interval has elapsed.
WindowClass window_class
Window class.
StringID str
Description of the tile.
@ WC_MAIN_WINDOW
Main window; Window numbers:
@ OSKA_DOUBLE_CLICK
Double click on the edit box opens OSK.
int top
y position of top edge of the window
@ SVS_NONE
Allow nothing and replace nothing.
char * stredup(const char *s, const char *last)
Create a duplicate of the given string.
Viewport * IsPtInWindowViewport(const Window *w, int x, int y)
Is a xy position inside the viewport of the window?
@ SA_LEFT
Left align the text.
byte GetCharacterWidth(FontSize size, WChar key)
Return width of character glyph.
static int CenterBounds(int min, int max, int size)
Determine where to draw a centred object inside a widget.
@ SA_CENTER
Center both horizontally and vertically.
#define Debug(name, level, format_string,...)
Ouptut a line of debugging information.
#define lengthof(x)
Return the length of an fixed size array.
int width
width of the window (number of pixels to the right in x direction)
uint16 rail_speed
Speed limit of rail (bridges and track)
@ WDP_MANUAL
Manually align the window (so no automatic location finding)
@ FR_DARKENED
If set the background is darker, allows for lowered frames with normal background colour when used wi...
byte CargoID
Cargo slots to indicate a cargo type within a game.
void CloseWindowById(WindowClass cls, WindowNumber number, bool force)
Close a window by its class and window number (if it is open).
void DrawWidget(const Rect &r, int widget) const override
Draw the contents of a nested widget.
Point GetCaretPosition(const Window *w, int wid) const
Get the current caret position.
bool IsNewGRFInspectable(GrfSpecFeature feature, uint index)
Can we inspect the data given a certain feature and index.
StringID owner_type[4]
Type of each owner.
void ShowOnScreenKeyboard(Window *parent, int button)
Show the on-screen keyboard (osk) associated with a given textbox.
Data structure for an opened window.
void QueryCallbackProc(Window *, bool)
Callback procedure for the ShowQuery method.
static T SoftClamp(const T a, const T min, const T max)
Clamp a value between an interval.
StringID tramtype
Type of tram on the tile.
virtual void OnQueryTextFinished(char *str)
The query window opened from this window has closed.
@ DC_QUERY_COST
query cost only, don't build.
int Width() const
Get width of Rect.
void SetWidgetDirty(byte widget_index) const
Invalidate a widget, i.e.
int GetMainViewBottom()
Return the bottom of the main view available for general use.
Specification of a rectangle with absolute coordinates of all edges.
Point pos
logical mouse position
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
Update size and resize step of a widget in the window.
StringID message
message shown for query window
int line_height
The height of a single line.
@ OWNER_WATER
The tile/execution is done by "water".
Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize)
Get the leading corner of a character in a single-line string relative to the start of the string.
@ QSF_ENABLE_DEFAULT
enable the 'Default' button ("\0" is returned)
bool in_window
mouse inside this window, determines drawing logic
#define CLRBITS(x, y)
Clears several bits in a variable.
void DrawWidget(const Rect &r, int widget) const override
Draw the contents of a nested widget.
@ WDP_CENTER
Center the window.
@ OSKA_IMMEDIATELY
Focusing click already opens OSK.
void CDECL void DeleteAll()
Delete every character in the textbuffer.
@ TD_RTL
Text is written right-to-left by default.
static const int DAY_TICKS
1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885.
Tile * _m
Tiles of the map.
TextDirection _current_text_dir
Text direction of the currently selected language.
CharSetFilter
Valid filter types for IsValidChar.
bool _right_button_down
Is right mouse button pressed?
void CopyInDParam(int offs, const uint64 *src, int num)
Copy num string parameters from array src into the global string parameter array.
@ WN_GAME_OPTIONS_ABOUT
About window.
void SetDParamStr(uint n, const char *str)
This function is used to "bind" a C string to a OpenTTD dparam slot.
static char * Utf8PrevChar(char *s)
Retrieve the previous UNICODE character in an UTF-8 encoded string.
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
std::string cargo_acceptance
Centered multi-line string for cargo acceptance.
GUISettings gui
settings related to the GUI
void ShowEstimatedCostOrIncome(Money cost, int x, int y)
Display estimated costs.
Data about how and where to blit pixels.
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
Update size and resize step of a widget in the window.
Helper/buffer for input fields.
virtual void Close()
Hide the window and all its child windows, and mark them for a later deletion.
uint16 road_speed
Speed limit of road (bridges and track)
uint16 markxoffs
the start position of the marked area in pixels