Commit Graph

21262 Commits

Author SHA1 Message Date
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.
2023-11-02 22:25:01 +00:00
Peter Nelson 18fb8e153f Codechange: Add __FILE__/__LINE__ of WindowDesc to WindowDesc.
This is to allow unit-tests to produce more useful output.
2023-11-02 22:25:01 +00:00
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.
2023-11-02 21:28:24 +00:00
translators 82ebc9860b Update: Translations from eints
finnish: 2 changes by hpiirai
danish: 1 change by bscargo
2023-11-02 18:38:58 +00:00
Rubidium a849b4e175 Fix: allow same length server password in the UI 2023-11-02 17:19:38 +01:00
Rubidium c6411168d8 Cleanup: missing spaces before continuation * in some comments 2023-11-01 22:56:11 +01:00
Peter Nelson c687b59efc Codechange: Use unique_ptr for SmallMapWindow's overlay. 2023-11-01 21:49:06 +00:00
Peter Nelson 53845bc024 Codechange: Move includes to correct place.
Some other source file inadvertently included things via smallmap_gui.h
2023-11-01 21:49:06 +00:00
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`.
2023-11-01 21:49:06 +00:00
Peter Nelson f91462f54b Codechange: Don't access SmallMapWindow method directly from LinkGraphOverlay. 2023-11-01 21:49:06 +00:00
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.
2023-11-01 21:37:53 +00:00
Peter Nelson 278b42d078 Codechange: Document Industry::GetCargoProduced/Accepted and add const-variant. 2023-11-01 21:37:53 +00:00
Peter Nelson 4f3adc038a Cleanup: Use standard comment codestyle. 2023-11-01 21:37:53 +00:00
Tyler Trahan 49d53c41ab
Doc: Don't use other names for road vehicle bay stops (#11418) 2023-11-01 21:19:31 +00:00
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.
2023-11-01 20:12:08 +00:00
Tyler Trahan 89480f3531
Change: Don't set vehicle on time if timetable not started (#11359) 2023-11-01 15:26:39 -04:00
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.
2023-11-01 18:44:23 +00:00
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
2023-11-01 18:38:53 +00:00
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.
2023-10-31 01:19:04 +00:00
frosch e81313e93e Feature: Base graphics can offer parameters for additional settings. 2023-10-31 01:41:50 +01:00
frosch de3f29d7b2 Add: store base graphics parameters in openttd.cfg. 2023-10-31 01:41:50 +01:00
frosch f09fda1ff0 Codechange: store the GRFConfig of the base graphics, once loaded. 2023-10-31 01:41:50 +01:00
frosch 0b7ecf6102 Codechange: use the shortname as unique id to identify the base graphics in openttd.cfg. 2023-10-31 01:41:50 +01:00
frosch 97df27e41f Codechange: Store base graphics settings in a separate section in openttd.cfg. 2023-10-31 01:41:50 +01:00
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.
2023-10-30 22:11:31 +00:00
Peter Nelson a8aba06a07 Fix: Insufficient space for labels on smallmap legend. 2023-10-30 22:11:31 +00:00
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
2023-10-30 18:38:55 +00:00
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
2023-10-29 18:37:50 +00:00
translators 9e6ea16ca7 Update: Translations from eints 2023-10-28 18:37:45 +00:00
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.
2023-10-28 19:07:50 +01:00
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.
2023-10-28 16:08:44 +01:00
Peter Nelson 062c19830b
Fix: OpenTTD can fail to exit on an error due to mutex locks in threads. (#11398) 2023-10-28 16:08:08 +01:00
translators 7b376493a2 Update: Translations from eints
dutch: 3 changes by Afoklala
french: 1 change by ottdfevr
2023-10-27 18:38:08 +00:00
translators 7b4ecb5241 Update: Translations from eints
korean: 3 changes by telk5093
slovak: 1 change by legitalk
polish: 4 changes by pAter-exe
2023-10-26 18:38:26 +00:00
Peter Nelson 5ae5c35f38 Codechange: Remove redundant WWT_PANEL from bootstrap error windows. 2023-10-26 12:43:20 +01:00
Peter Nelson a601a1f406 Change: Use modalpopup spacing for goal question windows. 2023-10-26 12:43:20 +01:00
Peter Nelson 616fb48e25 Change: Use modalpopup spacing for engine preview window. 2023-10-26 12:43:20 +01:00
Peter Nelson 19c314ea1f Change: Use modalpopup spacing for buy company window. 2023-10-26 12:43:20 +01:00
Peter Nelson 8a49c0eb2c Change: Use modalpopup spacing for network relay and survey windows. 2023-10-26 12:43:20 +01:00
Peter Nelson f78c2c9810 Fix: Incorrect title on framerate windows for AIs. 2023-10-25 19:35:42 +01:00
Peter Nelson d19832569e
Cleanup: No need to cast `const Font *` to itself. (#11395) 2023-10-25 13:08:07 +00:00
translators 3d7f54472d Update: Translations from eints
english (us): 3 changes by 2TallTyler
danish: 3 changes by bscargo
polish: 1 change by pAter-exe
2023-10-24 18:38:34 +00:00
translators 9cdf66d3a1 Update: Translations from eints
czech: 18 changes by vladoschreiner
german: 27 changes by Wuzzy2
2023-10-23 18:38:04 +00:00
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
2023-10-22 18:37:20 +00:00
Tyler Trahan 92ab114e13
Fix f49ffaa: Use DateAtStartOfYear() to calculate max timetable start date (#11388) 2023-10-22 10:51:06 -04:00
translators f32058e4e5 Update: Translations from eints 2023-10-21 18:37:29 +00:00
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>
2023-10-21 18:53:35 +02:00
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.
2023-10-21 14:26:36 +01:00
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.
2023-10-21 14:26:36 +01:00
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.
2023-10-21 14:26:36 +01:00
Tyler Trahan 2dd2910ab3
Feature: Cheat to fix station ratings at 100% (#11346) 2023-10-21 08:35:52 -04:00
Rubidium 37f84b7372 Codechange: replace x.size() != 0 with !x.empty() 2023-10-20 23:05:43 +02:00
Rubidium f16399f4c9 Codechange: replace x.size() > 0 with !x.empty() 2023-10-20 23:05:43 +02:00
Rubidium c9276c2959 Codechange: replace x.size() == 0 with x.empty() 2023-10-20 23:05:43 +02:00
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.
2023-10-20 20:14:46 +01:00
translators 4c24334fda Update: Translations from eints 2023-10-20 18:38:26 +00:00
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.
2023-10-20 18:40:48 +01:00
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.
2023-10-20 18:40:26 +01:00
Peter Nelson 90351578a6 Codechange: Use std::map instead of fixed array to store refit options.
This simplifies handling of available refit options.
2023-10-20 18:39:32 +01:00
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.
2023-10-20 18:39:32 +01:00
Peter Nelson bc8e26f4e7
Codechange: Simplify usage of GRFFile cargo_map. (#11349) 2023-10-20 18:38:54 +01:00
Peter Nelson 69e20e79ab Codechange: Add const versions of GetItem/GetGroup, and sprinkle liberally.
Non-const version of GetItem is not needed.
2023-10-20 18:37:27 +01:00
Peter Nelson 17ba9d8c96 Codechange: Use range-for instead of nullptr-terminated list in settingsgen.
This simplifies iteration and avoids use of pointers.
2023-10-20 18:37:27 +01:00
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.
2023-10-20 18:37:27 +01:00
Peter Nelson ec1cf96b62 Codechange: Move initialization of group-type to CreateGroup function. 2023-10-20 18:37:27 +01:00
Peter Nelson 8bd06807e4 Codechange: Pass initializer list instead of null-terminated list of group types. 2023-10-20 18:37:27 +01:00
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.
2023-10-20 18:37:27 +01:00
Peter Nelson c47a0e1578 Codechange: Correct scope of IniItem for for-loop. 2023-10-20 18:37:27 +01:00
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.
2023-10-20 18:37:27 +01:00
Peter Nelson 54b1a067eb Codechange: Test for nullptr instead of treating pointer as boolean. 2023-10-20 18:37:27 +01:00
Peter Nelson d3c5ae2648 Codechange: Add CreateGroup/CreateItem methods for ini files.
This abstracts the internals a bit.
2023-10-20 18:37:27 +01:00
Peter Nelson 0c85ce29ea Codechange: Pass ini file by reference and prefer automatic storage.
This avoids new/delete operations, and (not) checking for nullptr.
2023-10-20 18:37:27 +01:00
Peter Nelson 3961318974 Codechange: Accept std::string in RemoveGroup(). 2023-10-20 18:37:27 +01:00
Peter Nelson bb6fa9bf3b
Change: Display cargo lists in sorted cargo order. (#11383) 2023-10-20 17:32:17 +01:00
Tyler Trahan 088db62dba
Change: Always allow expanding towns in Scenario Editor to build new roads (#11377) 2023-10-19 17:01:45 -04:00
Jonathan G Rennison 4df2640f87 Fix: Tile slope missing from road stops varact2 variable 0x42 2023-10-19 20:05:36 +02:00
Peter Nelson e1c83869ed
Fix: Scale minimum width for server name by interface scale. (#11381) 2023-10-19 17:06:47 +00:00
Peter Nelson 9602de474d Codechange: Use iterators and/or range-for on cargo related loops. 2023-10-19 17:03:25 +01:00
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.
2023-10-19 17:03:25 +01:00
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
2023-10-17 16:25:48 -04:00
Loïc Guilloux ab805c4e9e
Fix #11375, 7c37dcb: Use STRING2 when the passed string can have 2 parameters (#11376) 2023-10-16 17:49:44 +00:00
Tyler Trahan f49ffaaaea
Fix e4fd99a, Fix #11270: Vehicle max age is not subject to leap years (#11372) 2023-10-15 22:34:03 +00:00
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.
2023-10-15 21:59:10 +01:00
translators 2be1b72a5b Update: Translations from eints
hungarian: 50 changes by Norodix
2023-10-15 18:36:51 +00:00
translators a73ef95a2b Update: Translations from eints
chinese (simplified): 5 changes by WenSimEHRP
2023-10-14 18:37:25 +00:00
Rubidium adad078b55 Fix #11367, 7c37dcb: use STRING1 when the passed string can have a parameter 2023-10-14 12:15:25 +02:00
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.
2023-10-13 20:47:28 +01:00
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.
2023-10-13 20:47:28 +01:00
Peter Nelson cda6f24fe8
Change: Filter duplicate paths from valid search path list. (#11363) 2023-10-09 21:38:13 +00:00
Loïc Guilloux 0458c15060
Cleanup: [MacOS] Remove unneeded WITH_SDL checks (#11360) 2023-10-09 19:35:15 +02:00
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.
2023-10-09 12:11:55 +00:00
translators 84201a8520 Update: Translations from eints
chinese (traditional): 80 changes by wpi3
chinese (simplified): 1 change by WenSimEHRP
2023-10-07 18:37:44 +00:00
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.
2023-10-06 21:09:24 +01:00
translators 89acfc7ff9 Update: Translations from eints
chinese (simplified): 1 change by WenSimEHRP
indonesian: 12 changes by liimee
2023-10-04 18:39:06 +00:00
Peter Nelson d1a94d75e1
Fix: Incorrect include path for timers. (#11351) 2023-10-04 17:02:16 +01:00
translators 7145b7060a Update: Translations from eints
romanian: 3 changes by bnegrut
2023-10-03 18:39:41 +00:00
merni-ns c794676928
Fix #10763, Fix #11168: Display variant groups that consist only of unavailable sub-groups (#11342) 2023-10-03 12:43:15 +00:00
Peter Nelson 5869f790d8
Fix: Check for engine variant loops during NewGRF initialization. (#11343)
Invalid NewGRFs could set up an engine variant loop that never ends. This
was checked for in some places that evaluated variants, but not all. In
most cases this would result in the engines not appearing, but could
potentially cause an infinite loop and crash.

Instead, during NewGRF initialization detect loops and remove invalid
variants before setting display flags.
2023-10-03 12:14:32 +01:00
merni-ns 077b08bbfa
Fix #11261: Set number of items correctly when choosing available airport set (#11344) 2023-10-03 12:58:44 +02:00
frosch 82c8720814 Fix #8846: When upgrading NewGRF presets, copy NewGRF parameters only if the NewGRF are compatible. Otherwise reset to defaults. 2023-10-02 22:32:30 +02:00