Commit Graph

21565 Commits (302ba934716b1de58138fb0def791ef60012dff0)

Author SHA1 Message Date
translators 7d0ce826db Update: Translations from eints
english (au): 5 changes by krysclarke
english (us): 5 changes by 2TallTyler
korean: 5 changes by telk5093
russian: 5 changes by Ln-Wolf
catalan: 5 changes by J0anJosep
french: 5 changes by glx22
9 months ago
Peter Nelson e749bbefe5
Change: Show rating in station list even with no cargo waiting. (#11540)
e745bd9 (r21144) changed the filter from cargo waiting to rating, which makes the station list display appear inconsistent with the cargo filter selection.
9 months ago
Peter Nelson 07a8bd21e4 Fix: Make station list filters use per-window state instead of global state.
Changing filters with multiple windows open would have unexpected effects leading to inconsistent state.

Now state is loaded and saved when the window is opened and closed, so state is still persistent.
9 months ago
Peter Nelson dcf730f1f6 Codechange: Optionally allow passing state to GUIList sorter function.
GUIList sorter functions can currently only use global state, which makes per-window-instance sorting difficult.
9 months ago
Peter Nelson 4d9f335f36 Change: Add outline of sprite to sprite aligner. 9 months ago
Peter Nelson f7380a4d2d Change: Make NewGRF Sprite Aligner window resizeable. 9 months ago
Peter Nelson 0434c1b474 Feature: (-tte) Add zoom level buttons to sprite aligner.
This allows for offsets to be adjusted a different zoom level than currently in use, and offset adjustment and display is also more convenient.
9 months ago
Peter Nelson 4e5700939d Change: Use sparse padding for sprite aligner. 9 months ago
Peter Nelson 9122b4eb47
Codechange: SetMinimalTextLines(1, 0) is implied for widgets with text. (#11536) 9 months ago
Peter Nelson 17c3ce8632
Codechange: Use maxdim instead of setting width/height separately. (#11535) 9 months ago
Peter Nelson aae6e0481e
Codechange: Rearrange AI/GS debug window following invalidate/set state/draw pattern. (#11483)
The AI/GS window updated its state as it was drawn, and would redraw again if some state had changed.

Instead, update state either during OnInvalidateData or before any drawing commences.
10 months ago
Peter Nelson 1084ab4b66 Add: Website button to Game Options window for basesets.
This links to the optional "url" item in the baseset's [metadata] section.
10 months ago
Peter Nelson cc528bd8fc Change: Adjust layout of Content and NewGRF Website buttons for consistency. 10 months ago
Peter Nelson 2272e8fe0e Add: Website button for Game Script settings window. 10 months ago
Peter Nelson f60c14a682 Add: Website button for AI settings window. 10 months ago
Peter Nelson 7ba89b946e
Change: Hide unused cargos from vehicle cargo filter. (#11533)
The list of used cargo types is updated when the list is invalidated.
10 months ago
Peter Nelson 9a92e02fa7
Change: Add tooltips for text file buttons, and shorten Website / Readme buttons. (#11534) 10 months ago
Patric Stout b866e52b17
Remove: officially mark Vista as no longer supported (#11531)
It is very likely Vista hasn't been working for years, but the
amount of users that use an OS that has been EoL for over 11 years
is very small, so reports happen rarely.
10 months ago
Peter Nelson a258833aee
Fix 67d071d: WC_STATION_LIST should be invalidated by owner, not station index. (#11530) 10 months ago
Peter Nelson 1aedea8eda Feature: Place cargo icon on cargo filter dropdowns.
Reveal the pixel art.
10 months ago
Peter Nelson 76701c4622 Add: Function to get largest cargo icon size. 10 months ago
Peter Nelson 8db7c79e79 Codechange: Add DropDownIcon constructor to override dimension.
This avoids the need to construct a DropDownIcon and set the dimension after.
10 months ago
Peter Nelson 49532914dd Change: Use CRTP-mixins to compose dropdown list items.
This allows list items to built from component parts as required, and additional
functionality is added:

* Icons and text can be positioned at the start or end of the space (templated.)
* Font size of text can be changed (templated.)
* Palette of sprites can be set (runtime.)
10 months ago
Peter Nelson 62e4d1e507 Codechange: Dimension must have both width and height.
Default parameters allowed Dimension to be constructed with only a width.

Instead use separate empty and width/height constructors to ensure that either none or both are provided.
10 months ago
Peter Nelson 0b1429ce14
Fix: AI window did not update button disabled state when changing values. (#11527) 10 months ago
Peter Nelson cc488ec6c9
Fix ddd609c: Reverse build probability callback was not called for articulated parts. (#11526) 10 months ago
Peter Nelson 4a5ab331e2
Change: Add extra padding to climate buttons to match pre-#11464. (#11525)
Padding used to be included in the SetMinimalSize() part which was removed, but also made it require specific sprite sizes.

This now adds padding on the already determined size, removing the need for hardcoding pixel dimensions and allowing the sprites to be any size.
10 months ago
Peter Nelson 6f7153bf71
Codechange: Make a generic DrawRectOutline function from DrawOutline. (#11524)
This allows drawing an outline from Rect, not just constrained to a Widget's Rect. And reduces duplication a little.
10 months ago
rubidium42 33ba609290 Fix #11521, e404ba0: size for remaining span determined incorrectly 10 months ago
rubidium42 cb8612ba79 Remove: ZOOM_LVL_COUNT
This is the only enumeration with a COUNT and END. The logic of the COUNT
implied that BEGIN could be non-zero, but all but two uses of zoom level
assume that BEGIN is zero, making the separate count only confusing.
10 months ago
Peter Nelson ddd609ce9b
Feature: Randomize direction of rail vehicle on build based on probability callback. (#11489)
This allows NewGRF authors to indicate that the game should randomly flip rail vehicles on build, without needing to use random bits nor duplicate sprites to handle it themselves.

To use this functionality, test for callback 162 (CBID_VEHICLE_BUILD_PROBABILITY)  and var10 = 0 (values other than 0 are reserved for future use), and return a value between 0 and 100 inclusive.

The return value is a percentage chance of reversing the vehicle. A value of 0 will always build a forward facing vehicle, and 100 will always build a reverse facing vehicle.
10 months ago
Peter Nelson 6f35f3274f
Fix ab1a4c6c: Crash if the "No Music" set is loaded because there is no current set_index. (#11511)
Add a helper function to get the current set_index which which checks it is in range.
10 months ago
rubidium42 27082f9efa Codechange: pass std::string references to OpenBrowser 10 months ago
Jonathan G Rennison 8437b20fed Fix: Deleting towns did not check for waypoints referencing the town 10 months ago
Peter Nelson 7b0afec11f Codechange: Use max_element to find highest cargo amount. 10 months ago
Peter Nelson 3f853d8003 Codechange: Use range-for to simplify getting first non-zero value.
This reduces indexed array access.
10 months ago
Tyler Trahan 4181d3c1ff Codechange: Don't use a magic number for the number of DiagDirections 10 months ago
Tyler Trahan 2dad9263d7 Doc: Add, fix, and clean up documentation inside town_cmd.cpp 10 months ago
Tyler Trahan 745945c4d3 Codechange: Be consistent with how we name common parameters
TileIndex is always tile and Town is always *t. Don't use t and *town.
10 months ago
Tyler Trahan 1b14eca9d9 Codechange: Rename TryClearTile() for clarity
The function does not execute the clearing action.
10 months ago
Tyler Trahan a98fe9f317 Codechange: Rename MakeTownHouseBigger() for clarity 10 months ago
Tyler Trahan 060672428d Codechange: Merge confusingly-named helper functions into their timer 10 months ago
Tyler Trahan 1f41e773d6 Codechange: Use consistent name for bay road stops
As of #10494, this is how we describe original dead-end road stops.
10 months ago
translators 5f442c9127 Update: Translations from eints
english (us): 1 change by 2TallTyler
10 months ago
Peter Nelson 519fe33175
Fix ab1a4c6c: Changing baseset/playlist while shuffle is on does not change song. (#11510)
The change-playlist function relied on toggling shuffle to restart playing which is no longer the case, so always handle it when changing playlist instead.
10 months ago
Peter Nelson e3924f3231
Fix #10811: Allow dragging vehicle in depot to any free row. (#11508) 10 months ago
Peter Nelson e6d132d24b
Fix #10926: New free wagons no longer split by type. (#11507)
NormalizeTrainVehInDepot() should only be called if an engine was built, not for wagons.
10 months ago
Peter Nelson 3df7d1aff9
Codechange: Template input buffer type in audio mixer. (#11505)
This reduces code duplication.
10 months ago
Peter Nelson e5aed24395
Codechange: Use std::array for industry tile cargo acceptance. (#11498)
This avoids use of memcpy/memset to copy or fill.
10 months ago
Peter Nelson f268c90bd3
Change: Use sparse padding for content download window. (#11501) 10 months ago
Peter Nelson ab1a4c6c80 Change: Don't restart playback when toggling playlist shuffle.
Instead update the selected playlist entry for the current song.
10 months ago
Peter Nelson 6c91c4b99d Fix: Invalidate playlist window when (un)shuffling playlist. 10 months ago
Peter Nelson 4c6ccb5248
Change: Try stopping extmidi player with SIGINT first. (#11404)
This may give the player a chance to issue MIDI note-off commands.

The kill/waitpid cycle is also less aggressive, waiting 50ms each time.
10 months ago
Peter Nelson e3622da408
Fix #11500: Rename Textfile GUI's LinkType to HyperlinkType. (#11502)
This disambiguates it with LinkType in league tables.
10 months ago
Peter Nelson 46098449b6
Fix 7cfcf65: cargo_filter_criteria is now a CargoID instead of a index. (#11497) 10 months ago
Peter Nelson 7bee955a4b
Change: Set height of larger heightmap/scenario worldgen buttons by text height. (#11496)
This allows the button height to scale properly by font size.
10 months ago
Jonathan G Rennison c5a292c0df
Fix #11493: Incorrect flow values in LinkGraphJob::EdgeAnnotation (#11494) 10 months ago
translators c6b9227dbb Update: Translations from eints 10 months ago
Tyler Trahan d28caa3ced Codechange: Use ticks for timetable start date 10 months ago
Tyler Trahan 3902acb13d Codechange: Define a TickCounter variable type for TimerGameTick::counter 10 months ago
Peter Nelson bc1d49ebf4 Codechange: Add missing `ar` from `Toolb`. 10 months ago
Peter Nelson 5489b9fc0c Codechange: Undo #11447, drop down list divider lines are now explicit. 10 months ago
Peter Nelson 667be98ce8 Codechange: List toolbar menu items and dividers explicitly.
This makes it clearer what items will be shown in the list, allows for non-consecutive
string IDs, and means unused enum values are not necessary.
10 months ago
Peter Nelson 47eabe0cd9
Fix 7cfcf65: Check if last-remembered build vehicle cargo filter is valid. (#11486)
This can be invalid when switching between games with different cargoes loaded.
10 months ago
Peter Nelson 096da3e59f
Fix #11407: Don't steal focus from dropdown menus. (#11484) 10 months ago
Peter Nelson 09d01bd015
Fix: Restore original cargo legend 'blob' dimensions. (#11480)
An off-by-one in a previous life made the 'blob' too narrow.
10 months ago
Peter Nelson c2f19fed24
Fix: Widget without tooltip should use STR_NULL not STR_EMPTY. (#11482) 10 months ago
Peter Nelson c18a1494b7
Codechange: Remove FONT_HEIGHT_... macros. (#11481)
These make it look like we're dealing with a constant, but actually each is a call to `GetCharacterHeight(...)`.
10 months ago
translators 96ec9c1b47 Update: Translations from eints
indonesian: 67 changes by ekaknl22
10 months ago
Peter Nelson 0d60dc0353 Fix 96d98d08: Crash in text layouter due to trying to find height of string with zero-width.
96d98d08 removed the hardcoded minimum width in favour of all-calculated widths, however this does not work when determining multiline text sizes.
10 months ago
Peter Nelson 62d4fd0572 Codechange: Add method to guess the width/height required for a multiline string.
This is necessary for widget layouts where a minimum width is not yet known during UpdateWidgetSize().
10 months ago
Peter Nelson f281525492 Codechange: Add method to resize both width and height of a widget. 10 months ago
Peter Nelson d04fd4602d Codechange: Assert that max width passed to GetStringHeight is non-zero.
Max width of zero will cause text layouters to crash, potentially after exhausting memory first.
10 months ago
Peter Nelson 0578b8eaa9
Change: Use picker-spacing for scenario found town window. (#11478) 10 months ago
Peter Nelson a58a043402
Fix 6065122: Missing SetFill on worldgen spacer. (#11477) 10 months ago
Jonathan G Rennison 9822fa6584
Fix: Trivial autoreplace of mixed cargo articulated engines (#11253)
Do not fail autoreplace/autorenew of mixed cargo articulated engines
due to an inability to refit to mixed cargoes, when no refit is
required because the target engine already has a suitable set of cargoes.
Notably, this allows autorenew (autoreplace to same engine type)
to succeed.
10 months ago
Peter Nelson 96d98d08c8
Change: Use sparse padding for main intro menu. (#11475) 10 months ago
Peter Nelson c80fa7d752
Codechange: Simplify setting minimum width for game options dropdown lists. (#11474)
Height isn't necessary as drop down controls already have sufficient height, so we can use GetDropDownListDimension() to get the width.
10 months ago
Peter Nelson f58a7ef673
Codechange: Remove now-unnecessary containers in picker layouts. (#11473)
These are no longer necessary as the issue they work around was resolved by #11471
10 months ago
Peter Nelson 293a26f248
Change: Use sparse padding and SETTING_BUTTON sizes for custom currency window. (#11472) 10 months ago
Peter Nelson 05b55c4d43
Fix: Extra space allocated to container-within-container may not get allocated to children. (#11471)
Always derive additional length from contained widgets instead of from the container, as the container's minimal length may have been adjusted by an NC_EQUALSIZE parent container.
10 months ago
translators 29102ce42c Update: Translations from eints
dutch: 1 change by Afoklala
10 months ago
Peter Nelson 08778094f4
Fix: extmidi did not move on to next song after playing ends. (#11469)
`song` is no longer a C-style string so cannot be cleared by writing a NUL char.
Use `.clear()` to properly clear a std::string.
10 months ago
Peter Nelson b2d4d90502 Change: Apply interface scaling to NewGRF settings min/max sizes. 10 months ago
Peter Nelson 42ae61a4fe Change: Use sparse padding for NewGRF settings window. 10 months ago
Peter Nelson cdb4e98a15
Change: Use sparse padding for AI/GS settings windows. (#11466) 10 months ago
Peter Nelson f93711838f
Fix 6317967: Missing exception for SetPipRatio(). (#11465) 10 months ago
Peter Nelson 60651227a0
Change: Simplify world gen widgets and use sparse padding. (#11464) 10 months ago
translators bca321443a Update: Translations from eints
french: 1 change by Lishouuu
10 months ago
Peter Nelson 7d48a3f073
Codechange: Move RectPadding::zero definition to header. (#11461)
This potentially allows better inlining/optimization.
10 months ago
Peter Nelson e2e0753916
Codechange: Use GetCurrentRect() where feasible. (#11460) 10 months ago
Peter Nelson 17ceed0241
Change: Use sparse padding for Game Options window. (#11463) 10 months ago
Peter Nelson 306e75223a Change: Adjust layouts and standardize spacing for company-related windows. 10 months ago
Peter Nelson 58c037fba0 Change: Increase finance window lines (and underlines) with interface scale. 10 months ago
translators 1dff1e34f6 Update: Translations from eints
tamil: 3 changes by Jeyanthinath
10 months ago
Peter Nelson 7cfcf65f95 Codechange: Simplify cargo filter lists, building only when required.
Some cargo filter lists were built in advance, and used as lookups to test which cargo type to filter.

Instead, use the Cargo ID directly as the filter parameter, and build the lists only when the drop down list is used.
10 months ago
Peter Nelson 08dfe35442 Codechange: Move DropDownList height and width calculation to helper. 10 months ago
translators 1242b355e5 Update: Translations from eints
danish: 1 change by bscargo
polish: 1 change by pAter-exe
10 months ago
Peter Nelson c877494f7a
Codechange: Simplify autoreplace rail/road types by using separate widget. (#11457)
This avoids needing to determine which type of list to deal with by additionally checking the window number for VEH_TRAIN/VEH_ROAD.
10 months ago
Tyler Trahan 7a6d102c4b
Codechange: Clean up timetable start checks (#11456) 10 months ago
translators 5446ece100 Update: Translations from eints
vietnamese: 7 changes by KhoiCanDev
korean: 1 change by telk5093
catalan: 7 changes by J0anJosep
10 months ago
translators 1432511fe5 Update: Translations from eints
english (au): 1 change by krysclarke
italian: 7 changes by Rivarossi
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 1 change by azulcosta
portuguese (brazilian): 1 change by pasantoro
10 months ago
Tyler Trahan 235ac0bceb
Codechange: Reword rail/road type label constants (#11451) 10 months ago
translators ef1abbcd1f Update: Translations from eints 10 months ago
Peter Nelson bd2ddb07ca
Change: Move baseset missing/corrupted files label to list item. (#11455)
This allows any baseset error to be displayed in the drop down list so it is more easily visible, and avoids wasted space in the layout.
10 months ago
Peter Nelson 1071acb483
Codechange: Redundant use of char * and c_str(). (#11454) 10 months ago
Peter Nelson 938c8339d2 Codechange: Ensure space between `for`/`if` and `(`. 10 months ago
Peter Nelson d4008850e3 Codechange: Ensure function opening `{` is on new line. 10 months ago
Jonathan G Rennison 1de1af08b9
Codechange: Replace AllocatedStringParameters with ArrayStringParameters (#11452)
All uses of AllocatedStringParameters are with a compile-time fixed
constant.
Use of a dynamically allocated buffer on the heap is unnecessary and
increases overhead, particularly due to frequent use as a temporary.
10 months ago
translators 92816ac96b Update: Translations from eints
german: 3 changes by SecretIdetity
romanian: 6 changes by bnegrut
10 months ago
Peter Nelson 9f90ab7b04
Codechange: Use rail/road type label constants instead of literals. (#11450) 10 months ago
translators 382d7a9076 Update: Translations from eints
hungarian: 54 changes by titanicbobo
10 months ago
Peter Nelson 90bd8e64d8 Change: Simplify help window widgets and use sparse padding. 10 months ago
Peter Nelson 55adbe10b7 Add: WidgetDimensions for 'sparse' widget windows.
These are for windows that have space between widgets instead of being clumped together.
10 months ago
translators 56657eeaae Update: Translations from eints
chinese (simplified): 1 change by WenSimEHRP
danish: 1 change by bscargo
hindi: 111 changes by NisheshTyagi
10 months ago
Peter Nelson 842cf87765 Change: Bring airport picker inline with other pickers. 10 months ago
Peter Nelson b216dc493f Change: Bring dock picker inline with other pickers. 10 months ago
Peter Nelson 27b5979056 Change: Improve layout of object picker. 10 months ago
Peter Nelson db18f60beb Change: Improve layout of road/tram stop pickers. 10 months ago
Peter Nelson 61deab08fc Change: Improve layout of station picker. 10 months ago
Peter Nelson 136551408c
Change: Show empty string drop down entries as divider. (#11447) 10 months ago
Peter Nelson ab535c0a86
Codechange: Add base() method to StrongType to allow access to the base type without casting. (#11445)
This removes the ability to explicitly cast to the base type, but the requirement
to use .base() means the conversion is still explicit.
10 months ago
translators 737775f834 Update: Translations from eints
korean: 14 changes by telk5093
polish: 1 change by pAter-exe
10 months ago
Peter Nelson badce415ea Change: Add horizontal scrollbar to Industry Directory window.
This list could be very wide depending on industries and language.
10 months ago
Peter Nelson 8ff6562b2f Codechange: Reduce variable scope. 10 months ago
Peter Nelson 6b9dc8cfcf Codechange: Don't filter industry list by cargo type every 3-sec refresh.
The 3-sec refresh is to update the list sorting. The filter only needs to
be applied once rebuilding the list.
10 months ago
Peter Nelson 4033750968 Codechange: Remove redundant NWID_VERTICAL in Industry Directory layout. 10 months ago
Peter Nelson d380f2f3a2 Codechange: Simplify layout of depot pickers. 10 months ago
Peter Nelson 665902f5ba Codechange: Add widget dimensions to standardise picker winodws. 10 months ago
Peter Nelson 3cab980b30 Codechange: Skip invisible (zero-size) widgets in PIP Containers.
This gets rid of doubled-up spacing where an invisible child widget would be.
10 months ago
Peter Nelson 6317967dba Codechange: Add ability to allocate PIP-space dynamically by ratio.
This can be used to space out, centre, start-align, or end-align widgets without additional spacers.
10 months ago
Peter Nelson ac54bd7e58 Codechange: Apply PIP during AssignSizePosition() instead of SetupSmallestSize(). 10 months ago
Peter Nelson 43aa91a7f5
Fix #11437: Flipped shorter rail vehicles disappear in windows. (#11446)
Mixed signed/unsigned strikes again, causing an incorrect sprite offset for shortened vehicles.
10 months ago
Peter Nelson a9aaa2a183 Codechange: Don't be lenient with invalid NWidgetPart lists.
Some NWidgetPart combinations were ignored but it was not clear that they do nothing. Instead, assert if NWidgetPart is incorrectly applied.
10 months ago
Peter Nelson b1eb5533eb Add: WindowDesc unit test to validate NWidgetPart lists. 10 months ago
Peter Nelson 1c94fb0389 Add: Mock sprite cache intialization.
This fills up the sprite cache with SPR_OPENTTD_BASE + OPENTTD_SPRITE_COUNT zero-size sprites, to
allow GetSpriteSize() calls to continue from unit-tests.
10 months ago
Peter Nelson 05436d9c2f Add: Expose minimal parts of SpriteCache internals.
These parts are needed to be able to mock the SpriteCache for unit-tests.
10 months ago
Peter Nelson 46f63074da Add: MockFontCache for testing GUI code that only needs to know font sizes. 10 months ago
translators af4c7799fe Update: Translations from eints
korean: 1 change by telk5093
finnish: 1 change by hpiirai
portuguese (brazilian): 1 change by pasantoro
10 months ago
Peter Nelson b5861fd8f3
Fix: Using MIN_YEAR for a date is probably wrong, Use MIN_DATE instead. (#11444)
Even with strong types ...
10 months ago
Peter Nelson ef385499c7
Codechange: Remove ineffective NWidgetParts. (#11443) 10 months ago
translators 01728177e7 Update: Translations from eints
english (us): 3 changes by 2TallTyler
french: 2 changes by Lishouuu
10 months ago
Michael Lutz 071fdab236 Codechange: Replicate cursor screen backup to chat message display, removing explicit memory management.
Incidentally, this makes Blitter::GetBytesPerPixel unneeed.
10 months ago
Peter Nelson bbd64bbe2b
Fix #9545: Crash when all cargo types are disabled. (#11432)
This is not a very useful state, but it's nice to not crash.

Some parts of the game don't (yet) check for cargo types being redefined, that is out-of-scope here.
10 months ago
Patric Stout c059ce0c97
Fix cda6f24f: don't ignore binary-dir if it happens to be working-dir (#11431)
Some of our code ignores the SP_WORKING_DIR for some actions, which
means that if, for example, your SP_BINARY_DIR is the same as your
SP_WORKING_DIR, neither is scanned.

Instead, only add SP_WORKING_DIR if it is unique.
10 months ago
Peter Nelson db6b32e421
Codechange: Avoid pointers and lengthof in ExpensesList. (#11427)
Use std::initializer_list which allows iteration.
10 months ago
Michael Lutz 86e28e79fb Fix #11402: Make string filter locale-aware. 11 months ago
Michael Lutz c294eaacc1 Fix: char_traits::find needs to return nullptr if nothing was found. 11 months ago
Peter Nelson 7d4a91ef9e
Cleanup: Remove some unused functions. (#11429)
These were picked up with cppcheck.
11 months ago
translators 4c58df75fd Update: Translations from eints
english (au): 1 change by krysclarke
russian: 1 change by Ln-Wolf
dutch: 3 changes by Afoklala
portuguese: 1 change by azulcosta
11 months ago
Peter Nelson ce6e739491 Codechange: Add unit-test to check if nested widget parts of properly closed.
Properly closed means exactly one EndContainer for every Container widget.
11 months ago
Peter Nelson e8db137135 Codechange: Move test for Container WidgetType to helper function. 11 months ago
Peter Nelson d4a77411a5
Fix: Some NWidget lists were not properly closed. (#11425) 11 months ago
Peter Nelson e563057478 Add: WindowDesc unit test to validate ini-key value.
ini-key must be present if WWT_DEFSIZEBOX or WWT_STICKYBOX is present.
This was previously enforced by a workflow, however that parsed the source
code with regex which turned out to be error-prone.
11 months ago
Peter Nelson 18fb8e153f Codechange: Add __FILE__/__LINE__ of WindowDesc to WindowDesc.
This is to allow unit-tests to produce more useful output.
11 months ago
Peter Nelson 873f93cab1
Fix: AI config window should not have an ini_key. (#11423)
This was missed by the workflow script that enforces this constraint.
11 months ago
translators 82ebc9860b Update: Translations from eints
finnish: 2 changes by hpiirai
danish: 1 change by bscargo
11 months ago
Rubidium a849b4e175 Fix: allow same length server password in the UI 11 months ago
Rubidium c6411168d8 Cleanup: missing spaces before continuation * in some comments 11 months ago
Peter Nelson c687b59efc Codechange: Use unique_ptr for SmallMapWindow's overlay. 11 months ago
Peter Nelson 53845bc024 Codechange: Move includes to correct place.
Some other source file inadvertently included things via smallmap_gui.h
11 months ago
Peter Nelson ed8df72c49 Revert 6b68956: Move declaration of SmallMapWindow out of header file.
This split needlessly complicates `SmallMapWindow` for the sake of one method (no longer) used by `LinkGraphOverlay`.
11 months ago
Peter Nelson f91462f54b Codechange: Don't access SmallMapWindow method directly from LinkGraphOverlay. 11 months ago
Peter Nelson ff5e8bb9a3 Fix #11413: Incorrect sorting by industry production.
Error caused by single character mistake. However this algorithm was inefficent if a filter was specified, and clearly the flow was error-prone.

Now using separately-scoped loops to avoid similar.
11 months ago
Peter Nelson 278b42d078 Codechange: Document Industry::GetCargoProduced/Accepted and add const-variant. 11 months ago
Peter Nelson 4f3adc038a Cleanup: Use standard comment codestyle. 11 months ago
Tyler Trahan 49d53c41ab
Doc: Don't use other names for road vehicle bay stops (#11418) 11 months ago
Peter Nelson d3cb6e1e67
Codechange: Call Widget::SetDirty/SetLowered directly. (#11417)
In these instances we already have the widget to hand, so don't need to look it up by index again.
11 months ago
Tyler Trahan 89480f3531
Change: Don't set vehicle on time if timetable not started (#11359) 11 months ago
Peter Nelson bb50cbb772
Codechange: Assign/StoreSizePosition x/y can be negative. (#11416)
AssignSizePosition is used with negative values when an NWidgetMatrix is
scrolled, but they were passed as unsigned and then stored as signed.

Widget pos_x/pos_y were already made signed.
11 months ago
translators c97120f003 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (simplified): 5 changes by WenSimEHRP
korean: 2 changes by telk5093
russian: 1 change by Ln-Wolf
portuguese: 1 change by azulcosta
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
11 months ago
Peter Nelson 35a7770fde
Fix 233aac5: Set newline default comment for new groups. (#11411)
The newline space between ini groups is actually recorded as a comment of the group. This got inadvertantly dropped in #11364.
11 months ago
frosch e81313e93e Feature: Base graphics can offer parameters for additional settings. 11 months ago
frosch de3f29d7b2 Add: store base graphics parameters in openttd.cfg. 11 months ago
frosch f09fda1ff0 Codechange: store the GRFConfig of the base graphics, once loaded. 11 months ago
frosch 0b7ecf6102 Codechange: use the shortname as unique id to identify the base graphics in openttd.cfg. 11 months ago
frosch 97df27e41f Codechange: Store base graphics settings in a separate section in openttd.cfg. 11 months ago
Peter Nelson 2d3fef3113 Fix: Incorrect padding for smallmap legend 'icon'.
The size of this icon is based off FONT_HEIGHT_SMALL - 1, so it makes sense to use a scaled 1 here.
11 months ago
Peter Nelson a8aba06a07 Fix: Insufficient space for labels on smallmap legend. 11 months ago
translators 186829b99f Update: Translations from eints
english (au): 1 change by krysclarke
dutch: 1 change by TrueBrain
portuguese: 1 change by azulcosta
polish: 4 changes by pAter-exe
11 months ago
translators 40f52afac2 Update: Translations from eints
indonesian: 1 change by liimee
russian: 2 changes by Ln-Wolf
finnish: 1 change by hpiirai
danish: 1 change by bscargo
french: 1 change by ottdfevr
portuguese (brazilian): 1 change by pasantoro
11 months ago
translators 9e6ea16ca7 Update: Translations from eints 11 months ago
Peter Nelson c0aa9a5f87
Add: Debug tool to draw widget outlines. (#11401)
This is considered a developer tool and is controlled from the help menu (or default hotkey Ctrl-O).

This draws a white dashed outline around widgets. NWidgetSpacer and (unused) WWT_EMPTY widgets are also filled with check pattern to highlight them, as they usually indicate a design issue.
11 months ago
Peter Nelson 129e98fbab
Fix d42a78f: Some raw drop down list strings may need token processing. (#11400)
Storing the raw string without processing though GetString() caused token
processing to be skipped.
11 months ago
Peter Nelson 062c19830b
Fix: OpenTTD can fail to exit on an error due to mutex locks in threads. (#11398) 11 months ago
translators 7b376493a2 Update: Translations from eints
dutch: 3 changes by Afoklala
french: 1 change by ottdfevr
11 months ago
translators 7b4ecb5241 Update: Translations from eints
korean: 3 changes by telk5093
slovak: 1 change by legitalk
polish: 4 changes by pAter-exe
11 months ago
Peter Nelson 5ae5c35f38 Codechange: Remove redundant WWT_PANEL from bootstrap error windows. 11 months ago
Peter Nelson a601a1f406 Change: Use modalpopup spacing for goal question windows. 11 months ago
Peter Nelson 616fb48e25 Change: Use modalpopup spacing for engine preview window. 11 months ago
Peter Nelson 19c314ea1f Change: Use modalpopup spacing for buy company window. 11 months ago
Peter Nelson 8a49c0eb2c Change: Use modalpopup spacing for network relay and survey windows. 11 months ago
Peter Nelson f78c2c9810 Fix: Incorrect title on framerate windows for AIs. 11 months ago
Peter Nelson d19832569e
Cleanup: No need to cast `const Font *` to itself. (#11395) 11 months ago
translators 3d7f54472d Update: Translations from eints
english (us): 3 changes by 2TallTyler
danish: 3 changes by bscargo
polish: 1 change by pAter-exe
11 months ago
translators 9cdf66d3a1 Update: Translations from eints
czech: 18 changes by vladoschreiner
german: 27 changes by Wuzzy2
11 months ago
translators d1351fa0d2 Update: Translations from eints
english (au): 3 changes by krysclarke
russian: 3 changes by Ln-Wolf
finnish: 3 changes by hpiirai
turkish: 4 changes by BeratSJ
french: 3 changes by ottdfevr
portuguese: 3 changes by azulcosta
portuguese (brazilian): 3 changes by pasantoro
11 months ago
Tyler Trahan 92ab114e13
Fix f49ffaa: Use DateAtStartOfYear() to calculate max timetable start date (#11388) 11 months ago
translators f32058e4e5 Update: Translations from eints 11 months ago
Bernhard Reutner-Fischer ac42dea7b2 Codechange: Remove unused parameter for Height()
DropDownListItem::Height does not need to take an argument so remove it

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
11 months ago
Peter Nelson 59a2abd298 Codechange: Use unified NWidgetContainer methods instead of duplicating.
Most NWidgetContainer derivatives implemented Draw() and GetWidgetFromPos()
the same way. Move this these to NWidgetContainer itself to avoid repeating.
11 months ago
Peter Nelson af41c5cb4e Codechange: Hide toolbar buttons by setting width to zero.
Zero-width is how widgets are hidden elsewhere.
This removes the need for an extra array to lookup if a button is hidden.
11 months ago
Peter Nelson 81ecbaaa33 Codechange: Hide multiplayer headers by setting width to zero.
Zero-width is how widgets are hidden elsewhere.
This removes the need for an extra array to lookup if a header is hidden.
11 months ago
Tyler Trahan 2dd2910ab3
Feature: Cheat to fix station ratings at 100% (#11346) 11 months ago
Rubidium 37f84b7372 Codechange: replace x.size() != 0 with !x.empty() 11 months ago
Rubidium f16399f4c9 Codechange: replace x.size() > 0 with !x.empty() 11 months ago
Rubidium c9276c2959 Codechange: replace x.size() == 0 with x.empty() 11 months ago
Peter Nelson f06b3e9846
Change: Use CARGO_LIST to show station cargo acceptance changes. (#11379)
This simplifies construction of the news message and allows for more than
two changes to be show in one line.
11 months ago
translators 4c24334fda Update: Translations from eints 11 months ago
Peter Nelson fd6f1e844a
Codechange: Avoid emplace_back(new()) into a unique_ptr. (#11384)
This could theoretically leave an unmanaged pointer in certain circumstances, and directly using
make_unique shows intent.
11 months ago
Peter Nelson 429a6f58e7
Codechange: Use max_element to find best cargo (sub-)type in NewGRF var 42. (#11370)
This replaces two manual loops to find the best cargo (sub-)type.
11 months ago
Peter Nelson 90351578a6 Codechange: Use std::map instead of fixed array to store refit options.
This simplifies handling of available refit options.
11 months ago
Peter Nelson e4f94747f3 Codechange: Use comparator struct to sort cargo ID by predefined sort order.
This allows reuse of the comparator where a typename is used instead.
11 months ago
Peter Nelson bc8e26f4e7
Codechange: Simplify usage of GRFFile cargo_map. (#11349) 11 months ago
Peter Nelson 69e20e79ab Codechange: Add const versions of GetItem/GetGroup, and sprinkle liberally.
Non-const version of GetItem is not needed.
11 months ago
Peter Nelson 17ba9d8c96 Codechange: Use range-for instead of nullptr-terminated list in settingsgen.
This simplifies iteration and avoids use of pointers.
11 months ago
Peter Nelson 233aac567b Codechange: Use std::list instead of C-linked list for ini files.
This removes self-management of memory with new/delete and allows simpler iteration.
11 months ago
Peter Nelson ec1cf96b62 Codechange: Move initialization of group-type to CreateGroup function. 11 months ago
Peter Nelson 8bd06807e4 Codechange: Pass initializer list instead of null-terminated list of group types. 11 months ago
Peter Nelson 1fecbeff76 Codechange: Remove create parameter from IniLoadFile::GetGroup.
GetGroup now only returns nullptr if the group does not exist.
Use GetOrCreateGroup to create a group.

This avoids creating groups while reading ini files.
11 months ago
Peter Nelson c47a0e1578 Codechange: Correct scope of IniItem for for-loop. 11 months ago
Peter Nelson 6ce7195ef1 Codechange: Split GetGroup into GetGroup/GetOrCreateGroup.
This follows the pattern used for GetItem/GetOrCreateItem, and allows use
of references where we know the group must exist.
11 months ago
Peter Nelson 54b1a067eb Codechange: Test for nullptr instead of treating pointer as boolean. 11 months ago
Peter Nelson d3c5ae2648 Codechange: Add CreateGroup/CreateItem methods for ini files.
This abstracts the internals a bit.
11 months ago
Peter Nelson 0c85ce29ea Codechange: Pass ini file by reference and prefer automatic storage.
This avoids new/delete operations, and (not) checking for nullptr.
11 months ago
Peter Nelson 3961318974 Codechange: Accept std::string in RemoveGroup(). 11 months ago
Peter Nelson bb6fa9bf3b
Change: Display cargo lists in sorted cargo order. (#11383) 11 months ago
Tyler Trahan 088db62dba
Change: Always allow expanding towns in Scenario Editor to build new roads (#11377) 11 months ago
Jonathan G Rennison 4df2640f87 Fix: Tile slope missing from road stops varact2 variable 0x42 11 months ago
Peter Nelson e1c83869ed
Fix: Scale minimum width for server name by interface scale. (#11381) 11 months ago
Peter Nelson 9602de474d Codechange: Use iterators and/or range-for on cargo related loops. 11 months ago
Peter Nelson 2a88e0fab3 Codechange: Use bitmask instead of array for cargo consistency check.
We only need to know if a cargo type is accepted, not how much.
11 months ago
Jonathan G Rennison a1c6923c63
Fix: Assertion in sprite aligner window (#11371)
When clicking sprite number after re-opening window having previously used sprite picker tool
11 months ago
Loïc Guilloux ab805c4e9e
Fix #11375, 7c37dcb: Use STRING2 when the passed string can have 2 parameters (#11376) 11 months ago
Tyler Trahan f49ffaaaea
Fix e4fd99a, Fix #11270: Vehicle max age is not subject to leap years (#11372) 11 months ago
Peter Nelson 356a5d5773
Codechange: Use std::vector in fallback layouter, and shorten accessors. (#11355)
This avoids use of malloc/free (and custom move constructors), and follows how the exist layouters are written.
11 months ago
translators 2be1b72a5b Update: Translations from eints
hungarian: 50 changes by Norodix
11 months ago
translators a73ef95a2b Update: Translations from eints
chinese (simplified): 5 changes by WenSimEHRP
11 months ago
Rubidium adad078b55 Fix #11367, 7c37dcb: use STRING1 when the passed string can have a parameter 11 months ago
Peter Nelson bdcf6b6acd Fix: Treat closing network relay window as a choice of "No".
Issue ConnectFailure when closing the window if the relay request is
considered unhandled.
11 months ago
Peter Nelson f379b31e28 Add: data parameter in Window::Close method.
This allows passing data when closing a window, e.g. to indicate how it was closed.
11 months ago
Peter Nelson cda6f24fe8
Change: Filter duplicate paths from valid search path list. (#11363) 11 months ago
Loïc Guilloux 0458c15060
Cleanup: [MacOS] Remove unneeded WITH_SDL checks (#11360) 11 months ago
Peter Nelson ac9db3f5aa
Codechange: Don't use bit-field in Yapf rail node. (#11362)
Compacting 3 booleans into 3 bits could save memory allocation, however this data is inside a union which also contains a 4-byte integer. As such this gives the cost penalty of a bit-field without any benefit.
11 months ago
translators 84201a8520 Update: Translations from eints
chinese (traditional): 80 changes by wpi3
chinese (simplified): 1 change by WenSimEHRP
11 months ago
Peter Nelson 2fd3d943aa
Fix 94167dfd: Don't shade the currently selected engine in autoreplace window. (#11354)
This breaks #7729 which specifically allows autoreplace of same engine types, and also did not work properly if the engine had been built during the current game session.
11 months ago
translators 89acfc7ff9 Update: Translations from eints
chinese (simplified): 1 change by WenSimEHRP
indonesian: 12 changes by liimee
12 months ago
Peter Nelson d1a94d75e1
Fix: Incorrect include path for timers. (#11351) 12 months ago
translators 7145b7060a Update: Translations from eints
romanian: 3 changes by bnegrut
12 months ago
merni-ns c794676928
Fix #10763, Fix #11168: Display variant groups that consist only of unavailable sub-groups (#11342) 12 months ago