Compare commits

..

2071 Commits

Author SHA1 Message Date
translators c876c59d41 Update: Translations from eints
maori (new zealand): 4 changes by Kyle-McDangersword
catalan: 36 changes by J0anJosep
2026-07-18 06:28:18 +00:00
Rubidium eb62295cc0 Codechange: expose saveload.h less to the rest of the game 2026-07-17 19:53:59 +02:00
translators 6892b8a463 Update: Translations from eints
swedish: 7 changes by Brickblock1
2026-07-17 06:36:39 +00:00
Rubidium 9a02ac21e8 Codechange: let GrfID be a Label 2026-07-16 19:54:53 +02:00
Rubidium 5298a18418 Fix fa4b9819c0: endianness issues with saving of labels 2026-07-16 19:05:06 +02:00
Cyprian Klimaszewski 5b9f18d8fd Codefix #15828: set was renamed to density only in source file (#15865) 2026-07-16 09:50:51 +00:00
translators d97005e31e Update: Translations from eints
estonian: 17 changes by JooReb
catalan: 113 changes by J0anJosep
2026-07-16 06:41:28 +00:00
Peter Nelson 3f2f61c49b Codechange: Make TextfileType a scoped enum (#15864) 2026-07-15 23:21:59 +01:00
dependabot[bot] 162c629766 Upgrade: Bump the actions group with 3 updates (#15816)
Bumps the actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache) and [cloudflare/wrangler-action](https://github.com/cloudflare/wrangler-action).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/cache` from 5 to 6
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

Updates `cloudflare/wrangler-action` from 3 to 4
- [Release notes](https://github.com/cloudflare/wrangler-action/releases)
- [Changelog](https://github.com/cloudflare/wrangler-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/wrangler-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: cloudflare/wrangler-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 23:29:04 +02:00
Tyler Trahan 9bea75a8d1 Codechange: Use sprite array instead of magic number for snowy rocks (#15835) 2026-07-15 15:10:35 -04:00
Rubidium 150da36869 Codechange: remove compiler flags allowing multi character literals 2026-07-15 20:07:08 +02:00
Rubidium e065da15ff Codechange: remove multichar literals from FillSetDetails 2026-07-15 19:13:18 +02:00
Rubidium 2d48e82bbb Codechange: remove unneeded packing of ChunkHeader and WAVE_DOWNLOAD 2026-07-15 18:07:49 +02:00
Rubidium fa4b9819c0 Codechange: use Label for CargoLabel, RailTypeLabel and RoadTypeLabel 2026-07-15 18:07:22 +02:00
Jonathan G Rennison 7126fcafcc Fix: Rail depot overbuild did not handle associated reservation (#15860) 2026-07-15 07:40:37 -04:00
translators 659208ab57 Update: Translations from eints
estonian: 30 changes by JooReb
catalan: 84 changes by J0anJosep
2026-07-15 06:36:15 +00:00
Rubidium 143af1098d Codechange: remove support for ICC (Intel's deprecated compiler) 2026-07-14 19:47:06 +02:00
Rubidium 68f5a8a0fd Codechange: use Label for Action14 NodeID 2026-07-14 18:27:28 +02:00
Rubidium 121df5b461 Codechange: simplify BMP header creation 2026-07-14 18:27:14 +02:00
Rubidium 1d1c603494 Codechange: use Label for NewGRF class global ids 2026-07-14 14:04:54 +02:00
Rubidium af60d6b7cd Codechange: use Label for the tags in a Wave file 2026-07-14 12:46:14 +02:00
Rubidium fe31736981 Codechange: use Label for the SaveLoadFormatTag over multi-character-literals 2026-07-14 11:49:15 +02:00
Rubidium 80d0c7763a Codechange: use Label for the ChunkId over multi-character-literals 2026-07-14 11:49:15 +02:00
translators 6b553caa74 Update: Translations from eints
hungarian: 3 changes by vargaviktor
2026-07-14 06:34:46 +00:00
Peter Nelson 2c48b1efb9 Change: limit purchase list rows to 1.5x original design height 2026-07-13 23:15:08 +01:00
Peter Nelson e3dfd59df0 Change: clip content in purchase list to each row 2026-07-13 23:15:08 +01:00
Enova 0366278c9d Codechange: Support ID_LIKE in build targeting (#15818) 2026-07-13 23:15:22 +02:00
Rubidium 808ae7f270 Codechange: [Windows] Use SetThreadDescription over magic exception 2026-07-13 18:41:39 +02:00
translators d1ec9f4897 Update: Translations from eints
english (au): 7 changes by krysclarke
chinese (traditional): 12 changes by KogentaSan
english (us): 13 changes by 2TallTyler
korean: 17 changes by telk5093
greek: 7 changes by gh658804
hungarian: 4 changes by vargaviktor
russian: 13 changes by Ln-Wolf
finnish: 18 changes by hpiirai
maori (new zealand): 17 changes by Kyle-McDangersword
turkish: 34 changes by jnmbk
portuguese: 8 changes by jcteotonio
esperanto: 18 changes by slashdevslashurandom
portuguese (brazilian): 7 changes by pasantoro
2026-07-13 07:48:17 +00:00
Peter Nelson 922d38f1c0 Codechange: Make IniFileVersion a scoped enum and format comments similar to SaveLoadVersion (#15848) 2026-07-12 19:28:06 +01:00
Peter Nelson e4620d5832 Doc: Update changelog for 16.0-beta2 (#15844) 2026-07-12 13:51:23 +01:00
translators cf48f866eb Update: Translations from eints
english (au): 6 changes by krysclarke
swedish: 20 changes by joeax910
chinese (traditional): 6 changes by KogentaSan
greek: 6 changes by gh658804
maori (new zealand): 10 changes by Kyle-McDangersword
portuguese: 6 changes by jcteotonio
portuguese (brazilian): 6 changes by pasantoro
polish: 4 changes by Rito13
2026-07-12 07:07:44 +00:00
Peter Nelson 3c30f962d4 Fix: Use meaningful tooltips for graph range toggle buttons (#15842)
Previously the tooltip only mentioned toggling the cargo, which is only correct for the cargo toggle buttons.
2026-07-11 13:51:01 +01:00
translators 3fb3006dff Update: Translations from eints
english (au): 4 changes by krysclarke
chinese (traditional): 4 changes by KogentaSan
english (us): 4 changes by 2TallTyler
greek: 4 changes by gh658804
russian: 4 changes by Ln-Wolf
danish: 15 changes by bscargo
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 3 changes by pasantoro, 1 change by jcteotonio
2026-07-11 06:34:16 +00:00
Charles Pigott 0ab5b6df1b Feature: Increase maximum number of vehicles per type to 10,000 (#15810) 2026-07-10 12:11:36 +01:00
mmtunligit a961e64928 Add: Adding and removing whole classes to collections (#15808) 2026-07-10 06:54:50 -04:00
translators 9f8ac2aaa1 Update: Translations from eints
indonesian: 86 changes by q1t0
2026-07-10 07:59:11 +00:00
Rubidium 0c6de46b4c Codechange: unify logging of GrfIDs 2026-07-10 09:51:02 +02:00
Peter Nelson 83f20c3375 Doc: Changelog for 16.0-beta1 was missing Markdown formatting (#15840) 2026-07-10 00:00:53 +01:00
Peter Nelson 85e6f020f9 Change: Use "bridge ... too low" message for bridgeable objects (#15838) 2026-07-09 19:56:06 +01:00
Peter Nelson 83ce49f6cb Feature: Allow bridges over depots (#15836)
Depots are somewhat tall, so bridges must be at least 3 height levels above them.
2026-07-09 18:26:13 +01:00
translators 44b51a94c5 Update: Translations from eints
estonian: 417 changes by JooReb
2026-07-09 07:59:14 +00:00
Peter Nelson f5e4bd1ed7 Fix #15826: Exclude allow any/all options for AI companies (#15834) 2026-07-09 00:20:07 +00:00
Rubidium 5303aa6516 Codechange: use const for writing savegame data 2026-07-09 02:01:13 +02:00
Peter Nelson 5403257dca Codechange: Don't calculate bridge height difference twice (#15831) 2026-07-08 22:23:55 +01:00
Rubidium 05e596661e Codechange: move VarType constants into 'VarTypes' 2026-07-08 17:51:45 +02:00
Tyler Trahan e95f43a720 Codechange: Use sprite table instead of magic number when drawing ground sprite (#15828) 2026-07-08 08:46:21 -04:00
translators 51af63cc9f Update: Translations from eints
english (us): 4 changes by 2TallTyler
estonian: 182 changes by JooReb
maori (new zealand): 2 changes by Kyle-McDangersword
2026-07-08 06:45:25 +00:00
Cyprian Klimaszewski 8e89414d9e Codechange: Add regression tests for terraforming and its costs (#15820) 2026-07-07 16:19:14 -04:00
Tyler Trahan 24333d76a9 Codefix: Clean up rocky ground placement in Editor (#15819) 2026-07-07 16:17:19 -04:00
verbosecodes ac51eab537 Fix #7992: Fix for catenary road and tram catenary sprites not being drawn on bridges 2026-07-07 21:27:52 +02:00
translators 0f09b4b371 Update: Translations from eints
swedish: 8 changes by Brickblock1
korean: 3 changes by telk5093
maori (new zealand): 5 changes by Kyle-McDangersword
2026-07-07 07:58:44 +00:00
Rubidium bf7bb3efaf Codechange: add missing documentation 2026-07-06 16:41:08 +02:00
Rubidium 9ba2e386ac Codechange: use GrfID over uint32_t for NewGRF IDs 2026-07-06 16:41:08 +02:00
translators 21d9af637a Update: Translations from eints
swedish: 3 changes by Brickblock1
2026-07-06 08:46:35 +00:00
translators 788e112be1 Update: Translations from eints
english (au): 4 changes by krysclarke
swedish: 4 changes by Brickblock1
chinese (traditional): 5 changes by KogentaSan
greek: 4 changes by gh658804
russian: 1 change by Ln-Wolf
finnish: 4 changes by hpiirai
maori (new zealand): 16 changes by Kyle-McDangersword
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
polish: 4 changes by pAter-exe
2026-07-05 07:45:33 +00:00
translators bf70c61fb8 Update: Translations from eints
maori (new zealand): 24 changes by Kyle-McDangersword
2026-07-04 07:21:48 +00:00
livingBEEF c18b3a8a04 Fix traffic side inconsistencies (#15661)
* Update: change wording for driving side setting

* Fix: [NewGRF] Make 'signals on traffic side' consistent with explicit settings

Previously this TTDPatchFlag returned 'true' when the 'train signal side'
setting was 'road vehicle driving side'. Now it will also return 'true' when
both the settings are the same, i.e. both are 'left' or both are 'right'.
2026-07-03 08:21:23 -04:00
translators 8e08f1a3c5 Update: Translations from eints
hungarian: 1 change by vargaviktor
maori (new zealand): 14 changes by Kyle-McDangersword
2026-07-03 07:46:16 +00:00
Rubidium 8303b2d694 Codechange: document gamelog_internal.h 2026-07-02 14:40:52 +02:00
translators 4d7e1385f9 Update: Translations from eints
indonesian: 75 changes by q1t0
maori (new zealand): 11 changes by Kyle-McDangersword
2026-07-02 05:49:00 +00:00
Rubidium d2a3f52257 Codechange: improve documentation by removing unneeded constructors/operators 2026-07-01 21:05:56 +02:00
translators 01919af55b Update: Translations from eints
maori (new zealand): 68 changes by Kyle-McDangersword
2026-07-01 06:02:27 +00:00
translators 9c3f5bc375 Update: Translations from eints
indonesian: 29 changes by q1t0
2026-06-30 05:55:38 +00:00
Rubidium 0a9aa3d20b Codechange: make VarMemType scoped 2026-06-30 00:19:27 +02:00
Rubidium 8db7db5569 Codechange: make VarFileType scoped 2026-06-30 00:19:27 +02:00
Rubidium d9d7f441db Codechange: make SLRefType scoped 2026-06-30 00:19:27 +02:00
Rubidium 76265b8451 Codechange: replace SaveLoadFlags with StringValidationSettings 2026-06-29 23:33:13 +02:00
Rubidium 1310531139 Codechange: replace GetVarFileType with just direct member access 2026-06-29 19:56:06 +02:00
Rubidium 0bd12558d4 Codechange: replace GetVarMemType with just direct struct member access 2026-06-29 19:56:06 +02:00
Rubidium bdbe305771 Codechange: make SlVarSize, ReadValue and WriteValue use VarMemType 2026-06-29 19:56:06 +02:00
Rubidium 71ca79c6d5 Codechange: split up VarTypes in separate enumerations and recombine as struct 2026-06-29 19:56:06 +02:00
Rubidium afbe2d3070 Codechange: unify order of file and variable saveload configuration 2026-06-29 19:56:06 +02:00
Rubidium f72a239b97 Codechange: make SaveFileType clearly distinct from VarType 2026-06-29 19:56:06 +02:00
Rubidium df20fed464 Codechange: replace GRFBaseLanguages with an EnumBitSet 2026-06-29 09:09:28 +02:00
Rubidium af1e9864a0 Codechange: replace GRFExtendedLanguages with scoped enum GRFLanguage 2026-06-29 09:09:28 +02:00
Peter Nelson 3f557fb673 Codechange: make NeedLength a scoped enum. 2026-06-29 07:41:41 +01:00
Peter Nelson 36551ba6b5 Codechange: make SaveLoadAction a scoped enum 2026-06-29 07:41:25 +01:00
Peter Nelson 11f46bc5f4 Fix: explicitly initialize COM in Win32 video driver (#15553) 2026-06-29 07:40:03 +01:00
Peter Nelson 099df1054e Codechange: make TileContext a scoped enum 2026-06-29 07:35:19 +01:00
Peter Nelson d3d1de822d Codechange: make Action5BlockType a scoped enum 2026-06-29 07:30:02 +01:00
Rubidium ef0d26f9f7 Codechange: properly decode VarType to determine whether the maximum value fits in the type 2026-06-29 08:11:12 +02:00
Rubidium 8a8ece49ec Codechange: simplify/shrink SaveLoadCompat
Remove the unneeded null_type and change the name to std::string_view
2026-06-29 08:10:02 +02:00
Rubidium a01a2f8401 Codechange: remove essentially pointless 'shortcut values' 2026-06-29 08:09:31 +02:00
Rubidium d0dcd1b134 Codechange: use SLE_INT8 instead of SLE_CHAR 2026-06-29 08:09:31 +02:00
Rubidium a5430717b1 Codechange: prefer SLE_INT32 over SLE_INT 2026-06-29 08:09:31 +02:00
Rubidium c367b10bde Codechange: prefer SLE_UINT32 over SLE_UINT 2026-06-29 08:09:31 +02:00
Peter Nelson 2934eca24a Codechange: make TownCargoGenMode a scoped enum 2026-06-28 20:48:11 +01:00
Peter Nelson 02becd50c5 Codechange: make TownFounding a scoped enum 2026-06-28 20:48:11 +01:00
Peter Nelson 3ba0706a5c Codechange: make TownLayout a scoped enum 2026-06-28 20:48:11 +01:00
Peter Nelson 1acbb1c654 Codechange: make TownSize a scoped enum 2026-06-28 20:48:11 +01:00
Peter Nelson 6f6551c08d Codechange: Use general Alignment for intro game viewport commands 2026-06-28 20:43:36 +01:00
Peter Nelson b4d16d319f Codechange: Replace Alignment enum with struct
Alignment struct contains separate horizontal and vertical alignment members.
2026-06-28 20:43:36 +01:00
Peter Nelson 8e637cefed Codechange: Rename StringAlignment to Alignment
Alignment is also used things other than strings.
2026-06-28 20:43:36 +01:00
Peter Nelson 5923d105ec Revert: "Fix: [NewGRF] Ensure Act2 read error replaces current set id (#15782)" (#15795)
This reverts commit f9e6b8b7dd.
2026-06-28 19:35:09 +00:00
Rubidium a76ba0d3d4 Codechange: make ChunkType scoped 2026-06-28 21:07:12 +02:00
Rubidium b7d07252e7 Codechange: make SaveLoadType scoped 2026-06-28 19:26:21 +02:00
Rubidium f8af6bbc2f Codechange: make OpenGLSprite::Texture scoped 2026-06-28 19:25:45 +02:00
Rubidium 8b83bac31f Codechange: make SavegameType scoped 2026-06-28 17:49:19 +02:00
Peter Nelson b02242d5fc Codechange: make RandomizedSpriteGroupCompareMode a scoped enum 2026-06-28 16:21:01 +01:00
Peter Nelson 4344ffb7a0 Codechange: make DeterministicSpriteGroupAdjustOperation a scoped enum 2026-06-28 16:21:01 +01:00
Peter Nelson 4e9645e9d0 Codechange: make DeterministicSpriteGroupAdjustType a scoped enum 2026-06-28 16:21:01 +01:00
Peter Nelson 947767a2ff Codechange: make DeterministicSpriteGroupSize a scoped enum 2026-06-28 16:21:01 +01:00
Peter Nelson 4b93bd74ef Codechange: make VarSpriteGroupScope a scoped enum 2026-06-28 16:21:01 +01:00
Rubidium 061e5c9cd3 Codechange: use helper for common mappings using PerformanceElement::AI0 2026-06-28 16:55:28 +02:00
Rubidium 5b3b7995bb Codechange: make PerformanceElement scoped 2026-06-28 16:55:28 +02:00
Peter Nelson 3666eb23a1 Fix #15784: Do close and reopen road build toolbar when switching road tram types (#15789) 2026-06-28 07:08:13 +00:00
Peter Nelson f9e6b8b7dd Fix: [NewGRF] Ensure Act2 read error replaces current set id (#15782) 2026-06-28 08:07:09 +01:00
translators 2a6a65662d Update: Translations from eints
indonesian: 117 changes by q1t0
2026-06-28 05:59:00 +00:00
Peter Nelson b7e693ced6 Codechange: no need to pre-declare local variables (#15781) 2026-06-27 18:31:50 +01:00
rubidium42 b9986cdadf Change: upgrade emscripten from 3.1.57 to 6.0.1 (#15780) 2026-06-27 16:00:51 +01:00
Cyprian Klimaszewski dc87cd3d7a Codechange: Use more helper functions for slopes. (#15722) 2026-06-27 10:17:48 -04:00
Rubidium 8ca99f96ee Codechange: remove macros for SDLVkMapping 2026-06-27 16:14:27 +02:00
Rubidium 790a6903af Codechange: document several SDL members 2026-06-27 16:14:16 +02:00
mmtunligit 98dfc7376c Codechange: Split long single line loop to match #15589 2026-06-26 18:26:01 +02:00
Rubidium cc92e3d421 Codechange: make 32bpp blitter enumerations scoped 2026-06-26 17:33:15 +02:00
Rubidium 42fe1133ad Doc: make obvious what the numbers in SaveLoadVersion mean, especially in the generated doxygen 2026-06-26 13:04:33 +02:00
Rubidium fc0ad4bb0a Codechange: remove unneeded spaces 2026-06-26 13:04:33 +02:00
Rubidium 5bb87d39b7 Codechange: make SaveLoadVersion a scoped enum 2026-06-26 13:04:33 +02:00
translators f8ad1a4999 Update: Translations from eints
polish: 17 changes by pAter-exe
2026-06-26 05:55:39 +00:00
Rubidium f0a1b507fe Codechange: make ClientID a scoped enumeration 2026-06-26 06:26:52 +02:00
Rubidium 2f4ae80226 Codechange: use ClientID for the 'user' of OrderBackup 2026-06-25 23:57:45 +02:00
Peter Nelson 11e713ce9a Add: Station list can be filtered by name (#15772) 2026-06-25 22:28:21 +01:00
Peter Nelson c77a363d68 Doc: update changelog (#15673) 2026-06-25 08:16:08 -04:00
Peter Nelson a713b15183 Codefix: No need to cast a TextColour to TextColour (#15770) 2026-06-25 09:16:04 +01:00
translators 7c4781c333 Update: Translations from eints
maori (new zealand): 10 changes by Kyle-McDangersword
2026-06-25 05:53:11 +00:00
translators 69dce301e7 Update: Translations from eints
polish: 1 change by pAter-exe
2026-06-24 05:52:40 +00:00
mmtunligit 1a00026929 Change: selecting Rail/Roadtype updates build toolbar instead of closing and reopening (#15589) 2026-06-23 22:31:54 +00:00
rubidium42 578ec33556 Codechange: use proper names for SLV_145 - SLV_198 (#15767)
* Codechange: rename SLV_145 to SLV_NEWGRF_AIRPORT_SMOKE
* Codechange: rename SLV_146 to SLV_UNIFY_WATER_CLASS
* Codechange: rename SLV_147 to SLV_UNIFY_ANIMATION_FRAME
* Codechange: rename SLV_148 to SLV_INDUSTRY_PLATFORM
* Codechange: rename SLV_149 to SLV_CUSTOM_SEA_LEVEL
* Codechange: rename SLV_150 to SLV_FRACTIONAL_CARGO_DELIVERY
* Codechange: rename SLV_151 to SLV_STORE_NEWGRF_VERSION
* Codechange: rename SLV_152 to SLV_INDUSTRY_MANAGEMENT
* Codechange: rename SLV_153 to SLV_LEAVE_ROAD_STOP_SEPARATELY
* Codechange: rename SLV_154 to SLV_PAUSE_LEVEL
* Codechange: rename SLV_155 to SLV_NEWGRF_OBJECT_VIEW
* Codechange: rename SLV_156 to SLV_TERRAFORM_LIMITS
* Codechange: rename SLV_157 to SLV_UNIFY_GROUND_VEHICLES
* Codechange: rename SLV_158 to SLV_TRACK_REAL_AND_AUTO_ORDERS
* Codechange: rename SLV_159 to SLV_MAX_LENGTH_AND_REVERSE_SIGNALS
* Codechange: rename SLV_160 to SLV_DISALLOW_ROAD_RECONSTRUCTION
* Codechange: rename SLV_161 to SLV_PERSISTENT_STORAGE_POOL
* Codechange: rename SLV_162 to SLV_NEWGRF_CUSTOM_CARGO_AGING
* Codechange: rename SLV_163 to SLV_RIVERS
* Codechange: rename SLV_164 to SLV_VEHICLE_CENTRE_AND_Z_POS
* Codechange: rename SLV_165 to SLV_SCRIPT_TOWN_GROWTH
* Codechange: rename SLV_166 to SLV_INFRASTRUCTURE_MAINTENANCE_COSTS
* Codechange: rename SLV_167 to SLV_NEWGRF_AIRCRAFT_RANGE
* Codechange: rename SLV_168 to SLV_SCRIPT_TOWN_TEXT
* Codechange: rename SLV_169 to SLV_MOVE_SCC_ENCODED
* Codechange: rename SLV_170 to SLV_COUNT_INDIVIDUAL_CARGOES
* Codechange: rename SLV_171 to SLV_SCENARIO_DEITY_SIGNS
* Codechange: rename SLV_172 to SLV_ORDER_MAX_SPEED
* Codechange: rename SLV_173 to SLV_FIX_ROAD_OWNERSHIP
* Codechange: rename SLV_174 to SLV_CURRENT_ORDER_MAX_SPEED
* Codechange: rename SLV_175 to SLV_AUTOREPLACE_WHEN_OLD_TREE_LIMIT
* Codechange: rename SLV_176 to SLV_BACKUP_ORDER_STATE
* Codechange: rename SLV_177 to SLV_MONTHLY_BANKRUPTCY_CHECK
* Codechange: rename SLV_178 to SLV_SCRIPT_SETTINGS_PROFILE
* Codechange: rename SLV_179 to SLV_ROBUST_ENGINE_PREVIEW
* Codechange: rename SLV_180 to SLV_SERVICE_INTERVAL_PERCENT
* Codechange: rename SLV_181 to SLV_CARGO_RESERVATION
* Codechange: rename SLV_182 to SLV_GOAL_PROGRESS_PLANE_ACCELERATION
* Codechange: rename SLV_183 to SLV_CARGODIST
* Codechange: rename SLV_184 to SLV_SEPARATE_LOCALE_UNITS
* Codechange: rename SLV_185 to SLV_STORYBOOKS
* Codechange: rename SLV_186 to SLV_OBJECT_TYPE_TO_POOL
* Codechange: rename SLV_187 to SLV_LINKGRAPH_RESTRICTED_FLOW
* Codechange: rename SLV_188 to SLV_UNIFY_RV_TRAVEL_TIME
* Codechange: rename SLV_189 to SLV_GROUP_HIERARCHY
* Codechange: rename SLV_190 to SLV_SEPARATE_ORDER_TRAVEL_WAIT_TIME
* Codechange: rename SLV_191 to SLV_LINKGRAPH_LOCATION_DISASTER_STORE
* Codechange: rename SLV_192 to SLV_FIX_ORDER_BACKUP
* Codechange: rename SLV_193 to SLV_HIDE_ENGINES_FOR_COMPANY
* Codechange: rename SLV_194 to SLV_MAX_BRIDGE_MAP_HEIGHT
* Codechange: rename SLV_195 to SLV_DISTINGUISH_1_6
* Codechange: rename SLV_196 to SLV_DISTINGUISH_1_7
* Codechange: rename SLV_197 to SLV_STORE_MAP_VARIETY
* Codechange: rename SLV_198 to SLV_TOWN_GROWTH_IN_GAME_TICKS
2026-06-23 22:01:31 +00:00
rubidium42 0833396cdf Codechange: use proper names for SLV_115 - SLV_144 (#15766)
* Codechange: rename SLV_115 to SLV_CUSTOM_TOWN_NUMBER
* Codechange: rename SLV_116 to SLV_GAMELOG_EMERGENCY
* Codechange: rename SLV_117 to SLV_PLATFORM_STOP_LOCATION
* Codechange: rename SLV_118 to SLV_DIGIT_GROUP_SEPARATOR
* Codechange: rename SLV_119 to SLV_PAUSE_MODES
* Codechange: rename SLV_120 to SLV_COMPANY_SERVICE_INTERVALS
* Codechange: rename SLV_121 to SLV_CARGO_PAYMENTS
* Codechange: rename SLV_122 to SLV_WAYPOINT_MORE_LIKE_STATION
* Codechange: rename SLV_123 to SLV_UNIFY_WAYPOINT_AND_STATION
* Codechange: rename SLV_124 to SLV_MULTI_TILE_WAYPOINTS
* Codechange: rename SLV_125 to SLV_REMOVE_SUBSIDY_STATION_BINDING
* Codechange: rename SLV_126 to SLV_CUMULATED_INFLATION
* Codechange: rename SLV_127 to SLV_TOWN_ACCEPTANCE
* Codechange: rename SLV_128 to SLV_FOUND_TOWN
* Codechange: rename SLV_129 to SLV_TIMETABLE_START
* Codechange: rename SLV_130 to SLV_ROAD_STOP_OCCUPANCY_PENALTY
* Codechange: rename SLV_131 to SLV_MAXIMUM_DEPOT_PENALTY
* Codechange: rename SLV_132 to SLV_DISALLOW_TREE_BUILDING
* Codechange: rename SLV_133 to SLV_TRAIN_SLOPE_STEEPNESS
* Codechange: rename SLV_134 to SLV_VIRTUAL_FEEDER_SHARE_PAYMENT
* Codechange: rename SLV_135 to SLV_ROCKS_STAY_UNDER_SNOW
* Codechange: rename SLV_136 to SLV_SPLIT_LOAD_WAIT_COUNTERS
* Codechange: rename SLV_137 to SLV_AIRPORT_ANIMATION_FRAMES
* Codechange: rename SLV_138 to SLV_REDUCE_PLANE_CRASHES
* Codechange: rename SLV_139 to SLV_RV_REALISTIC_ACCELERATION
* Codechange: rename SLV_140 to SLV_STORE_AIRPORT_SIZE
* Codechange: rename SLV_141 to SLV_UNIQUE_DEPOT_NAMES
* Codechange: rename SLV_142 to SLV_NEWGRF_DEPOT_BUILD_DATE
* Codechange: rename SLV_143 to SLV_DISABLE_TOWN_LEVEL_CROSSING
* Codechange: rename SLV_144 to SLV_REORDER_UNMOVABLE_REMOVE_RESERVED
2026-06-23 23:17:14 +02:00
rubidium42 2a5607d373 Codechange: use proper names for SLV_90 - SLV_114 (#15765)
* Codechange: rename SLV_90 to SLV_PLANE_SPEED_FACTOR
* Codechange: rename SLV_91 to SLV_MORE_HOUSE_ANIMATION_FRAMES
* Codechange: rename SLV_92 to SLV_REMOVE_HOUSE_COUNT
* Codechange: rename SLV_93 to SLV_IMPROVED_ORDERS
* Codechange: rename SLV_94 to SLV_FIX_COMPANY_CARGO_TYPES
* Codechange: rename SLV_95 to SLV_MORE_ENGINE_TYPES
* Codechange: rename SLV_96 to SLV_AIRPORT_NOISE
* Codechange: rename SLV_97 to SLV_MERGE_OPTS_PATS
* Codechange: rename SLV_98 to SLV_GAMELOG
* Codechange: rename SLV_99 to SLV_INDUSTRY_TILE_WATER_CLASS
* Codechange: rename SLV_100 to SLV_YAPP
* Codechange: rename SLV_101 to SLV_NEWGRF_PALETTE
* Codechange: rename SLV_102 to SLV_SPREAD_INDUSTRY_PRODUCTION_CHANGES
* Codechange: rename SLV_103 to SLV_NEWGRF_SUPPLIED_STATION_NAME
* Codechange: rename SLV_104 to SLV_MORE_COMPANIES
* Codechange: rename SLV_105 to SLV_ORDER_LIST
* Codechange: rename SLV_106 to SLV_DISTANT_STATION_JOINING
* Codechange: rename SLV_107 to SLV_NOAI
* Codechange: rename SLV_108 to SLV_STORE_AI_VERSION
* Codechange: rename SLV_109 to SLV_NEXT_COMPETITOR_START_OVERFLOW
* Codechange: rename SLV_110 to SLV_REMOVE_OLD_AI_SETTINGS
* Codechange: rename SLV_111 to SLV_FREEFORM_EDGES
* Codechange: rename SLV_112 to SLV_SPLIT_HQ
* Codechange: rename SLV_113 to SLV_ROAD_LAYOUT_PER_TOWN
* Codechange: rename SLV_114 to SLV_SEPARATE_ROAD_OWNERS
2026-06-23 13:56:17 +02:00
translators ba9d673518 Update: Translations from eints
maori (new zealand): 19 changes by Kyle-McDangersword
2026-06-23 05:52:57 +00:00
rubidium42 23b3efdae8 Codechange: use proper names for SLV_65 - SLV_89 (#15764)
* Codechange: rename SLV_65 to SLV_UNIFY_CURRENCY
* Codechange: rename SLV_66 to SLV_NEWGRF_TOWN_NAMES
* Codechange: rename SLV_67 to SLV_TIMETABLES
* Codechange: rename SLV_68 to SLV_CARGO_PACKETS
* Codechange: rename SLV_69 to SLV_MORE_CARGO_PACKETS
* Codechange: rename SLV_70 to SLV_CARGO_PAYMENT_OVERFLOW
* Codechange: rename SLV_71 to SLV_UNGROUPED_VEHICLES
* Codechange: rename SLV_72 to SLV_SPLIT_STATION_TYPE_FROM_GFXID
* Codechange: rename SLV_73 to SLV_NEWGRF_INDUSTRY_LAYOUT
* Codechange: rename SLV_74 to SLV_FIX_STATION_PICKUP_ACCOUNTING
* Codechange: rename SLV_75 to SLV_AUTOSLOPE
* Codechange: rename SLV_76 to SLV_NEWGRF_PERSISTENT_STORAGE
* Codechange: rename SLV_77 to SLV_CLEANUP_UNCONNECTED_ROADS
* Codechange: rename SLV_78 to SLV_STORE_INDUSTRY_CARGO
* Codechange: rename SLV_79 to SLV_FAIR_PLAY_SETTINGS
* Codechange: rename SLV_80 to SLV_NEWGRF_MORE_ANIMATION
* Codechange: rename SLV_81 to SLV_FIX_TREE_GROUND
* Codechange: rename SLV_82 to SLV_NEWGRF_INDUSTRY_RANDOM_TRIGGERS
* Codechange: rename SLV_83 to SLV_DEPOT_WATER_OWNERS
* Codechange: rename SLV_84 to SLV_REPLACE_CUSTOM_NAME_ARRAY
* Codechange: rename SLV_85 to SLV_MAGLEV_MONORAIL_PAX_WAGON_LIVERY
* Codechange: rename SLV_86 to SLV_WATER_CLASS
* Codechange: rename SLV_87 to SLV_SIMPLIFY_PATHFINDER_SETTINGS
* Codechange: rename SLV_88 to SLV_FRACTION_PROFIT_RUNNING_TICKS
* Codechange: rename SLV_89 to SLV_MORE_WAYPOINTS_PER_TOWN
2026-06-23 06:53:27 +02:00
rubidium42 3763e338c0 Codechange: use proper names for SLV_40 - SLV_64 (#15763)
* Codechange: rename SLV_40 to SLV_GRADUAL_LOADING
* Codechange: rename SLV_41 to SLV_NEWGRF_SETTINGS
* Codechange: rename SLV_42 to SLV_BRIDGE_WORMHOLE
* Codechange: rename SLV_43 to SLV_UNIFY_ANIMATION_STATE
* Codechange: rename SLV_44 to SLV_CARGO_SOURCE_TILE
* Codechange: rename SLV_45 to SLV_COUNT_PAID_FOR_CARGO
* Codechange: rename SLV_46 to SLV_MORE_AIRPORT_BLOCKS
* Codechange: rename SLV_47 to SLV_DRIVE_THROUGH_ROAD_STOPS
* Codechange: rename SLV_48 to SLV_RAIL_TRACK_TYPE_UNIFICATION
* Codechange: rename SLV_49 to SLV_SIMPLIFY_PLAYER_FACE
* Codechange: rename SLV_50 to SLV_AIRCRAFT_SPEED_HOLDING
* Codechange: rename SLV_51 to SLV_FEEDER_SHARE
* Codechange: rename SLV_52 to SLV_STATUE_OWNER
* Codechange: rename SLV_53 to SLV_NEWGRF_HOUSES
* Codechange: rename SLV_54 to SLV_TOWN_GROWTH_CONTROL
* Codechange: rename SLV_55 to SLV_NEWGRF_CARGO
* Codechange: rename SLV_56 to SLV_CITIES
* Codechange: rename SLV_57 to SLV_FIFO_LOADING
* Codechange: rename SLV_58 to SLV_VERY_LOW_TOWN_INDUSTRY_NUMBER
* Codechange: rename SLV_59 to SLV_TOWN_LAYOUT
* Codechange: rename SLV_60 to SLV_VEHICLE_GROUPS
* Codechange: rename SLV_61 to SLV_MULTIPLE_ROAD_TYPES
* Codechange: rename SLV_62 to SLV_ADJACENT_STATIONS
* Codechange: rename SLV_63 to SLV_TRAM_LIVERY
* Codechange: rename SLV_64 to SLV_MULTIPLE_SIGNAL_TYPES
2026-06-22 16:08:18 +02:00
rubidium42 366ec786f1 Codechange: use proper names for SLV_20 - SLV_39 (#15762)
* Codechange: rename SLV_20 to SLV_NO_MULTIHEAD_REFERENCE
* Codechange: rename SLV_21 to SLV_REMOVE_OLD_PBS
* Codechange: rename SLV_22 to SLV_SAVE_PATCHES
* Codechange: rename SLV_23 to SLV_REMOVE_AUTOSAVE_INTERVAL
* Codechange: rename SLV_24 to SLV_ELRAIL
* Codechange: rename SLV_25 to SLV_IMPROVE_MULTISTOP
* Codechange: rename SLV_26 to SLV_LAST_VEHICLE_TYPE
* Codechange: rename SLV_27 to SLV_NEWGRF_STATIONS
* Codechange: rename SLV_28 to SLV_YAPF
* Codechange: rename SLV_29 to SLV_MORE_UNDER_BRIDGES
* Codechange: rename SLV_30 to SLV_TGP
* Codechange: rename SLV_31 to SLV_BIG_DATES
* Codechange: rename SLV_32 to SLV_LINK_FARM_FIELD_TO_INDUSTRY
* Codechange: rename SLV_33 to SLV_SAVE_YAPF_SETTINGS
* Codechange: rename SLV_34 to SLV_LIVERIES
* Codechange: rename SLV_35 to SLV_LIVERY_REFIT
* Codechange: rename SLV_36 to SLV_REFIT_ORDERS
* Codechange: rename SLV_37 to SLV_UTF8
* Codechange: rename SLV_38 to SLV_DISABLE_ELRAIL_SETTING
* Codechange: rename SLV_39 to SLV_FREIGHT_WEIGHT
2026-06-22 12:57:49 +00:00
Rito12 e763d1b2ec Cleanup: Remove duplicated doxygen comment for ShowMacDialog. 2026-06-22 12:02:36 +02:00
Rito12 fa6152d91f Update: doxygen version to 1.17.0. 2026-06-22 12:02:36 +02:00
Cyprian Klimaszewski 1a59742990 Codechange: Create cursor_sprites doxygen group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 867326094a Codechange: Create water_sprites doxygen group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 27d2792ef0 Codechange: Create rail_sprites doxygen group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski a1d6ac57e2 Codechange: Create bridge_type_sprites doxygen group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 03a6767874 Codechange: Create doxygen disaster_sprites group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 3e166ca4d0 Codechange: Create doxygen town_house_sprites group from comments 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 20c25df71e Codechange: Make comments for multiple sprites doxygen ones 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 4bcdc09934 Codechange: Make comments for single sprites doxygen ones 2026-06-22 12:02:09 +02:00
Cyprian Klimaszewski 0766bed833 Codechange: use named functions for RoadBits in LookupWithBuildOnSlopes. 2026-06-22 12:01:42 +02:00
Cyprian Klimaszewski af51914427 Codechange: remove base_slopes lookup table from LookupWithBuildOnSlopes. 2026-06-22 12:01:42 +02:00
Peter Nelson f7d17082d1 Codechange: make GamelogChangeType a scoped enum 2026-06-22 11:59:51 +02:00
Peter Nelson 50847bf88e Codechange: make GamelogActionType a scoped enum 2026-06-22 11:59:51 +02:00
Peter Nelson a55bd4e041 Codechange: make TransportType a scoped enum 2026-06-22 11:59:24 +02:00
translators 26e5e38761 Update: Translations from eints
indonesian: 84 changes by q1t0
maori (new zealand): 3 changes by Kyle-McDangersword
2026-06-22 06:19:05 +00:00
rubidium42 d81eefcdc8 Codechange: use proper names for SLV_1 - SLV_19 (#15750)
* Codechange: rename SLV_1 to SLV_BIG_CURRENCY
* Codechange: rename SLV_2 to SLV_VEHICLE_CURRENCY_STATION_CHANGES
* Codechange: rename SLV_3 to SLV_BIGGER_STATION_VARIABLES
* Codechange: rename SLV_4 to SLV_TOWN_TOLERANCE_PAUSE_MODE
* Codechange: rename SLV_5 to SLV_BIG_MAP
* Codechange: rename SLV_6 to SLV_MULTIPLE_ROAD_STOPS
* Codechange: rename SLV_7 to SLV_LARGER_CARGO_SOURCE
* Codechange: rename SLV_8 to SLV_LARGER_UNIT_NUMBER
* Codechange: rename SLV_9 to SLV_LARGER_TOWN_CARGO_STATISTICS
* Codechange: rename SLV_10 to SLV_LARGER_TOWN_COUNTER
* Codechange: rename SLV_11 to SLV_LARGER_TOWN_ITERATOR
* Codechange: rename SLV_12 to SLV_LINK_WAYPOINT_TO_TOWN
* Codechange: rename SLV_13 to SLV_LARGER_AI_STATE_COUNTER
* Codechange: rename SLV_14 to SLV_TRANSFER_ORDER
* Codechange: rename SLV_15 to SLV_MOVE_SEMAPHORE_BITS
* Codechange: rename SLV_16 to SLV_ENGINE_RENEW
* Codechange: rename SLV_17 to SLV_STORE_WAYPOINT_ID_IN_MAP
* Codechange: rename SLV_18 to SLV_REMOVE_MINOR_VERSION
* Codechange: rename SLV_19 to SLV_ENGINE_RENEW_POOL
2026-06-21 19:27:53 +02:00
Rubidium ec727fe440 Codechange: make ViewportScrollTarget scoped 2026-06-21 18:10:27 +02:00
Rubidium 32f9e4df6c Codechange: make Currency scoped 2026-06-21 17:14:53 +02:00
Peter Nelson 2ca3623670 Codechange: make PlaylistChoice a scoped enum (#15758) 2026-06-21 15:14:38 +01:00
Rubidium 8b49441b6b Codechange: make currency setting field use Currency enumeration 2026-06-21 16:06:17 +02:00
Rubidium 487971bffb Codechange: use Currency for GetNewgrfCurrencyIdConverted 2026-06-21 16:06:17 +02:00
Peter Nelson 495bc37dc3 Codechange: extract function to look up fontsize by name (#15760) 2026-06-21 12:50:44 +00:00
Peter Nelson 1f0fd6dfab Codechange: make AccelerationModel a scoped enum (#15757) 2026-06-21 10:01:34 +01:00
Peter Nelson 9f49ea4177 Codechange: make EngineImageType a scoped enum (#15755) 2026-06-21 08:05:41 +00:00
Peter Nelson a57eb70e05 Codechange: make GroundVehicleFlag(s) a scoped enum/EnumBitSet (#15754) 2026-06-21 08:50:45 +01:00
Rubidium 7bd9fbc733 Codechange: make VehicleListType scoped 2026-06-21 09:31:42 +02:00
translators 720d10536d Update: Translations from eints
chinese (traditional): 2 changes by KogentaSan
vietnamese: 1 change by KhoiCanDev
2026-06-21 06:14:44 +00:00
Peter Nelson 71536313ba Codechange: make LevelMode a scoped enum (#15753) 2026-06-20 23:44:57 +01:00
Rubidium 437d93b6fc Codechange: replace symbol_pos magic numbers with scoped enum and EnumBitSet 2026-06-20 23:17:00 +02:00
Rubidium 5756bcc721 Codechange: use EnumBitSet for mask of currencies 2026-06-20 17:37:12 +02:00
Rubidium bf67ba9a3b Codechange: rename Currencies to Currency 2026-06-20 17:37:12 +02:00
Loïc Guilloux 3efe107a6f Fix #15742, c9cf141: unexpected pylons and catenary on shared diagonal tiles (#15748) 2026-06-20 14:22:11 +02:00
translators 27e8312d21 Update: Translations from eints
chinese (traditional): 6 changes by KogentaSan
maori (new zealand): 1 change by Kyle-McDangersword
2026-06-20 05:59:36 +00:00
translators 4a4ed2da22 Update: Translations from eints
maori (new zealand): 26 changes by Kyle-McDangersword
2026-06-19 06:17:42 +00:00
Rubidium 3b8b089dd4 Codechange: split currency.h to _type.h and _func.h 2026-06-18 19:32:16 +02:00
translators 45065fb6d5 Update: Translations from eints
indonesian: 17 changes by q1t0
latvian: 7 changes by lexuslatvia
2026-06-18 06:10:21 +00:00
Cyprian Klimaszewski 9e85e23cbc Codefix 21bee91: Doxygen copied documentation wrongly (#15739) 2026-06-17 11:39:25 -04:00
Peter Nelson b2c9e33e0f Codechange: make FoundationPart a scoped enum (#15738) 2026-06-17 07:55:04 +01:00
Peter Nelson 10cad52ebb Codechange: make SpriteCombineMode a scoped enum (#15737) 2026-06-17 07:54:40 +01:00
Peter Nelson 185e942b44 Codechange: make TileHighlightType a scoped enum (#15736) 2026-06-17 07:54:21 +01:00
translators fdc5ef30de Update: Translations from eints
chinese (simplified): 1 change by wensimehrp
korean: 1 change by telk5093
indonesian: 180 changes by q1t0
finnish: 1 change by hpiirai
maori (new zealand): 18 changes by Kyle-McDangersword
2026-06-17 06:16:42 +00:00
Rubidium 3fc52e758d Codechange: make GraphicsFileType scoped 2026-06-17 05:32:58 +02:00
Rubidium 33ae037aaa Codechange: make SpecialMouseMode scoped 2026-06-17 05:32:34 +02:00
Tyler Trahan 3aa3113033 Change: Default setting to review orders excludes stopped vehicles (#15565) 2026-06-16 14:49:12 -04:00
Peter Nelson f8c8fedad7 Codefix: avoid mixing C and C++ style arrays 2026-06-16 19:11:38 +02:00
mmtunligit 2d5c1a9af8 Codechange: Build rail station highlight updates only as needed 2026-06-16 19:11:25 +02:00
dependabot[bot] d938292243 Upgrade: Bump the actions group across 1 directory with 4 updates
Bumps the actions group with 4 updates in the / directory: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact), [Apple-Actions/import-codesign-certs](https://github.com/apple-actions/import-codesign-certs) and [microsoft/microsoft-store-apppublisher](https://github.com/microsoft/microsoft-store-apppublisher).


Updates `actions/upload-artifact` from 6 to 7
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

Updates `actions/download-artifact` from 6 to 8
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v8)

Updates `Apple-Actions/import-codesign-certs` from 6 to 7
- [Release notes](https://github.com/apple-actions/import-codesign-certs/releases)
- [Commits](https://github.com/apple-actions/import-codesign-certs/compare/v6...v7)

Updates `microsoft/microsoft-store-apppublisher` from 1.1 to 1.3
- [Release notes](https://github.com/microsoft/microsoft-store-apppublisher/releases)
- [Commits](https://github.com/microsoft/microsoft-store-apppublisher/compare/v1.1...v1.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: Apple-Actions/import-codesign-certs
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: microsoft/microsoft-store-apppublisher
  dependency-version: '1.3'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-16 19:08:26 +02:00
translators 34a419ca24 Update: Translations from eints
swedish: 6 changes by joeax910
maori (new zealand): 7 changes by Kyle-McDangersword
2026-06-16 06:20:22 +00:00
Rubidium 04c1af9902 Codechange: make NIType a scoped enum 2026-06-16 07:03:32 +02:00
Rubidium c76cfc7dfb Codechange: make TextEffectMode scoped 2026-06-16 07:03:10 +02:00
Peter Nelson f0ce749025 Codechange: make ZoomLevelChange a scoped enum (#15726) 2026-06-15 20:22:01 +01:00
Rubidium 5a6469ad6f Codechange: make EventState a scoped enum 2026-06-15 11:20:52 +02:00
translators 2df98643ad Update: Translations from eints
indonesian: 121 changes by q1t0
2026-06-15 06:19:04 +00:00
Rubidium 760cd803c5 Codechange: make TooltipCloseCondition scoped 2026-06-14 21:27:32 +02:00
Peter Nelson 52793c0e8b Codechange: make SmallMapType a scoped enum (#15721) 2026-06-14 19:35:23 +01:00
Rubidium d519cad60f Codechange: remove unused path in DrawSortButton and simplify calling 2026-06-14 20:30:16 +02:00
Peter Nelson fcd33b25a7 Codechange: add GoalQuestionButton scoped enum and EnumBitSet (#15723) 2026-06-14 17:32:27 +01:00
Peter Nelson ff055aa1ce Codechange: make IniGroupType a scoped enum 2026-06-14 15:24:04 +01:00
Peter Nelson 1a2a527530 Codechange: make AdminCompanyRemoveReason a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson d6c6ca2879 Codechange: make NewGRFSerializationType a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson 3008ffa9d2 Codechange: make NetworkRecvStatus a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson 2365f1e525 Codechange: make ServerAddressType a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson fe989c3dc4 Codechange: make NetworkGameStatus a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson 62d71bd43f Codechange: make SendPacketsState a scoped enum 2026-06-14 15:23:45 +01:00
Peter Nelson 412c692afe Codechange: make AdminUpdateType a scoped enum 2026-06-14 15:23:45 +01:00
Rubidium bd86fe69c0 Codechange: make KeyStateBits an EnumBitset with scoped enum 2026-06-14 15:03:59 +02:00
Peter Nelson 457275a87c Fix 0149e4a349: incorrect logic when excluding 90 degree turns (#15719) 2026-06-14 12:15:35 +01:00
Peter Nelson 9c71a0c925 Fix #15715, 0149e4a349: ships unable to move due to inverted test (#15716) 2026-06-14 10:21:49 +01:00
translators 1baea6b0fb Update: Translations from eints
swedish: 4 changes by joeax910
norwegian (bokmal): 6 changes by eriksorngard
english (us): 1 change by 2TallTyler
esperanto: 1 change by slashdevslashurandom
2026-06-14 06:07:29 +00:00
Rubidium 0af287511f Codechange: make CanalFeature a scoped enum 2026-06-13 23:40:48 +02:00
Peter Nelson eb789ed3da Codechange: make PickerFilterMode(s) a scoped enum and EnumBitSet (#15714) 2026-06-13 21:40:10 +00:00
Peter Nelson d4f03f3c61 Codechange: remove increment/decrement operators for many enums 2026-06-13 21:54:42 +01:00
Peter Nelson c3b0d71973 Codechange: use EnumRange over many enum loops 2026-06-13 21:54:42 +01:00
Peter Nelson c991564e12 Codechange: add EnumRange iterator to handle enum values 2026-06-13 21:54:42 +01:00
Peter Nelson 02792d8332 Codechange: add doxygen comments for all EnumBitSet definitions (#15713) 2026-06-13 19:48:55 +00:00
Peter Nelson 3aee9889c2 Doc: synchronise changelog from 15.3 release (#15712) 2026-06-13 17:56:50 +01:00
Peter Nelson ed1817897a Codechange: make ErrorCode a scoped enum and document it (#15711) 2026-06-13 14:18:26 +01:00
translators 23ed6cd3c4 Update: Translations from eints
english (au): 1 change by krysclarke
czech: 34 changes by vladoschreiner
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
portuguese: 1 change by jcteotonio
portuguese (brazilian): 1 change by pasantoro
2026-06-13 06:01:06 +00:00
Rubidium 234b022d75 Codechange: split decoding of language off to a separate AddGRFString 2026-06-13 06:42:26 +02:00
Peter Nelson 8335479c07 Codechange: make AdminStatus a scoped enum 2026-06-12 22:18:32 +01:00
Peter Nelson f022017461 Codechange: make NetworkCoordinatorErrorType a scoped enum 2026-06-12 22:18:32 +01:00
Peter Nelson 146d499d0b Codechange: make ConnectionType a scoped enum 2026-06-12 22:18:32 +01:00
Peter Nelson 8453494170 Fix: ignore blocked waypoint tiles (#15620) 2026-06-12 22:11:21 +01:00
Cyprian Klimaszewski 6e9a5cee2a Codechange: Use IsValidCorner more. (#15697) 2026-06-12 22:09:29 +01:00
Rubidium 6da4aa8648 Codechange: make MouseClick scoped 2026-06-12 23:03:16 +02:00
Rubidium bba260e300 Codechange: make PreventHideDirection scoped 2026-06-12 22:52:34 +02:00
Rubidium 85ca2c20cd Codechange: make ViewportAutoscrolling scoped 2026-06-12 22:44:01 +02:00
Rubidium a268f99f3f Codechange: make CanalFeatureFlag a scoped enum and use EnumBitSet for flags 2026-06-12 20:16:06 +02:00
glx22 f4cad11b40 Change: [CMake] Use FindICU module provided by CMake 2026-06-12 16:51:59 +02:00
glx22 d92cd26a1f Codefix 9356748: Missing dependency to build OpenSSL 2026-06-12 16:51:59 +02:00
translators acbbea4238 Update: Translations from eints
vietnamese: 8 changes by KhoiCanDev
hungarian: 7 changes by vargaviktor
2026-06-12 06:04:50 +00:00
Rubidium f5ee6a5ec3 Codechange: use reference over pointer for RemoveFirstTrack(dir) 2026-06-11 21:24:10 +02:00
Peter Nelson 0149e4a349 Codechange: make Trackdir a scoped enum and TrackdirBits an EnumBitSet (#15696) 2026-06-11 14:40:15 +01:00
Matt C 09a475f30a Codechange: Calculate most used rail type using company infrastructure records (#15598) 2026-06-11 08:56:03 -04:00
Péter Siklós 61a8c9fd55 Fix: Typo in Hungarian town name suffix ("kak" -> "lak") (#15421) 2026-06-11 08:55:09 -04:00
Tad Hardesty eb54cbcd97 Add: Allow precisely erasing rocks in scenario editor (#15463) 2026-06-11 08:53:08 -04:00
translators 1766f17609 Update: Translations from eints
swedish: 4 changes by joeax910
korean: 5 changes by telk5093
2026-06-11 06:07:25 +00:00
Peter Nelson 4e6a5ca362 Codechange: make GoalType a scoped enum 2026-06-10 23:51:54 +01:00
Peter Nelson 3e880e8cd4 Codechange: make GoalQuestionType a scoped enum
Ensure ScriptGoal::QuestionType values match GoalQuestionType.
2026-06-10 23:51:54 +01:00
Rubidium 0021d5d6bd Fix: error message language incorrectly decoded.
Both the GRF version <7 and >=7 are supported, but the decoding assumes the
latter version. This means that for decoding custom errors a GRF version <7
with German will be using the Spanish plural/cases.
2026-06-10 23:38:31 +02:00
glx22 30fe17a49c Codefix: narrowing conversion warning for MSVC x86 2026-06-10 22:43:15 +02:00
glx22 9356748003 Update: vcpkg baseline 2026-06-10 22:43:15 +02:00
Rubidium 33d9b82c0c Fix: town name language incorrectly decoded
Both the GRF version < 7 and >= 7 are supported, but the debug message assumes
the latter. Also, use the same 'default' language for decoding the string as
is done for the part name later in the function.
2026-06-10 18:22:18 +02:00
Rubidium 4b3d621569 Codechange: directly use _current_language->newgrflangid instead of maintaining a separate variable for two functions 2026-06-10 18:21:58 +02:00
translators 31f8d76754 Update: Translations from eints
esperanto: 5 changes by slashdevslashurandom
polish: 5 changes by Rito13
2026-06-10 06:01:27 +00:00
Peter Nelson 2effec96e8 Codechange: simplify drawing of smallmap legends (#15690)
Replace convoluted cascasing switches with helper function.
2026-06-09 18:16:52 +00:00
translators dbb8096a52 Update: Translations from eints
english (us): 5 changes by 2TallTyler
2026-06-09 05:54:15 +00:00
Rubidium 8ac4112aba Codechange: introduce enums for TrainSignalSide and RoadVehicleDrivingSide 2026-06-09 05:39:15 +02:00
Peter Nelson c9cf141813 Codechange: make Track a scoped enum and TrackBits an EnumBitSet (#15684)
Helper methods to convert Track to TrackBits are removed as they are no longer necessary.
2026-06-08 23:05:51 +01:00
Peter Nelson 7e2bcaf792 Codechange: avoid magic numbers and generic types when drawing autorail (#15689) 2026-06-08 22:22:15 +01:00
Peter Nelson 0ff5f81319 Codechange: make SigSegState a scoped enum (#15687) 2026-06-08 20:05:47 +01:00
translators 0eb9a47a96 Update: Translations from eints
english (au): 15 changes by krysclarke
czech: 69 changes by adamek0202
greek: 5 changes by gh658804
russian: 5 changes by Ln-Wolf
finnish: 5 changes by hpiirai
portuguese: 5 changes by jcteotonio
portuguese (brazilian): 5 changes by pasantoro
2026-06-08 06:08:41 +00:00
Peter Nelson 8d0a0b5e16 Fix #15606: undefined behaviour may cause buttons to be invisible (#15686)
Set widget aspect ratio based on unscaled sizes, as scaled sizes are no longer available.
2026-06-07 06:23:48 +00:00
translators ba582b88ed Update: Translations from eints 2026-06-07 06:02:31 +00:00
Cyprian Klimaszewski 9d233c441d Codechange: Use CornerIndexArray instead of C-style arrays. (#15685) 2026-06-06 21:55:11 +01:00
Peter Nelson fa02d7aecb Codechange: make LinkType a scoped enum (#15683) 2026-06-06 21:54:37 +01:00
Jonathan G Rennison 552ad919a8 Fix #15679: Train reversing when partially in a depot (#15680)
Defer UpdateStatusAfterSwap until after all swaps done.
Replace previous fix in #15662.
2026-06-06 18:53:28 +01:00
Peter Nelson b5ae563df1 Codechange: make IConsoleMode a scoped enum (#15682) 2026-06-06 18:52:31 +01:00
Peter Nelson 14be71cb5f Codechange: make SignalState a scoped enum 2026-06-06 18:52:10 +01:00
Peter Nelson 231d946624 Codechange: make SignalType a scoped enum 2026-06-06 18:52:10 +01:00
Peter Nelson e97e182630 Codechange: make SignalVariant a scoped enum 2026-06-06 18:52:10 +01:00
Peter Nelson ebb77e592c Codechange: use EnumIndexArray for signal sprite and string tables 2026-06-06 18:52:10 +01:00
Cyprian Klimaszewski 549f357a19 Codechange: Make Foundation a scoped enum. (#15676) 2026-06-06 18:51:53 +01:00
Peter Nelson e41d4a0243 Codefix: clean up confusion between Track and Trackdir (#15678) 2026-06-06 14:28:49 +01:00
Matt C 6bc486a578 Feature: Add default road and tram selection (#15585)
- Merged with the existing default rail type selection
2026-06-06 09:23:08 -04:00
Peter Nelson a85d10bf7c Codechange: use IsValidTrack to test for valid track in more places (#15677) 2026-06-06 11:33:46 +01:00
Rubidium a49dc81082 Codefix: make scoped-named enum actually scoped 2026-06-06 10:07:40 +02:00
translators a894ddf665 Update: Translations from eints
french: 24 changes by glx22
2026-06-06 05:48:56 +00:00
Peter Nelson a892d8e848 Codechange: rename and make StationVehicleType a scoped enum (#15674)
StatiionHadVehicleOfType renamed to StationVehicleTypes and turned into an EnumBitSet
2026-06-04 23:16:23 +01:00
Jonathan G Rennison 2ef1623c05 Fix: Train reversing when partially in a depot (#15662) 2026-06-03 18:48:43 -04:00
Cyprian Klimaszewski 4175aee782 Fix #14975: Show correct tile for tunnel error message (#15660) 2026-06-03 18:47:55 -04:00
Peter Nelson 37983cf2d0 Codechange: use TrackBitsToTrackdirBits instead of magic number (#15670) 2026-06-03 07:48:40 +01:00
Rubidium 4c2d4ec73e Codechange: rename InitializeRailGUI to InitializeSignalGui 2026-06-03 07:20:55 +02:00
Rubidium a8606613a4 Codechange: use single path for calling SetDefaultRailGui 2026-06-03 07:20:55 +02:00
Rubidium 55be58a31d Codefix: do not update just closed construction toolbar when changing company 2026-06-03 07:20:55 +02:00
Peter Nelson dbf56751b7 Codechange: simplify iteration of track bits (#15668) 2026-06-02 18:19:40 +00:00
Peter Nelson 3314f4955b Codechange: simplify test for building stations over existing rail (#15667) 2026-06-02 18:11:03 +00:00
Peter Nelson dcb3810840 Codechange: additional TrackdirIndexArray conversion 2026-06-02 18:58:10 +01:00
Peter Nelson ef48503276 Codechange: add helper method to get other Trackdir piece 2026-06-02 18:58:10 +01:00
Peter Nelson a51dd8e053 Codechange: make StoryPageButtonCursor a scoped enum 2026-06-01 22:08:46 +01:00
Peter Nelson 06af27d52e Codechange: make StoryPageElementType a scoped enum 2026-06-01 22:08:46 +01:00
Peter Nelson f9dfbd59a3 Codechange: make StoryPageButtonFlag(s) a scoped enum/EnumBitSet 2026-06-01 22:08:46 +01:00
Peter Nelson 40a29ebc67 Fix #15664, 568c7bb2: regression in aircraft movement (#15665) 2026-06-01 22:08:31 +01:00
Peter Nelson 2aa2b340eb Codefix: use correct type for array holding Trackdirs (#15658) 2026-06-01 19:30:31 +01:00
Peter Nelson 0e951f3528 Codechange: make TransparencyOption a scoped enum 2026-05-31 18:59:51 +01:00
Peter Nelson a144bf2f8b Codechange: make TransparencyOptions an EnumBitSet 2026-05-31 18:59:51 +01:00
Peter Nelson 28cd6a3d33 Codechange: make TrackStatus a struct instead of opaque uint32_t (#15653) 2026-05-31 18:09:26 +01:00
Peter Nelson a687f02e87 Add: implement custom waypoint layouts by callback 24 2026-05-31 14:55:24 +01:00
Peter Nelson 62669a24d3 Codechange: simplify GetPlatformInfo
Move axis flipping to the only caller that requires it.
2026-05-31 14:55:24 +01:00
Peter Nelson d6783335ca Codechange: make Direction a scoped enum 2026-05-31 13:11:53 +01:00
Peter Nelson f010c21f1a Codechange: make DiagDirection a scoped enum 2026-05-31 13:11:53 +01:00
Peter Nelson 356ca9c6d9 Codechange: use static_cast/to_underlying when converting Direction 2026-05-31 13:11:53 +01:00
Peter Nelson 0e0e8056a7 Codechange: use static_cast/to_underlying when converting DiagDirection 2026-05-31 13:11:53 +01:00
Peter Nelson 37f1a046e4 Codechange: use single array for vehicle subtile coord deltas (#15651) 2026-05-31 12:22:18 +01:00
Peter Nelson a7c078dcaf Codechange: use scoped enum for MoveToAction (#15621) 2026-05-31 08:16:51 +01:00
Peter Nelson ee0d9f662e Codechange: rework definition of ship and train tile entrance coordinates (#15650) 2026-05-31 08:16:26 +01:00
Rubidium ebc61380f6 Codechange: make PriceCategory a scoped enum 2026-05-31 07:22:30 +02:00
Rubidium e4b6666fef Codechange: make VisualEffectSpawnModel a scoped enum 2026-05-31 07:22:21 +02:00
Rubidium 8bac7bd519 Codechange: make SwitchMode a scoped enum 2026-05-31 07:22:11 +02:00
Peter Nelson 0d2aed3b87 Codechange: make FloodingBehaviour a scoped enum (#15632) 2026-05-31 06:07:05 +01:00
Rubidium 2ff631caa2 Codechange: make GameMode a scoped enum 2026-05-30 23:20:20 +02:00
Peter Nelson 4b44d0a376 Codechange: use AxisToDiagDirs() in more places (#15646) 2026-05-30 18:24:04 +00:00
Peter Nelson 89201f80fb Codechange: use InclinedSlope() when drawing catenary (#15645)
Bit-shifted `Corner` is also a `Slope`, so use existing function instead of a lookup table.
2026-05-30 18:39:27 +01:00
Peter Nelson e97a4e1b06 Codechange: improve readability of logic of trains for depot enter/exit
Replaces magical hexadecimal values, masking and shifts with various Coord2Ds.
2026-05-30 17:24:04 +01:00
Peter Nelson af6868198e Codechange: add spaceship operator for Coord2D and Coord3D 2026-05-30 17:24:04 +01:00
Rubidium 9fabd511b6 Codefix: incidating isn't English 2026-05-30 14:26:01 +02:00
Peter Nelson bc8b16a99b Codechange: use EnumIndexArray for Track and Trackdir indexed arrays 2026-05-30 07:39:21 +01:00
Peter Nelson 81bdc44d1a Codechange: use EnumIndexArray for Direction and DiagDirection indexed arrays 2026-05-30 07:39:21 +01:00
Cyprian Klimaszewski d68553bbd6 Codefix: halftile_test is an int but used as a Slope. 2026-05-29 16:11:10 +02:00
Peter Nelson 1d8d07e561 Codechange: make DiagDirDiff a scoped enum (#15635) 2026-05-28 16:56:52 +00:00
Peter Nelson 568c7bb259 Codechange: make DirDiff a scoped enum 2026-05-28 17:10:31 +01:00
Peter Nelson e6cf643103 Codechange: add function to limit direction difference 2026-05-28 17:10:31 +01:00
Peter Nelson f7d1108934 Cleanup: remove unused RotateRoadBits() function (#15633) 2026-05-28 08:05:16 +00:00
translators da0a244db6 Update: Translations from eints
chinese (traditional): 6 changes by KogentaSan
hungarian: 1 change by vargaviktor
2026-05-28 05:59:48 +00:00
Peter Nelson ae1ca76596 Codechange: use Direction helpers instead of direct masking (#15631) 2026-05-27 20:07:24 +01:00
Cyprian Klimaszewski 89f730bfb7 Codechange: replace TrackdirBits C-style casts. (#15628) 2026-05-27 07:50:12 +01:00
Peter Nelson c74431e734 Codechange: make Axis a scoped enum 2026-05-27 07:49:39 +01:00
Peter Nelson c0cb8b74e1 Codechange: use static_cast/to_underlying when explicitly converting Axis 2026-05-27 07:49:39 +01:00
Peter Nelson 807436b3ea Codechange: use EnumIndexArray for axis indexed arrays 2026-05-27 07:49:39 +01:00
translators a5ec6823c6 Update: Translations from eints
luxembourgish: 10 changes by phreeze83
2026-05-27 05:59:46 +00:00
Peter Nelson 46ee856057 Fix: pylons and no-wires flags were ignored for waypoint tiles (#15619) 2026-05-26 21:57:43 +01:00
Jonathan G Rennison 33874571a5 Fix: Scenario editor random industry generation (#15626) 2026-05-26 20:01:11 +01:00
Cyprian Klimaszewski d490243c7f Codechange: Use ExtractCommandCost instead of std::get<0>. (#15542) 2026-05-26 20:00:29 +01:00
Peter Nelson 2fcb7f2b02 Codechange: use existing helpers to convert to/from Axis (#15629) 2026-05-26 19:59:52 +01:00
Peter Nelson c4b642668d Codechange: use EnumIndexArray for RoadStopType-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson 233c616425 Codechange: use EnumIndexArray for NewsType-indexed array 2026-05-26 17:12:50 +01:00
Peter Nelson 06b0b59c92 Codechange: use EnumIndexArray for ContentInfo::State-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson 6c39def287 Codechange: use EnumIndexArray for ZoomLevel-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson fa1a5b998e Codechange: use EnumIndexArray for ContentType-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson 1860355246 Codechange: use EnumIndexArray for Driver::Type-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson fa387fe129 Codechange: use EnumIndexArray for ClearGround-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson 4d809f4b43 Codechange: use EnumIndexArray for GrfSpecFeature-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson f47af07945 Codechange: use EnumIndexArray for StationType-indexed arrays 2026-05-26 17:12:50 +01:00
Peter Nelson fce33c5015 Codechange: make WarningLevel a scoped enum (#15622) 2026-05-26 17:12:21 +01:00
translators 957184ae90 Update: Translations from eints
swedish: 7 changes by joeax910
maori (new zealand): 6 changes by Kyle-McDangersword
2026-05-26 05:52:48 +00:00
Peter Nelson 39d4fe24a0 Codechange: treat station gui axis as an axis (#15627) 2026-05-25 07:21:15 +01:00
Peter Nelson 4519b5db69 Codechange: make ConsoleHookResult a scoped enum (#15623) 2026-05-25 07:19:59 +01:00
translators bb2c3aed71 Update: Translations from eints
norwegian (bokmal): 3 changes by eriksorngard
2026-05-25 06:01:33 +00:00
Peter Nelson 507b50223c Codechange: make WagonOverride a scoped enum (#15625) 2026-05-24 22:58:34 +01:00
translators 052a6f15b4 Update: Translations from eints
korean: 5 changes by telk5093
2026-05-24 05:50:21 +00:00
translators 68a03db17f Update: Translations from eints
english (us): 3 changes by 2TallTyler
esperanto: 3 changes by slashdevslashurandom
portuguese (brazilian): 1 change by jcteotonio
polish: 1 change by Rito13
2026-05-23 05:45:43 +00:00
Jonathan G Rennison f2aeed9cb9 Cleanup: Remove unused GameOptionsWindowNumber::GameSettings window number (#15617)
Remove associated redundant SetWindowDirty calls
2026-05-23 02:18:30 +02:00
translators b13cf794bc Update: Translations from eints
english (au): 3 changes by krysclarke
greek: 3 changes by gh658804
russian: 3 changes by Ln-Wolf
finnish: 3 changes by hpiirai
portuguese: 3 changes by jcteotonio
portuguese (brazilian): 82 changes by pasantoro
2026-05-22 05:52:28 +00:00
Peter Nelson 01ae236eec Codechange: replace saveload C-style casts with static_cast<> (#15583) 2026-05-21 21:33:26 +01:00
Peter Nelson dbc0aa4cdb Codechange: make ClientStatus and ServerStatus scoped enums (#15578) 2026-05-21 21:32:42 +01:00
Peter Nelson b2e01a9afa Codechange: remove code to save/load deques (#15577)
Deques are no longer involved in save/load so this was redundant code.
2026-05-21 21:31:16 +01:00
Rubidium bcda4a72ee Codechange: make WindowClass a scoped enum 2026-05-20 21:39:04 +02:00
Rubidium a9a2965131 Codechange: introduce regression script for GS compat scripts 2026-05-20 20:36:03 +02:00
Rubidium 4e58f4dffa Codechange: introduce regression script for GS 2026-05-20 20:36:03 +02:00
Rubidium 2cebcc50f4 Codechange: explicitly pass the script folder for regression scripts 2026-05-20 20:36:03 +02:00
Ricardo Holmes bf03ca2303 Fix #13600: Make terraform click+draggable in scenario editor. (#15135) 2026-05-20 13:09:34 -04:00
Tad Hardesty ad87be3a6b Add: List 'Place object' in landscaping dropdown 2026-05-20 11:55:22 +01:00
translators a6db43ea59 Update: Translations from eints
maori (new zealand): 144 changes by Kyle-McDangersword
2026-05-20 05:53:46 +00:00
Peter Nelson 3177583cdd Codechange: make TileSource a scoped enum (#15613) 2026-05-19 19:02:21 +01:00
Rubidium 54d8c3f8e3 Codechange: split WindowNumberEnum into several scoped enumerations 2026-05-19 16:14:40 +02:00
Rubidium 98c9297134 Add: scoped enum support for scripts 2026-05-19 16:14:40 +02:00
Tyler Trahan 49c36f1b39 Codechange: Use enum class for GenWorldProgress (#15560) 2026-05-19 13:26:02 +00:00
Peter Nelson 7a0d9ba2d7 Codechange: use AutoRestoreBackup when loading NewGRFs (#15612)
Dates, counters and display options are now automatically restored.
2026-05-19 07:14:23 +01:00
translators d349295091 Update: Translations from eints
vietnamese: 4 changes by MagicalDrizzle
luxembourgish: 23 changes by phreeze83
2026-05-19 05:52:40 +00:00
Cyprian Klimaszewski e4803dbe54 Codechange: Prefer std::get<T> over std::get<N>. (#15538) 2026-05-19 06:50:16 +01:00
Peter Nelson e7845e48dc Codechange: make DisplayOption a scoped enum/enum bitset (#15611) 2026-05-19 06:21:38 +01:00
Jonathan G Rennison 7d03e0c4b7 Fix: Dedicated server signal handling for SIGTERM/SIGINT/SIGQUIT 2026-05-18 21:39:58 +02:00
Peter Nelson 36a4a10a01 Codefix: F is not a suitable name for a local variable (#15603) 2026-05-18 20:05:55 +01:00
Peter Nelson a2b8d38a73 Codechange: make LiveryClass a scoped enum 2026-05-18 20:05:19 +01:00
Peter Nelson 2868060660 Codechange: make LiveryScheme a scoped enum 2026-05-18 20:05:19 +01:00
Peter Nelson 7d70a7b9e9 Codechange: add LiverySchemes as EnumBitSet 2026-05-18 20:05:19 +01:00
Peter Nelson 81c07db934 Codechange: split group and livery selections internally in company colour window
This allows using the properties of strong types.
2026-05-18 20:05:19 +01:00
Rubidium c59d64c132 Codechange: separate TextColour enumeration and flags 2026-05-18 08:37:42 +02:00
translators 31424f700e Update: Translations from eints
swedish: 25 changes by robert-i
2026-05-18 05:56:30 +00:00
translators 2dba7ac196 Update: Translations from eints
chinese (simplified): 4 changes by xiaoliuprogrammer
2026-05-17 05:48:11 +00:00
translators 2a7bd3fc60 Update: Translations from eints
norwegian (bokmal): 4 changes by eriksorngard
2026-05-15 05:49:18 +00:00
translators 71bda38826 Update: Translations from eints
swedish: 14 changes by joeax910
luxembourgish: 192 changes by phreeze83
2026-05-14 05:47:55 +00:00
Peter Nelson a5b1394b9e Cleanup: remove unused yapf functions (#15605) 2026-05-13 22:39:07 +01:00
Jonathan G Rennison 4817364a7f Codefix: Order type checks in CmdOrderRefit (#15602) 2026-05-13 09:07:07 -04:00
translators 030c5d9c67 Update: Translations from eints
luxembourgish: 39 changes by phreeze83
maori (new zealand): 4 changes by Kyle-McDangersword
2026-05-13 05:48:12 +00:00
Peter Nelson 7a15d3c017 Fix: [NewGRF] potential out-of-bounds read when performing GRM (#15600) 2026-05-12 07:48:16 +01:00
translators 20b387b91f Update: Translations from eints
portuguese: 1 change by jcteotonio
2026-05-12 05:46:04 +00:00
translators a2b380830e Update: Translations from eints
esperanto: 4 changes by slashdevslashurandom
2026-05-11 05:49:28 +00:00
translators 8b7f7f7bc0 Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
english (us): 4 changes by 2TallTyler
korean: 4 changes by telk5093
hungarian: 4 changes by vargaviktor
portuguese: 4 changes by jcteotonio
2026-05-10 05:45:18 +00:00
translators 4abec621b5 Update: Translations from eints
english (au): 4 changes by krysclarke
greek: 4 changes by gh658804
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
portuguese (brazilian): 4 changes by pasantoro
polish: 4 changes by pAter-exe
2026-05-09 05:33:35 +00:00
translators 54e32255a0 Update: Translations from eints
luxembourgish: 84 changes by phreeze83
2026-05-08 05:20:36 +00:00
Tyler Trahan 4decdedff4 Feature: Scale cargo payment aging rate (#14635)
Co-authored-by: dP <dp@dpointer.org>
2026-05-07 08:09:08 -04:00
translators e8658995e3 Update: Translations from eints
swedish: 5 changes by joeax910
maori (new zealand): 73 changes by Kyle-McDangersword
2026-05-07 05:41:34 +00:00
Jonathan G Rennison ebba01a4c8 Fix: Finding nearest train depot when driving backwards (#15590) 2026-05-06 08:10:50 +01:00
translators fdbc25a941 Update: Translations from eints
swedish: 13 changes by joeax910
korean: 1 change by telk5093
2026-05-06 05:39:19 +00:00
Peter Nelson ce506230c0 Fix: badge offsets not ignored when determining width (#15588)
Badges are drawn without padding offsets, so they should not affect dimensions either.
2026-05-05 21:35:02 +01:00
Peter Nelson 01b5b35b74 Codechange: use Coord2D instead of various structs and typedefs (#15586) 2026-05-05 21:34:39 +01:00
Peter Nelson d026e7098c Fix: account for NewGRF's global train width when drawing dual-head engines (#15587)
Improves display in purchase list for dual-head engines.
2026-05-05 20:48:15 +01:00
translators 275ba48eea Update: Translations from eints 2026-05-05 05:30:46 +00:00
Peter Nelson 0cc9f02e86 Fix #15495: fix incorrectly built default waypoints 2026-05-04 23:02:03 +01:00
Peter Nelson 1be2cd0c9a Fix #15495: unable to build bridge over default waypoints 2026-05-04 23:02:03 +01:00
nikolas b5abd08a52 Add: [CI] pipewire-devel header files (#15582)
SDL supports the pipewire audio driver, and we can allow for use of
this by installing these headers.

As documented here:
https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md
2026-05-04 23:01:28 +01:00
Peter Nelson eb52e2448d Fix 9494881e: NewGRF driving-backwards flag tested wrong part (#15579)
The DrivingBackwards flag is only ever set on the first vehicle of the consist, other vehicle parts in the consist may have indeterminate state.
2026-05-04 23:00:46 +01:00
verbosecodes 8875e12956 Fix #15235: Make GameScripts obey town road construction setting (#15559) 2026-05-04 22:59:47 +01:00
Peter Nelson 30fbc0aab8 Codechange: make SaveLoadResult a scoped enum (#15584) 2026-05-04 22:58:43 +01:00
Peter Nelson a7a025623e Codechange: make RailVehicleType a scoped enum (#15576) 2026-05-04 22:58:05 +01:00
nikolas f1fd17be8f Doc: Fix typo in comment of translation source file (#15581) 2026-05-04 14:35:05 -04:00
Jonathan G Rennison a4e1865cd7 Fix: Depot listing for trains arriving backwards with an articulated tail (#15547) 2026-05-04 19:19:04 +01:00
Peter Nelson 792f6d99a3 Codechange: make ExpensesType a scoped enum (#15572) 2026-05-04 08:20:52 +01:00
Peter Nelson cd597f79ad Codechange: make EngineClass a scoped enum (#15575) 2026-05-03 15:53:27 +01:00
Peter Nelson 7e624beadc Codechange: make Shade a scoped enum (#15571)
Renamed from `ColourShade` to `Shade` for brevity.
2026-05-03 15:07:29 +01:00
translators 420abb3865 Update: Translations from eints
vietnamese: 11 changes by KhoiCanDev
2026-05-03 05:39:44 +00:00
Peter Nelson b220cc1a29 Fix: station list facility buttons do not produce click sound (#15569) 2026-05-02 19:36:36 +01:00
Peter Nelson 7bb3774d7f Codechange: iterate station list facilities filter in a saner manner (#15568) 2026-05-02 19:36:19 +01:00
Jonathan G Rennison a8e151c10a Codefix: Station/waypoint viewport rect handling in QueryStringWindow::OnPlaceObjectAbort (#15558) 2026-05-01 07:39:43 -04:00
translators ceac1258d8 Update: Translations from eints
vietnamese: 288 changes by KhoiCanDev
2026-05-01 05:46:25 +00:00
Peter Nelson 1707b5ddea Codechange: make IndustryConstructionType a scoped enum 2026-04-30 22:40:20 +01:00
Peter Nelson e8cc0f5dc5 Codechange: make IndustryCheck a scoped enum
Enum is renamed from overly generic `CheckProc`.
2026-04-30 22:40:20 +01:00
Peter Nelson 77be3fc12d Codechange: make IndustryAvailabilityCallType a scoped enum 2026-04-30 22:40:20 +01:00
Jonathan G Rennison 89174e891a Codechange: typedef for EnumClassIndexContainer with std::array (#15548) 2026-04-30 14:59:10 -04:00
Tyler Trahan 826e9a3c8c Change: Generate lighthouses along coasts and near towns (#14828) 2026-04-30 14:52:21 -04:00
translators d17e32d4b5 Update: Translations from eints
welsh: 123 changes by Ansbaradigeidfran
vietnamese: 173 changes by KhoiCanDev
luxembourgish: 87 changes by phreeze83
2026-04-30 05:40:21 +00:00
translators a2e98f880f Update: Translations from eints
polish: 2 changes by pAter-exe
2026-04-29 05:37:47 +00:00
Peter Nelson 7eafa497d1 Fix 47dd04d: crash when loading crash save with no viewport coordinates (#15550) 2026-04-28 21:45:35 +01:00
translators 88dd010618 Update: Translations from eints
swedish: 11 changes by joeax910
greek: 6 changes by gh658804
spanish: 1 change by franpacheco-cpp
2026-04-28 05:40:22 +00:00
Rubidium 8feffc9eba Codechange: make FillRectMode a scoped enum 2026-04-27 22:12:20 +02:00
Jonathan G Rennison bbe5dbf230 Cleanup: Correct various spelling errors 2026-04-27 21:05:08 +02:00
Peter Nelson 4a7cbf29f0 Codechange: prefer AutoRestoreBackup over Backup/Restore (#15480) 2026-04-27 08:02:41 +01:00
Peter Nelson a4d142eddb Codechange: prefer bit set methods over operators (#15537)
Missing conversion of some RoadBits calls.
2026-04-27 07:08:33 +01:00
translators def17a75b2 Update: Translations from eints
chinese (traditional): 8 changes by KogentaSan
luxembourgish: 2 changes by phreeze83
2026-04-27 05:37:05 +00:00
Rubidium 38dd2e59eb Codechange: remove aligning parameters in SquirrelExport 2026-04-26 15:18:40 +02:00
Peter Nelson 77403627a8 Codechange: make VehicleType a scoped enum 2026-04-26 07:00:13 +01:00
Peter Nelson b90aefbf49 Codechange: allow passing a scoped enum to InvalidateWindowData 2026-04-26 07:00:13 +01:00
Peter Nelson 8b5c4ae96b Codechange: add helpers to get engine sorter names/functions
Avoids exposing raw C-style arrays.
2026-04-26 07:00:13 +01:00
Peter Nelson 174ff5d914 Codechange: add helpers to get original engine count/offset
Avoids exposing raw C-style arrays.
2026-04-26 07:00:13 +01:00
translators 32d61a8938 Update: Translations from eints
turkish: 14 changes by BeratSJ
2026-04-26 05:27:56 +00:00
Rubidium 66df1188c4 Codechange: let _dirkeys use an enum and EnumBitSet 2026-04-25 18:47:54 +02:00
Rubidium 99c8a637b4 Codechange: make WindowPosition a scoped enum 2026-04-25 17:15:18 +02:00
Richard Wheeler a2e99c9cfa Fix: Fix viewport snap back on stop following vehicle (#15520)
Fixes #15520
2026-04-25 14:30:12 +01:00
Tyler Trahan f62eeada65 Fix: Use tile of leading vehicle when calculating too-short station loading penalty (#15530) 2026-04-24 17:19:58 -04:00
Rubidium 53799cc39a Codechange: make Support8bpp a scoped enum 2026-04-24 22:35:31 +02:00
Cyprian Klimaszewski 4a69cafe9a Codechange: Deduplicate test for "block signal on trackdir" into a function. (#15526)
Co-authored-by: Michael Lutz <michi@icosahedron.de>
2026-04-24 18:52:17 +01:00
Owen Rudge a0ce1f94ed Add: Support automatic detection of data from Atari's Transport Tycoon Deluxe re-release 2026-04-24 09:31:19 +01:00
Peter Nelson 44c63bc400 Codefix 1d10e8ee6: explicitly delete unwanted indexers (#15522)
Prevents typed-indexers being used via implicit conversion.
2026-04-23 08:32:25 +01:00
translators 146499ab99 Update: Translations from eints
swedish: 12 changes by joeax910
2026-04-23 05:20:39 +00:00
translators c14de5faa5 Update: Translations from eints
swedish: 9 changes by joeax910
polish: 4 changes by Rito13
2026-04-22 05:18:55 +00:00
Peter Nelson c45aa3c9b6 Codechange: use EnumBitSet for CargoTypes 2026-04-21 17:13:31 +01:00
Peter Nelson 962a550d1b Codechange: add parameterless Flip() method to BaseBitSet
This allows flipping all valid bits, similar to parameterless Set() and Reset().
2026-04-21 17:13:31 +01:00
translators c2fbc6fdeb Update: Translations from eints
swedish: 13 changes by joeax910
norwegian (bokmal): 9 changes by eriksorngard
hungarian: 6 changes by vargaviktor
polish: 2 changes by SzyZuu
2026-04-21 05:19:40 +00:00
Peter Nelson 8341beb345 Codechange: add functions to convert between GrfSpecFeature and VehicleType (#15517)
Removes various different casts.
2026-04-20 19:17:48 +01:00
translators a6db99765a Update: Translations from eints
swedish: 20 changes by joeax910
2026-04-20 05:29:08 +00:00
Cyprian Klimaszewski b46b660b0b Fix: Buttons for choosing engine in preview window show for single engine. 2026-04-19 22:32:42 +02:00
Rubidium 3b5d46e0bb Codechange: make Colours a scoped enum 2026-04-19 20:53:52 +02:00
Rubidium 6823a1bc9e Codechange: move fetching colour offset to a separate function 2026-04-19 20:53:52 +02:00
Jonathan G Rennison bd1bb3adc8 Fix: Force proceed behaviour when driving backwards (#15510) 2026-04-19 14:16:55 -04:00
Peter Nelson 2bf84ea78c Codechange: make GrfSpecFeature a scoped enum (#15487) 2026-04-19 19:04:27 +01:00
Peter Nelson 16b192d61f Fix #15511: vehicle passed to commands must be a company buildable type (#15512) 2026-04-19 17:03:39 +01:00
translators ea4964371d Update: Translations from eints
swedish: 4 changes by joeax910
korean: 6 changes by telk5093
russian: 1 change by Ln-Wolf
2026-04-19 05:19:36 +00:00
Rubidium 8bbad0dfaf Codechange: Object's colour is actually a recolour offset 2026-04-18 21:28:08 +02:00
Rubidium ba209c8745 Codechange: let GenerateCompanyColour use C++ constructs 2026-04-18 19:21:19 +02:00
translators b75390ba60 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 1 change by KogentaSan
english (us): 6 changes by 2TallTyler
russian: 2 changes by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 5 changes by jcteotonio
esperanto: 6 changes by slashdevslashurandom
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by Rito13
2026-04-18 05:16:32 +00:00
Matt C e4bc01d172 Change: Most used rail type takes ownership into account (#15489) 2026-04-17 18:29:39 -04:00
Jonathan G Rennison 3437a58d5e Fix: Condition for whether to change driving direction or flip on train reverse (#15499) 2026-04-17 18:28:17 -04:00
Rubidium 7f1d17df46 Codechange: use EnumBitSet for used_colours 2026-04-17 22:34:17 +02:00
Rubidium 9a87f184c4 Codechange: move calculating livery recolour offset to Livery 2026-04-17 22:05:25 +02:00
Peter Nelson e24f92ce82 Fix d15f0597: prevent setting DrivingBackwards condition on non-trains (#15493)
The existing code only prevented this in the GUI.
2026-04-17 18:30:36 +01:00
Loïc Guilloux b7c51a9332 Fix #15497: [Script] ScriptController::Break not pausing in TestMode (#15498) 2026-04-17 16:36:16 +02:00
translators 678dfe658a Update: Translations from eints
english (au): 8 changes by krysclarke
chinese (traditional): 7 changes by KogentaSan
russian: 5 changes by Ln-Wolf
finnish: 5 changes by hpiirai
portuguese: 5 changes by jcteotonio
portuguese (brazilian): 5 changes by pasantoro
polish: 3 changes by Rito13
2026-04-17 05:20:14 +00:00
Peter Nelson 8568f1f7bc Codechange: rename and make RailSpriteType a scoped enum
RailTypeSpriteGroup is now renamed to RailSpriteType
2026-04-16 21:01:17 +01:00
Peter Nelson 5cef1ca68a Codechange: rename and make RoadSpriteType a scoped enum
RoadTypeSpriteGroup is now renamed to RoadSpriteType
2026-04-16 21:01:17 +01:00
Peter Nelson d15f105974 Add: conditional order to test if a train is driving backwards (#15484) 2026-04-16 21:00:49 +01:00
Jonathan G Rennison fd855aa61d Fix: Coordinate transformation for JSON town placement when anticlockwise 2026-04-16 16:48:44 +02:00
translators e09cca949f Update: Translations from eints
swedish: 36 changes by joeax910
english (us): 3 changes by 2TallTyler
chinese (simplified): 58 changes by WenSimEHRP
hungarian: 3 changes by vargaviktor
polish: 3 changes by pAter-exe
2026-04-16 05:22:10 +00:00
Rubidium fe5171a6c5 Codechange: make PaletteType a scoped enum 2026-04-15 23:48:31 +02:00
Tyler Trahan 98805561f8 Add: Setting to disallow train magic flip, and reverse at reduced speed (#15391) 2026-04-15 16:24:26 -04:00
translators 3f4984ebaa Update: Translations from eints
swedish: 27 changes by joeax910
chinese (traditional): 5 changes by KogentaSan
luxembourgish: 42 changes by phreeze83
korean: 3 changes by telk5093
greek: 3 changes by gh658804
russian: 3 changes by Ln-Wolf
finnish: 4 changes by hpiirai
portuguese: 5 changes by jcteotonio
esperanto: 3 changes by slashdevslashurandom
portuguese (brazilian): 3 changes by pasantoro
2026-04-15 05:18:39 +00:00
Peter Nelson f60bb23268 Codechange: make ChecksumResult a scoped enum (#15482) 2026-04-14 17:50:01 +01:00
translators 8a7bc482ad Update: Translations from eints
swedish: 171 changes by joeax910, 2 changes by robert-i
norwegian (bokmal): 3 changes by eriksorngard
spanish (mexican): 19 changes by qAxelFT
welsh: 211 changes by Ansbaradigeidfran
luxembourgish: 64 changes by phreeze83
russian: 3 changes by Ln-Wolf
esperanto: 327 changes by slashdevslashurandom
2026-04-14 05:19:01 +00:00
Tyler Trahan 9494881e14 Add: [NewGRF] Variable for when a train is driving backwards 2026-04-13 21:52:22 -04:00
Tyler Trahan 631d6ba641 Add: [NewGRF] Flag to allow unpowered wagon to lead train when backing up 2026-04-13 21:52:22 -04:00
Tyler Trahan 2b530751dd Feature: Trains with an engine on the rear drive backwards when reversing 2026-04-13 21:52:22 -04:00
Cyprian Klimaszewski 76c277805d Codefix: comment for TileLoop_Water is outdated. (#15478) 2026-04-13 22:52:00 +01:00
Peter Nelson 73dafe5021 Codechange: use EnumBitSet for DisallowedRoadDirections (#15479) 2026-04-13 22:48:44 +01:00
Peter Nelson b33b0d92a0 Codechange: make RoadBits an EnumBitSet (#15476) 2026-04-13 21:23:17 +01:00
Peter Nelson a5a60c8615 Codechange: make RoadTramType a scoped enum, and use EnumBitSet (#15477) 2026-04-13 18:15:41 +01:00
Anton Molyboha dab82fdff0 Codefix: Minor bug in framerate/performance computation (#15459) 2026-04-12 17:20:55 -04:00
Cyprian Klimaszewski 778839894d Codechange: use a scoped enum for OskActivation. (#15474) 2026-04-12 17:19:51 -04:00
Cyprian Klimaszewski eb9b648587 Codefix: in LandInfoWindow::OnInit tile is accessed without this->. (#15472) 2026-04-12 19:32:59 +00:00
Rubidium 1adfb81aa9 Codechange: properly document a few DrawString 'Rect' variants 2026-04-12 18:10:34 +02:00
Rubidium 7434052eb6 Codechange: make FontSize a scoped enum 2026-04-12 18:10:34 +02:00
Peter Nelson 636fcf3af3 Codechange: make TownProductionEffect a scoped enum 2026-04-12 14:46:54 +01:00
Peter Nelson 7c6da0ae6d Codechange: make TownAcceptanceEffect a scoped enum 2026-04-12 14:46:54 +01:00
Rubidium 053f17c63d Codechange: make base music set folder name consistent with content tarball filenames 2026-04-12 14:46:35 +02:00
Peter Nelson f5061df387 Codechange: make ContentType a scoped enum (#15458) 2026-04-12 13:41:07 +01:00
Peter Nelson a0ff1ec595 Fix 8f14894024: NewGRF debug handler for towns in wrong place since badges (#15467)
Badges should exist before (fake) towns.
2026-04-12 07:45:41 +01:00
Peter Nelson c41f893428 Fix 1ec1f1ef37: object id overrides were not reset between games (#15465) 2026-04-11 21:35:46 +01:00
Rubidium ae2d11c9da Codechange: document a bit of GRF feature handler code 2026-04-11 22:25:12 +02:00
Peter Nelson dd1c5c1a8a Codechange: make GRFTempEngineData::Refittability a scoped enum (#15462) 2026-04-11 20:11:01 +01:00
Peter Nelson 1e17c62f3a Codechange: make FindGRFConfigMode a scoped enum (#15461) 2026-04-11 20:10:45 +01:00
Tyler Trahan 43c8681ee9 Codefix f1f31c1: Set width of string with all parameters (#15460) 2026-04-11 18:42:23 +00:00
Rubidium 7016d2bee3 Codechange: make ChangeInfoResult a scoped enum 2026-04-11 16:06:49 +02:00
Peter Nelson 042facf96c Fix b266a044c4: debug saveload errors were clobbered (#15452) 2026-04-10 19:51:21 +00:00
Loïc Guilloux 7f0be1f27f Fix a6c042855e: [CI] Don't mark previous sucessful deployments inactive (#15451) 2026-04-10 18:40:34 +00:00
Jonathan G Rennison 037cd53803 Codefix fb795089: Duplicate string colour codes in english.txt (#15449) 2026-04-10 10:35:19 -04:00
Loïc Guilloux b3b407acaf Fix a6c042855e: [CI] Deployment creation was failing (#15448) 2026-04-10 14:30:45 +02:00
Loïc Guilloux a6c042855e Fix c3f1372d74: [CI] Deployment was not linked to the PR (#15441) 2026-04-08 18:36:52 +02:00
Peter Nelson 4db1672611 Codechange: make TropicZone a scoped enum (#15442) 2026-04-07 08:33:16 +01:00
Rubidium bcd98a6ba5 Codechange: document a number of functions and variables 2026-04-06 21:17:17 +02:00
Peter Nelson 01568ce0b1 Fix: refresh client list when client renames (#15439) 2026-04-06 16:58:55 +01:00
Peter Nelson 736ed61c1c Codechange: remove size_t indexer from TypedIndexContainer
Makes container index even stronger.
2026-04-06 15:05:30 +01:00
Peter Nelson 1d10e8ee64 Codechange: remove size_t indexer from EnumIndexContainer
Makes container index even stronger.
2026-04-06 15:05:30 +01:00
Peter Nelson a9d7397a77 Codechange: Pass rail and roadtypes separately for tunnel and bridge commands. (#15438)
Avoids passing and casting each via an unrelated type, at the expense of an extra command parameter.
2026-04-06 14:45:22 +01:00
Rubidium 9acfa96cb3 Codechange: use scoped enum for PacketGameType 2026-04-06 15:12:02 +02:00
Rubidium 0ad97043bb Codechange: give more context regarding the PacketType enumerations 2026-04-06 15:12:02 +02:00
Rubidium 316eac1208 Codechange: improve some pathfinder documentation 2026-04-06 15:11:35 +02:00
Rubidium 2e77b6f9f4 Codechange: document missing parameters and return types 2026-04-06 06:52:23 +02:00
Rubidium 9f849fcd9a Codechange: use scoped enum for PacketCoordinatorType 2026-04-06 06:52:14 +02:00
Rubidium 817a47773a Codechange: use scoped enum for PacketAdminType 2026-04-06 06:52:01 +02:00
Rubidium c858e0c90a Codechange: prepare TCPListener for scoped enums 2026-04-06 06:52:01 +02:00
Peter Nelson 6dce7fdca3 Codechange: remove padding spaces from settings types (#15436) 2026-04-06 00:04:19 +01:00
Peter Nelson 9f287a7828 Cleanup 61a0a520f6: remove obsolete IndustryTrigger enum (#15437) 2026-04-05 22:53:56 +00:00
Peter Nelson 78bc829886 Codechange: make Searchpath a scoped enum 2026-04-05 21:46:07 +01:00
Peter Nelson 5aae8e2d64 Codechange: make Subdirectory a scoped enum 2026-04-05 21:46:07 +01:00
Peter Nelson 93a6aa77c6 Codechange: make SaveLoadOperation a scoped enum 2026-04-05 21:46:07 +01:00
Peter Nelson 04f7adb7b7 Codechange: make DetailedFileType a scoped enum 2026-04-05 21:46:07 +01:00
Peter Nelson 74b0b080e7 Codechange: make AbstractFileType a scoped enum 2026-04-05 21:46:07 +01:00
Loïc Guilloux c3f1372d74 Codechange: [CI] Use unprivileged env to build preview (#15419) 2026-04-05 18:16:27 +02:00
Peter Nelson 0b29a2560a Codechange: make GRFStatus, GRFListCompatibility and GRFParameterType scoped enums (#15426) 2026-04-05 16:41:56 +01:00
EmperorJake fed04d0a03 Add: Setting to disable aircraft range limit (#15433) 2026-04-05 10:51:12 -04:00
Cyprian Klimaszewski 4707f78744 Codechange: Make doxygen ignore some parts of code that it does not understand. (#15430) 2026-04-05 15:46:52 +01:00
Charles Pigott 3bb17ce2d7 Codechange: [CI] Use UCRT64 MSYS2 environment (#15422)
* Codechange: [CI] Use UCRT64 MSYS2 environment

* Codechange: [CI] Use pacboy to install packages from the correct subsystem
2026-04-05 10:37:04 +02:00
Peter Nelson 41a0a8967a Fix #15428: [Fluidsynth] treat configured synth.gain as maximum instead of hardcoded value (#15429) 2026-04-04 22:31:37 +01:00
Peter Nelson dd233a9b70 Fix f864aaf131: refresh string width cache for all loaded fonts (#15427)
Cache needs to be loaded for all font sizes, not just those that were missing glyphs.
2026-04-04 21:51:29 +01:00
Peter Nelson cdb548c252 Codechange: make ShoreReplacement and TramDepotReplacement scoped enums (#15425)
Rename TramReplacement to TramDepotReplacement, as it only affects depots.
2026-04-04 17:53:21 +01:00
Peter Nelson bf6898290d Codefix 3f3ee69d0f: really make GrfLoadingStage a scoped enum (#15424) 2026-04-04 14:40:39 +00:00
Cyprian Klimaszewski 4da085e598 Add: [NewGRF] Station flag to divide cargo by area instead of perimeter. 2026-04-04 16:16:32 +02:00
Abigail 4355855b85 Change: Make ScriptTile::IsBuildableRectangle use a TileArea for iteration 2026-04-04 16:15:40 +02:00
Abigail 34f5f1eaea Fix #15318: Nonsensical error message when trying to send aircraft to hangar with no usable airports 2026-04-04 16:15:24 +02:00
David Newton 5f20b45cd8 Codechange: Refactor smooth economy industry production change chances 2026-04-04 16:14:36 +02:00
Rubidium ea5e87651f Codechange: make NetworkAction a scoped enum 2026-04-04 16:08:51 +02:00
Charles Pigott 08563632f3 Remove: [CI] MinGW32 target (#15420) 2026-04-04 12:09:26 +01:00
Rubidium 48a8903d85 Codechange: document network related functions/types/variables 2026-04-03 22:34:01 +02:00
Peter Nelson 856a02ae53 Codefix cdfbb113: FontConfig does not need to load font caches (#15416) 2026-04-03 20:17:15 +00:00
Rubidium cd4fb5dea3 Codechange: simplify the FiosItem sorter logic 2026-04-03 21:40:57 +02:00
Rubidium 95fbc7abf5 Codechange: use scope enum and rename DestType to NetworkChatDestinationType 2026-04-03 21:40:24 +02:00
Rubidium c36f9d2d2a Codechange: add automatic WindowNumber conversions for scoped enums and documentation 2026-04-03 21:40:24 +02:00
Tyler Trahan 41a4917211 Codechange: Cache last vehicle of chains (#15385) 2026-04-03 14:46:41 -04:00
Peter Nelson f864aaf131 Change: test font for eligibility before adding as fallback
Avoids reloading fonts and scanning for missing glyphs for each searched font.
2026-04-03 19:45:46 +01:00
Peter Nelson 9a0af4387b Codechange: pass required font/os_handle via FontProviderManager::LoadFont()
This allows fonts other than configured to be loaded.
2026-04-03 19:45:46 +01:00
Peter Nelson cdfbb113ce Codechange: MissingGlyphSearcher now contains which fontsizes to search for 2026-04-03 19:45:46 +01:00
metablaster 3c9a75a387 Fix: [Script] IsBuildableRectangle for a 0x0 tile should return false (#15357) 2026-04-03 19:38:24 +01:00
Peter Nelson 36878bfbc8 Codechange: remove duplicate and out-of-date documentation for LoadFont (#15411)
Move comments inline to code where useful.
2026-04-02 12:20:46 +01:00
Tyler Trahan 3efaeb0eea Change: Allow subsidies with CargoDist (#15189) 2026-04-01 18:45:27 -04:00
translators 2ac2fa79b9 Update: Translations from eints
korean: 3 changes by telk5093
2026-04-01 05:20:45 +00:00
Jonathan G Rennison 935f39ecab Fix: MaxReliability order condition value not being clamped to <= 100 2026-03-31 23:08:08 +02:00
Tad Hardesty e40c7f0c81 Add: Lower the Send To Depot button when a vehicle is on its way to one (#15397) 2026-03-31 12:23:28 +01:00
Peter Nelson d2dd4d4e4a Codefix: NWidgetDisplayFlag and MWidContainerFlag should be scoped enums 2026-03-31 12:21:00 +01:00
Peter Nelson cca03f3112 Codechange: use scoped enum for Scrollbar Stepping
Rename as it is already in scope of Scrollbar class.
2026-03-31 12:21:00 +01:00
Peter Nelson b856899a13 Codechange: use scoped enum for SizingType 2026-03-31 12:21:00 +01:00
Peter Nelson 8fdc503448 Codechange: use scoped enum for ResizeWidgetType
Rename from ResizeWidgetValues
2026-03-31 12:21:00 +01:00
Peter Nelson ff2028c7d6 Codechange: use scoped enum for ArrowWidgetType
Rename from ArrowWidgetValues to make more sense
2026-03-31 12:21:00 +01:00
Peter Nelson 423bf8d5cd Fix: force sprites in main menu image-text buttons to same square dimensions
Fixes appearance with original basesets
2026-03-31 12:20:40 +01:00
Peter Nelson 56f7d87b56 Fix: size toolbar buttons relative to largest toolbar icon instead of hardcoded value
This improves appearance with basesets that use a different sprite size for toolbar icons.
2026-03-31 12:20:40 +01:00
Peter Nelson d15cbef897 Codechange: call AdjustPaddingForZoom on window creation
Reduces duplication in SetMinimalSize / SetMinimalTextLines
2026-03-31 12:20:40 +01:00
translators 915bc00ea0 Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
english (us): 2 changes by 2TallTyler
hungarian: 5 changes by vargaviktor
portuguese: 2 changes by jcteotonio
esperanto: 2 changes by slashdevslashurandom
portuguese (brazilian): 5 changes by pasantoro, 1 change by jcteotonio
2026-03-31 05:18:54 +00:00
translators 10ac3a22e0 Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 3 changes by KogentaSan
greek: 2 changes by gh658804
finnish: 2 changes by hpiirai
esperanto: 61 changes by slashdevslashurandom
portuguese (brazilian): 4 changes by pasantoro
polish: 2 changes by pAter-exe
2026-03-30 05:21:03 +00:00
translators bc9e786f84 Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
greek: 1 change by gh658804
finnish: 1 change by hpiirai
catalan: 7 changes by J0anJosep
portuguese: 1 change by jcteotonio
esperanto: 23 changes by slashdevslashurandom
portuguese (brazilian): 6 changes by pasantoro
polish: 1 change by pAter-exe
2026-03-29 05:19:04 +00:00
Tyler Trahan 877af52d61 Change: Clarify max age shown in vehicle info window (#15403) 2026-03-28 21:52:48 +00:00
translators a9b32664ca Update: Translations from eints 2026-03-28 05:08:57 +00:00
Master Hellish f1f31c1481 Add: Show maximum reliability in vehicle info (#15401) 2026-03-27 20:09:05 +00:00
translators aeddd30a48 Update: Translations from eints
korean: 2 changes by telk5093
polish: 2 changes by pAter-exe
2026-03-27 05:17:26 +00:00
translators 34fdaec58e Update: Translations from eints
norwegian (bokmal): 2 changes by eriksorngard
english (us): 2 changes by 2TallTyler
polish: 1 change by pAter-exe
2026-03-26 05:17:15 +00:00
translators 56342308eb Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 2 changes by KogentaSan
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
portuguese: 2 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 1 change by Rito13
2026-03-25 05:09:12 +00:00
Tyler Trahan fc3b81a313 Codechange: Rename "non-stop" and "go via" order flags for clarity (#15398) 2026-03-24 08:52:50 -04:00
translators d9c35037d4 Update: Translations from eints
catalan: 4 changes by J0anJosep
2026-03-24 05:09:07 +00:00
Peter Nelson b325575105 Add: Record history of cargo delivered to towns (#15184) 2026-03-23 21:32:18 +00:00
SamuXarick 11d5558c60 Doc: [Script] Update ScriptCargo::GetCargoIncome (#15271)
Update API docs to clarify distance is Manhattan tiles, rename days_in_transit unit to economy-days, update its max from 637 to 163838, and add a reference to ScriptEconomyTime.
2026-03-23 08:38:50 -04:00
Cyprian Klimaszewski 673d696989 Fix 05f2a0f: [NewGRF] Variable 0x69 has not been added for waypoints. (#15396) 2026-03-23 08:34:53 -04:00
Cyprian Klimaszewski 9abaf555a0 Codechange: [CI] Give examples in errors in file description checker. (#15366) 2026-03-23 08:32:03 -04:00
translators 4b40c1fefb Update: Translations from eints
norwegian (bokmal): 65 changes by eriksorngard
2026-03-23 05:14:45 +00:00
translators 600df4caaa Update: Translations from eints
swedish: 25 changes by joeax910
norwegian (bokmal): 38 changes by eriksorngard
spanish: 69 changes by franpacheco-cpp
esperanto: 30 changes by slashdevslashurandom
2026-03-22 05:07:21 +00:00
translators 8237a44152 Update: Translations from eints
esperanto: 94 changes by slashdevslashurandom
2026-03-21 04:58:27 +00:00
Peter Nelson 36869844d5 Fix 38b74639be: dropdown text filter could interfere with hotkeys after closing (#15395) 2026-03-20 19:01:48 +00:00
translators bcc0476d18 Update: Translations from eints
swedish: 2 changes by joeax910
norwegian (bokmal): 141 changes by eriksorngard
2026-03-19 05:08:21 +00:00
translators 60ed1fb779 Update: Translations from eints
swedish: 7 changes by joeax910
2026-03-18 05:10:20 +00:00
translators ba3c2a43f1 Update: Translations from eints
swedish: 32 changes by joeax910
2026-03-17 05:07:34 +00:00
translators f949f3487b Update: Translations from eints
norwegian (bokmal): 164 changes by eriksorngard
2026-03-16 05:19:51 +00:00
translators 4cee9e72d6 Update: Translations from eints
chinese (simplified): 21 changes by WenSimEHRP
turkish: 499 changes by jnmbk
danish: 12 changes by bscargo
2026-03-15 05:14:45 +00:00
translators f296606c92 Update: Translations from eints
ukrainian: 22 changes by StepanIvasyn
2026-03-13 05:03:18 +00:00
translators d2da30debe Update: Translations from eints
vietnamese: 8 changes by KhoiCanDev
2026-03-12 05:04:52 +00:00
Tyler Trahan 812a74f821 Codechange: Make ReverseTrainDirection() static (#15381) 2026-03-11 18:30:03 +00:00
translators 511d3794ce Update: Translations from eints
hungarian: 219 changes by vargaviktor
danish: 35 changes by bscargo
2026-03-11 05:01:37 +00:00
translators a1cf40448e Update: Translations from eints
hungarian: 122 changes by titanicbobo
catalan: 7 changes by J0anJosep
2026-03-10 05:00:35 +00:00
Peter Nelson d02d57b348 Change: Make dropdown text filter persistent in some cases. 2026-03-08 19:25:28 +00:00
Peter Nelson d685fc97f1 Change: Enable dropdown text filter for various dropdown lists. 2026-03-08 19:25:28 +00:00
Peter Nelson 38b74639be Change: Add text filter to dropdown lists. 2026-03-08 19:25:28 +00:00
Peter Nelson 01ecbe5798 Codechange: Allow vertical container direction to be flipped.
Allows widgets to be laid out from bottom to top instead of top to bottom.
2026-03-08 19:25:28 +00:00
Peter Nelson d4f5ded0d2 Fix 802a31cdb0: rejecting or accepting engine preview incorrectly closed preview windo (#15378) 2026-03-08 17:07:40 +00:00
Peter Nelson 37118b93c7 Codechange: use scoped enum for ScriptSettingSource (#15377) 2026-03-08 14:00:23 +00:00
translators 61d17c959e Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
korean: 1 change by telk5093
portuguese: 1 change by jcteotonio
2026-03-08 05:00:54 +00:00
Rubidium 12392fd295 Codechange: document some network types/functions 2026-03-07 17:18:45 +01:00
Rubidium 92dae45773 Codechange: use a scoped enum for NetworkErrorCode 2026-03-07 16:39:22 +01:00
Rubidium 54aaae4ffd Codechange: document functions of GrfActionHandler 2026-03-07 16:26:49 +01:00
Rubidium 984ae8e707 Codechange: replace function with constant 2026-03-07 16:26:41 +01:00
translators 265dde1f28 Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
latvian: 4 changes by lexuslatvia
esperanto: 14 changes by slashdevslashurandom
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2026-03-07 04:53:31 +00:00
Rubidium 3f3ee69d0f Codechange: make GrfLoadingStage a scoped enum and remove unused GLS_END 2026-03-06 17:31:25 +01:00
Rubidium dd812125dc Codechange: make StationNaming a scoped enum and add some documentation 2026-03-06 16:22:36 +01:00
Rubidium fd8a28ef9b Codechange: make NetworkJoinStatus a scoped enum and remove unused value/strings 2026-03-06 15:38:11 +01:00
translators b5489e9b90 Update: Translations from eints
esperanto: 56 changes by slashdevslashurandom
polish: 14 changes by pAter-exe
2026-03-06 05:01:08 +00:00
Jonathan G Rennison 71d59aaf3d Change: Show "Delete All" in order window delete button when applicable (#15370) 2026-03-05 17:56:20 -05:00
translators 182a2c5100 Update: Translations from eints
polish: 51 changes by pAter-exe, 5 changes by Rito13
2026-03-05 05:03:19 +00:00
Jonathan G Rennison 4125514ee1 Codechange: [CMake] Remove -flifetime-dse=1 as this is no longer required 2026-03-04 19:59:51 +01:00
Cyprian Klimaszewski 6db72d1f59 Codefix 22f5b61: Paths with "/" in file-descriptions.py are invalid on Windows.
Make file-descriptions.py always check all source files in the
repository when called without arguments regardless of current working
directory.
2026-03-04 19:59:39 +01:00
Cyprian Klimaszewski 48703f0a75 Codechange: Make MainToolbarEditorHotkeys enum an enum class. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski 450dd6f789 Codechange: Allow to pass num as a member of scoped enum in Hotkey constructors. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski 85a6c4b65d Codechange: Make TownMenuEntries enum an enum class. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski c868a25245 Codechange: Make MapMenuEntries enum an enum class. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski e30113c01c Codechange: Make SaveLoadEditorMenuEntries and SaveLoadNormalMenuEntries enums enum classes. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski 9eaab1cfb9 Codechange: Make OptionMenuEntries enum an enum class. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski 829745f28c Codechange: Allow to pass value as a member of scoped enum when creating drop down list. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski 6b336c206c Codechange: Make CallBackFunction enum an enum class. 2026-03-04 19:59:25 +01:00
Cyprian Klimaszewski d13887bca4 Codechange: Make ToolbarMode enum an enum class.
Also makes that _toolbar_mode is properly reseted to
ToolbarMode::Normal.
2026-03-04 19:59:25 +01:00
translators 1baaa74679 Update: Translations from eints
maori (new zealand): 5 changes by Kyle-McDangersword
catalan: 26 changes by J0anJosep
esperanto: 107 changes by slashdevslashurandom
polish: 8 changes by Rito13
2026-03-04 05:00:35 +00:00
Rubidium 281d70c185 Codechange: use a scoped enum for ServerGameType 2026-03-03 18:53:37 +01:00
translators 259086ca18 Update: Translations from eints
esperanto: 7 changes by slashdevslashurandom
polish: 16 changes by Rito13
2026-03-03 05:04:00 +00:00
Rubidium 700701bf18 Codechange: use scoped enum for NetworkVehicleType 2026-03-02 21:54:43 +01:00
Jonathan G Rennison 6c508d9046 Codefix: Avoid duplicating industry tables in output binary 2026-03-02 16:21:03 +01:00
Jonathan G Rennison f7317c22a4 Codefix: Double-counting of object types when loading pre-147 savegames 2026-03-02 16:20:53 +01:00
Rubidium efed900b09 Codechange: make ConNetworkAuthorizedKeyAction a scoped enum 2026-03-02 16:20:19 +01:00
translators 52cc44a96e Update: Translations from eints
norwegian (bokmal): 32 changes by eriksorngard
2026-03-02 05:04:53 +00:00
translators c806bee528 Update: Translations from eints
english (au): 2 changes by krysclarke
english (us): 2 changes by 2TallTyler
esperanto: 1 change by slashdevslashurandom
2026-03-01 05:06:41 +00:00
translators e5c9025ad5 Update: Translations from eints
norwegian (bokmal): 5 changes by eriksorngard
chinese (traditional): 1 change by KogentaSan
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 3 changes by hpiirai
maori (new zealand): 80 changes by Kyle-McDangersword
portuguese: 1 change by jcteotonio
esperanto: 187 changes by slashdevslashurandom
portuguese (brazilian): 1 change by pasantoro
2026-02-28 04:51:23 +00:00
Peter Nelson 5e9d20d57e Codechange: use scoped enums in industry windows (#15319) 2026-02-27 23:24:26 +00:00
Loïc Guilloux f574fb30c5 Fix 4b7a324: compilation with DEBUG_DUMP_COMMANDS (#15343) 2026-02-27 18:52:20 +01:00
translators 29991c93c3 Update: Translations from eints
hungarian: 96 changes by vargaviktor
2026-02-27 05:04:21 +00:00
Peter Nelson 3f3ced5fea Fix b266a044c4: correct two non-continuation error messages (#15340)
These were decapitalised as if they are continuation error messages, but they are not.
2026-02-26 17:21:31 +00:00
translators 71bf7d3b04 Update: Translations from eints
chinese (traditional): 10 changes by KogentaSan
korean: 438 changes by telk5093
maori (new zealand): 26 changes by Kyle-McDangersword
danish: 9 changes by bscargo
esperanto: 147 changes by slashdevslashurandom
polish: 35 changes by Rito13, 2 changes by pAter-exe
2026-02-26 05:07:15 +00:00
translators ccf816a44d Update: Translations from eints
swedish: 46 changes by robert-i
chinese (traditional): 11 changes by KogentaSan
maori (new zealand): 1 change by Kyle-McDangersword
polish: 42 changes by Rito13, 19 changes by pAter-exe
2026-02-25 05:08:46 +00:00
Loïc Guilloux a683f1c96b Fix 98ac75e: non deterministic handling of train crashes (#15338) 2026-02-24 21:57:11 +01:00
Rubidium 6370859c7e Codechange: add missing documentation to destructors 2026-02-24 16:24:53 +01:00
Rubidium 52b25b981f Codechange: add documentation to the virtual destructors 2026-02-24 16:24:53 +01:00
translators 6b25087c56 Update: Translations from eints
english (au): 435 changes by krysclarke
chinese (traditional): 264 changes by KogentaSan
english (us): 2 changes by 2TallTyler
greek: 436 changes by gh658804
maori (new zealand): 15 changes by Kyle-McDangersword
polish: 33 changes by Rito13
2026-02-24 05:08:16 +00:00
Rito12 f7e20ecb4e Cleanup: STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB is not needed. 2026-02-23 17:14:56 +01:00
Cyprian Klimaszewski 7f66f87af4 Codefix: [CI] file descriptions checker crashed when file was removed/renamed. 2026-02-23 17:13:16 +01:00
Jonathan G Rennison f1390b9cf8 Fix #15310: Incorrect map tile indices used for aircraft outside the map
When crashing aircraft or finding hangars
2026-02-23 17:13:07 +01:00
Rubidium 0670c096f7 Codechange: use existing enum over magic number
DiagDirection is the enum that comes closest. A new enum doesn't make sense
for just one function, especially if you get sort-of overlapping behaviour.
It would be X::EastToSouth, X::SouthToWest where either can be chosen in case
of the dragging being in the southern direction.
2026-02-23 17:11:02 +01:00
translators 1883bb6731 Update: Translations from eints
chinese (traditional): 179 changes by KogentaSan
english (us): 438 changes by 2TallTyler
russian: 438 changes by Ln-Wolf
finnish: 438 changes by hpiirai
maori (new zealand): 516 changes by Kyle-McDangersword
french: 452 changes by glx22
portuguese: 437 changes by jcteotonio
esperanto: 452 changes by slashdevslashurandom
portuguese (brazilian): 479 changes by pasantoro, 1 change by jcteotonio
polish: 250 changes by Rito13
2026-02-23 05:11:31 +00:00
translators 2cce03e2e1 Update: Translations from eints
maori (new zealand): 59 changes by Kyle-McDangersword
french: 1 change by ottdfevr
2026-02-22 05:05:12 +00:00
Peter Nelson ffa961d8b5 Codechange: remove colour prefix from some strings used in error window 2026-02-21 20:24:57 +00:00
Peter Nelson b266a044c4 Change: make continuation error messages consistent
Remove prefix ellipsis and start with lowercase.
2026-02-21 20:24:57 +00:00
Peter Nelson f1ef2ab76d Codechange: ensure error without continuation is drawn in white 2026-02-21 20:24:57 +00:00
Rubidium 5b37a7b35c Codefix: do not remove (last) newline when sorting doxygen warnings 2026-02-21 19:46:26 +01:00
Cyprian Klimaszewski 504b5e656e Codechange: Make documentation comments for some macros recognised by doxygen. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 2ac0811ff9 Codechange: Make documentation comments for some functions recognised by doxygen. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 3c8d7df657 Codechange: Make documentation comments for some enums and their members recognised by doxygen. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 5943382cf5 Codechange: Make documentation comments for some types recognised by doxygen. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 21bee91fa7 Codechange: Make some variables and constants documentation comments recognised by doxygen. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 7a6b7fb1f0 Codechange: Allow to document multiple members with one comment using doxygen groups. 2026-02-21 15:05:13 +01:00
Cyprian Klimaszewski 01776bf161 Codechange: Document INTERNAL_LINKAGE. 2026-02-21 15:05:13 +01:00
Rubidium e0d2843fd7 Codechange: add parameter and return documentation the Squirrel wrappers 2026-02-21 15:03:20 +01:00
Jonathan G Rennison a5cb0529cb Fix: Incorrect scroll bar capacity for train details window total cargo tab 2026-02-21 14:24:28 +01:00
Rubidium 6438bb4d07 Change: distinguish between 'Flat land required' and 'Land sloped in wrong direction' for building depots 2026-02-21 11:44:23 +01:00
Rubidium 9a5187bac8 Codechange: document return types and parameters 2026-02-21 06:13:15 +01:00
Rubidium a4a807cd1b Codechange: improve code style and documentation for TGP 2026-02-21 06:13:07 +01:00
translators 940a3b12ce Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 3 changes by KogentaSan
english (us): 2 changes by 2TallTyler
french: 52 changes by ottdfevr
2026-02-21 04:58:10 +00:00
Rubidium 89ffb429c5 Codechange: document missing parameters and return values 2026-02-20 19:00:15 +01:00
Rito12 7179ea8b02 Codechange: Fix all doxygen warnings related to train.h file.
Fixes 14 doxygen warnings.
The `head` parameter of `GroundVehicle::GetPoweredPartPower` virtual method is removed as it's always the same as the object it's called on.
2026-02-20 16:14:33 +01:00
Rubidium dde097a080 Codechange: document parameters and return types 2026-02-20 16:14:02 +01:00
Rubidium 21b4248fe9 Codechange: improve filter parameter name, add documentation 2026-02-20 16:13:34 +01:00
translators de3fa9ada6 Update: Translations from eints
swedish: 2 changes by robert-i
greek: 2 changes by gh658804
hungarian: 2 changes by titanicbobo
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
maori (new zealand): 4 changes by Kyle-McDangersword
latvian: 15 changes by lexuslatvia
portuguese: 2 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2026-02-20 05:04:55 +00:00
Rubidium 90c8dfa03d Codechange: replace macro and goto with lambda and return 2026-02-19 20:02:07 +01:00
translators 698dc9cb08 Update: Translations from eints
swedish: 2 changes by robert-i
chinese (traditional): 5 changes by KogentaSan
english (us): 2 changes by 2TallTyler
chinese (simplified): 14 changes by WenSimEHRP
italian: 4 changes by quasimagia
maori (new zealand): 37 changes by Kyle-McDangersword
danish: 2 changes by bscargo
polish: 3 changes by pAter-exe
2026-02-19 05:08:09 +00:00
Rubidium 549d555be7 Codechange: document a number of parameters and return types 2026-02-18 22:57:05 +01:00
Rubidium 8f9ceeec75 Codechange: add parameter and return documentation 2026-02-18 22:56:54 +01:00
Rubidium aeadfb2f67 Codechange: demystify some magic numbers and document callback 2026-02-18 22:56:54 +01:00
Rubidium d067bfe577 Codechange: add missing parameter/return documentation to NewGRF code 2026-02-18 18:28:46 +01:00
Rubidium 5226ae3f53 Codechange: use scoped enum for PacketContentType 2026-02-18 17:05:45 +01:00
Rubidium c868b2ee61 Codechange: use scoped enum for PacketTurnType 2026-02-18 17:05:45 +01:00
Rubidium 1af77a7f75 Codechange: use scoped enum for PacketStunType 2026-02-18 17:05:45 +01:00
Rubidium fb817f456d Codechange: use scoped enum for PacketUDPType 2026-02-18 17:05:45 +01:00
Rubidium 02e73ae4ba Codechange: prepare for scoped enums as PacketType 2026-02-18 17:05:45 +01:00
Rubidium ce5058aac8 Codechange: document a few other parameters and return types 2026-02-18 17:05:16 +01:00
Rubidium 671b62e073 Codechange: document a few parameter and return types 2026-02-18 17:04:49 +01:00
Rubidium ab968555e5 Codechange: add missing @param and @return for music 2026-02-18 17:04:19 +01:00
Rubidium 81f2f4e2e8 Codechange: use designated initialisers for _tile_type_water_procs 2026-02-18 17:03:33 +01:00
Rubidium 7e8fad95c6 Codechange: use designated initialisers for _tile_type_void_procs 2026-02-18 17:03:33 +01:00
Rubidium b387f55ff7 Codechange: use designated initialisers for _tile_type_tunnelbridge_procs 2026-02-18 17:03:33 +01:00
Rubidium 8bc3c13a7e Codechange: use designated initialisers for _tile_type_trees_procs 2026-02-18 17:03:33 +01:00
Rubidium d6d6ab1b4f Codechange: use designated initialisers for _tile_type_town_procs 2026-02-18 17:03:33 +01:00
Rubidium e5295f86fa Codechange: use designated initialisers for _tile_type_station_procs 2026-02-18 17:03:33 +01:00
Rubidium 977dc23f06 Codechange: use designated initialisers for _tile_type_road_procs 2026-02-18 17:03:33 +01:00
Rubidium fd7f211351 Codechange: use designated initialisers for _tile_type_rail_procs 2026-02-18 17:03:33 +01:00
Rubidium 6be4e353bc Codechange: use designated initialisers for _tile_type_object_procs 2026-02-18 17:03:33 +01:00
Rubidium c859d34c66 Codechange: use designated initialisers for _tile_type_industry_procs 2026-02-18 17:03:33 +01:00
Rubidium a1708450f7 Codechange: use designated initialisers for _tile_type_clear_procs 2026-02-18 17:03:33 +01:00
Rubidium f469cfb761 Codechange: rename get_slope_z_proc to get_slope_pixel_z_proc to follow GetSlopePixelZ name 2026-02-18 17:03:33 +01:00
Rubidium 7ddeac8810 Codechange: introduce some defaults for TileTypeProcs 2026-02-18 17:03:33 +01:00
Rubidium 781eb4cea4 Codechange: document TileTypeProcs 2026-02-18 17:03:33 +01:00
Peter Nelson 10379441bc Codechange: use enum class for DistributionType 2026-02-18 10:57:28 +00:00
Peter Nelson 7c7f74c551 Codechange: use enum class for Driver::Type enum 2026-02-18 10:57:28 +00:00
Peter Nelson 33a0d59d1d Change: Apply slightly more padding to image-text buttons. (#15077)
Add space equal to the width of the image to balance the text better(?) no matter what font or interface scale settings are use.
2026-02-18 09:12:17 +00:00
Peter Nelson 50110602aa Change: Display rail and road type speed limit text in yellow. (#15076)
This was a "convention" used by NewGRFs which exploited string colour bleeding.
2026-02-18 09:11:46 +00:00
Peter Nelson 0e25f9245c Codechange: use PoolID for newgrf class ids (#15228) 2026-02-18 09:11:04 +00:00
SamuXarick a92dba290b Fix 434163aa: Crashed zeppelin not blocking runway (#15281)
Turns out the block flag was in Reset mode instead of Set.
Move the Set block logic earlier to make it repeatedly set for as long as the zeppeliner exists.
2026-02-18 09:01:18 +00:00
translators 2123fca5ea Update: Translations from eints
english (au): 2 changes by krysclarke
greek: 2 changes by gh658804
hungarian: 2 changes by vargaviktor
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
maori (new zealand): 3 changes by Kyle-McDangersword
portuguese: 2 changes by jcteotonio
esperanto: 2 changes by slashdevslashurandom
portuguese (brazilian): 2 changes by pasantoro
polish: 13 changes by Rito13
2026-02-18 05:08:40 +00:00
Rubidium 23dcc9dd07 Codechange: document parameters and return types 2026-02-17 23:11:27 +01:00
Peter Nelson 7c9f2c71f4 Codechange: remove GetAcceptanceAroundTiles always_accepted out parameter (#15295)
Return multiple values as std::pair instead of using pointers for out parameters.
2026-02-17 19:14:54 +00:00
translators e33d53e37e Update: Translations from eints
maori (new zealand): 30 changes by Kyle-McDangersword
2026-02-17 05:08:17 +00:00
Rubidium b1e1d56aba Codechange: improve coding style, replace output parameter and bool return with std::optional 2026-02-16 21:09:31 +01:00
Rubidium 863355f0a6 Codechange: improve documentation 2026-02-16 21:09:31 +01:00
Peter Nelson 1c095ba464 Codechange: use enum class for CompanyAllowListCtrlAction 2026-02-16 20:08:05 +00:00
Peter Nelson d09b91cd92 Codechange: use enum class for CompanyCtrlAction 2026-02-16 20:08:05 +00:00
Peter Nelson a5d028e892 Codechange: use enum class for CompanyRemoveReason 2026-02-16 20:08:05 +00:00
Rubidium 7aecc268b6 Codechange: add missing @param and @return 2026-02-16 17:19:09 +01:00
Rubidium 02438e9934 Codechange: unify behaviour of handling too short packets 2026-02-16 17:07:24 +01:00
Rubidium 0b3c448ea1 Codechange: move documentation to declaration, when there are multiple implementations 2026-02-16 16:35:19 +01:00
Rubidium 581a038913 Codechange: add missing @param and @return for linkgraph 2026-02-16 16:34:51 +01:00
Rubidium 190e91f19d Codechange: add missing @param and @return for kdtree 2026-02-16 16:34:29 +01:00
Rubidium 269633f77b Codechange: document network (adjacent) parameters/return types 2026-02-16 16:34:06 +01:00
Rubidium 465f2c340a Codechange: ignore CDECL macros for Doxygen 2026-02-16 16:34:06 +01:00
Rubidium 68a46f460c Codechange: add some missing parameter and return type documentation 2026-02-16 16:33:41 +01:00
Peter Nelson da4dd91887 Add: Company allow-list can be set to allow anyone. 2026-02-16 14:01:05 +00:00
Peter Nelson a6803199d5 Codechange: use enum class for network client drop down actions
Move enum to scope of window.
2026-02-16 14:01:05 +00:00
translators 65216111b1 Update: Translations from eints
maori (new zealand): 148 changes by Kyle-McDangersword
catalan: 7 changes by J0anJosep
danish: 11 changes by bscargo
2026-02-16 05:12:50 +00:00
Rubidium 55870b4331 Codechange: add missing @param and @return 2026-02-16 04:29:58 +01:00
Rubidium 480040c86e Codechange: reduce ottd_cpuid boilerplate, make static and rename 2026-02-15 22:54:58 +01:00
Rubidium c7468a6922 Codechange: add missing @param and @return 2026-02-15 22:14:37 +01:00
Rubidium a0b173b43c Codechange: remove @return documentation for void methods 2026-02-15 20:30:26 +01:00
Rubidium 308eff6eeb Codechange: add some missing documentation to some core functions 2026-02-15 16:52:16 +01:00
Rubidium 3fc6bbd5bf Codechange: add some missing vehicle related documentation 2026-02-15 12:02:18 +01:00
Rubidium ce676a6300 Codechange: add documentation for core string helpers 2026-02-15 10:16:41 +01:00
translators 72e4955a09 Update: Translations from eints
norwegian (bokmal): 11 changes by eriksorngard
maori (new zealand): 11 changes by Kyle-McDangersword
catalan: 4 changes by J0anJosep
2026-02-15 05:07:41 +00:00
Rubidium 9000092e78 Codechange: exclude unit tests from the main documentation 2026-02-14 21:34:25 +01:00
Rubidium 341e097b5a Codechange: exclude safeguards macros from ending up in documentation
The goal of safeguards is to prevent people from using these macros,
having (doxygen) documentation of these macros defeats that purpose.
2026-02-14 21:34:25 +01:00
Rubidium 5c28e41f6a Codechange: doxygen-document console commands 2026-02-14 20:49:20 +01:00
Rubidium b4bfa06054 Codechange: add missing map-accessor documentation 2026-02-14 18:51:19 +01:00
translators 0e9b3a81ad Update: Translations from eints
catalan: 27 changes by J0anJosep
2026-02-14 05:00:38 +00:00
Peter Nelson 341ab30c4a Fix #15269: crash when building drive-through stop on unowned one-way road (#15270)
Allow over-building drive-through roadstops on unowned one-way roads.
2026-02-13 22:20:55 +00:00
translators 7b88c518cf Update: Translations from eints
hungarian: 11 changes by titanicbobo
portuguese: 11 changes by jcteotonio
2026-02-13 05:07:07 +00:00
translators 396aa75a84 Update: Translations from eints
english (au): 11 changes by krysclarke
swedish: 11 changes by robert-i
chinese (traditional): 11 changes by KogentaSan
english (us): 11 changes by 2TallTyler
korean: 11 changes by telk5093
greek: 11 changes by gh658804
russian: 11 changes by Ln-Wolf
finnish: 11 changes by hpiirai
maori (new zealand): 11 changes by Kyle-McDangersword
esperanto: 11 changes by slashdevslashurandom
portuguese (brazilian): 11 changes by pasantoro
2026-02-12 05:11:17 +00:00
Rubidium 39dfb7c27b Codechange: use size_t for glyph/run counts, remove unneeded glyph count instance variable 2026-02-11 21:44:35 +01:00
Rubidium c52c8e04a8 Codechange: move documentation to super class and add missing documentation 2026-02-11 20:43:31 +01:00
Rubidium f56b17571e Codechange: document undocumented functions and remove duplicate documentation 2026-02-11 16:22:33 +01:00
translators 04436b7401 Update: Translations from eints
esperanto: 58 changes by slashdevslashurandom
2026-02-11 05:13:36 +00:00
Rubidium 8e75626b49 Codechange: unify documentation and parameter names of sorters 2026-02-11 04:53:39 +01:00
Eilon Lipton 83f58b3fbd Add: Show additional vehicle details based on sort criteria (#15158)
When creating vehicles and sorting the list, additional vehicle details are shown for the field being sorted by. For example, when sorting by running cost, the running cost of every vehicle is shown in the vehicle list at the top-level.

Co-authored-by: rubidium42 <rubidium42@users.noreply.github.com>
Co-authored-by: Charles Pigott <charlespigott@googlemail.com>
2026-02-10 08:58:11 -05:00
Abigail ba82ba27a1 Fix #15234: Null pointer dereference opening sign edit window when sign 0 does not exist (#15236) 2026-02-10 08:51:53 -05:00
translators b5eea625cd Update: Translations from eints
esperanto: 32 changes by slashdevslashurandom
2026-02-10 05:14:49 +00:00
Owen Rudge 1fdcccbd49 Codechange: [CI] Upload to the Windows Store automatically.
Microsoft expects a .msixbundle these days, which is effectively identical to .appxbundle, but needs a newer version of Windows 10, so bump our minimum version requirement too.
2026-02-09 15:13:41 +01:00
translators 6090865874 Update: Translations from eints
vietnamese: 27 changes by MagicalDrizzle
2026-02-09 05:13:13 +00:00
ronvid ae80a47c7d Fix #15105: Czech townname generation causing crashes. (#15231) 2026-02-08 23:55:28 +01:00
Peter Nelson 840e4316c6 Fix #15247: crash when handling invalid sprite in OpenGL cursor sprite system (#15248) 2026-02-08 17:29:54 +00:00
Rubidium 4ba0208437 Codechange: document some script functions 2026-02-08 18:27:26 +01:00
Rubidium 9cc9a9702b Codechange: add missing return/parameters to protocol implementation 2026-02-08 17:44:46 +01:00
Rubidium 5e491ebc1b Codechange: document parameters/return types of PickerCallback 2026-02-08 17:44:26 +01:00
Rubidium d62c9b132f Codechange: complete documentation for some blitter/driver functions 2026-02-08 17:44:02 +01:00
Rubidium 7adf44e474 Codechange: document some virtual functions 2026-02-08 17:43:18 +01:00
translators 43af8e94d0 Update: Translations from eints
norwegian (bokmal): 1 change by eriksorngard
danish: 1 change by bscargo
2026-02-08 05:11:51 +00:00
Loïc Guilloux 41c3dbe8ef Fix dd2cf93: Only ignore nearest depot order (#15238) 2026-02-07 17:27:31 +01:00
Rubidium 4d4e37dbf1 Codechange: document some virtual functions 2026-02-06 21:38:49 +01:00
Cyprian Klimaszewski 59d9619fc1 Fix 800ade7: [GS] Docs are missing or do not match the code. (#15230) 2026-02-06 09:48:53 +00:00
translators 4438209683 Update: Translations from eints
latvian: 97 changes by lexuslatvia
portuguese: 1 change by jcteotonio
2026-02-06 05:04:54 +00:00
translators 4bd9d657ca Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
portuguese: 4 changes by jcteotonio
esperanto: 1 change by slashdevslashurandom
2026-02-05 05:05:50 +00:00
translators 9a52dec15c Update: Translations from eints
english (au): 1 change by krysclarke
swedish: 1 change by robert-i
english (us): 1 change by 2TallTyler
korean: 1 change by telk5093
greek: 2 changes by gh658804
hungarian: 6 changes by vargaviktor
russian: 1 change by Ln-Wolf
finnish: 8 changes by hpiirai
maori (new zealand): 1 change by Kyle-McDangersword
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2026-02-04 05:00:39 +00:00
Rubidium 10d3c7b293 Codechange: document some virtual functions 2026-02-04 00:27:49 +01:00
Rubidium 22d6a7b5ad Codechange: remove unneeded/unused return type 2026-02-04 00:27:30 +01:00
Rubidium 2e619f31c2 Codefix: various tweaks to improve doxygen parsing 2026-02-04 00:27:13 +01:00
Rubidium 3d844d3f1d Codefix: override already implies virtual, so don't add virtual 2026-02-04 00:26:51 +01:00
Loïc Guilloux 4e767224df Fix #15225: [CMake] Detect mismatch between tag and internal version (#15226) 2026-02-04 00:09:02 +01:00
Peter Nelson 7341c4d9aa Fix #14827: Store random trigger information per-tile. (#14830) 2026-02-03 23:01:55 +00:00
OpenCharlie 1cb2015694 Change: Improve water edges (#14868)
Co-authored-by: charlie <open_charle@outlook.com>
2026-02-03 13:03:27 +00:00
Peter Nelson 10f9f13c64 Codechange: use enum class for TreeGround (#15222) 2026-02-03 08:59:56 +00:00
Rito12 9ed9e42b2a Codechange: [CI] Use doxygen 1.16.1. 2026-02-02 21:09:53 +01:00
Peter Nelson 092fe307ce Codechange: follow defensive coding for clear ground arrays
Ensure arrays used for clear ground lookups never overflow.
2026-02-02 18:49:20 +00:00
Peter Nelson 5c2a37d03e Codechange: use enum class for ClearGround 2026-02-02 18:49:20 +00:00
Richard Wheeler 17cab9b29d Change: Protect rivers from removal when terraforming 2026-02-02 18:22:44 +00:00
Rubidium bcaf3eaec2 Codefix: wrong parameter names and partially missing parameters 2026-02-02 18:18:51 +01:00
Rubidium c6c06e13eb Codefix: wrong parameter names and partially missing parameters 2026-02-02 16:31:46 +01:00
Peter Nelson f25e1f8be1 Fix b4ac5e2231: don't compare clear density with ClearGround (#15217) 2026-02-02 13:02:56 +00:00
translators cb562ef33c Update: Translations from eints
norwegian (bokmal): 33 changes by eriksorngard
maori (new zealand): 8 changes by Kyle-McDangersword
2026-02-02 05:10:52 +00:00
Richard Wheeler 2347a56d7c Fix: Off by one and redundant logic in snowy road checks 2026-02-01 22:51:32 +00:00
Rubidium 58f3255f01 Codefix: remove deprecated Doxygen configuration entries 2026-02-01 19:13:21 +01:00
Rubidium ab43f57d40 Codechange: remove duplicate doxygen warnings 2026-02-01 15:50:45 +01:00
Rubidium c77bbcba9a Codefix: remove unneeded parameter 2026-02-01 15:50:17 +01:00
Rubidium 1c68cc5f03 Codefix: unneeded templating of function 2026-02-01 15:50:17 +01:00
Rubidium 13bd34fcbd Codefix: wrong type in function declaration 2026-02-01 15:50:17 +01:00
Rubidium 73232058d9 Codechange: deduplicate code by dereferencing in callee instead of callers 2026-02-01 15:50:17 +01:00
Rubidium ae7af6c463 Codefix: expand some macros, so doxygen actually sees what is documented 2026-02-01 15:50:07 +01:00
Rubidium 67fac86149 Codefix: remove @param documentation for parameters that don't exist anymore 2026-02-01 15:49:41 +01:00
translators dedcd78da0 Update: Translations from eints
swedish: 23 changes by robert-i
korean: 38 changes by telk5093
esperanto: 1 change by slashdevslashurandom
2026-02-01 05:12:31 +00:00
Rito12 31531e616e Codechange: [CI] Sort doxygen warnings in docs checker. 2026-01-31 16:48:40 +01:00
Rito12 e869d4f2bd Codefix: script_window.hpp contains invalid links in docs. 2026-01-31 16:48:15 +01:00
Abigail b23d4b6e56 Fix #15137: Roads built on steep slopes at the minimum snow level height have inconsistent snowiness 2026-01-31 16:47:19 +01:00
translators d675a71eaf Update: Translations from eints
chinese (traditional): 48 changes by KogentaSan
english (us): 8 changes by 2TallTyler
esperanto: 1 change by slashdevslashurandom
2026-01-31 04:55:19 +00:00
translators 1dd3d65574 Update: Translations from eints
swedish: 2 changes by robert-i
chinese (traditional): 23 changes by KogentaSan
chinese (simplified): 26 changes by WenSimEHRP
hungarian: 2 changes by vargaviktor
russian: 6 changes by Ln-Wolf
portuguese: 1 change by jcteotonio
2026-01-30 05:00:37 +00:00
Rito12 664b507fe2 Change: Add support for next/previous/first/last road/tram type hotkeys. 2026-01-30 00:00:53 +01:00
Konstantin Gribov 6cac80a158 Change: Add support for next/previous/first/last railtype hotkeys.
This patch adds support for next/prev railtype hotkeys which select
previous next, first or last  available railtype.
If user selected any widget in railway build toolbox it will be
preserved.

Such behaviour is useful for players who use PURR, Useless Tracks,
U&ReRMM and similar NewGRFs for quick selection.

I use PURR with semantic tracks coloring (e.g. white purr for waiting
bays, red purr for prio zones etc).

Current patch binds this feature to `[`, `]`, `CTRL+[` and `CTRL+]`.

Initialy by Konstantin Gribov <grossws@gmail.com>.
2026-01-30 00:00:53 +01:00
Rito12 7b5bfe2ac6 Codechange: Create API for special hotkeys used to select items from list. 2026-01-30 00:00:53 +01:00
Cyprian Klimaszewski d17f662490 Codechange: Allow to set cursor directly. 2026-01-30 00:00:53 +01:00
Rito12 2de2c5d31d Cleanup: Expose last built types in the toolbar gui header. 2026-01-30 00:00:53 +01:00
Rito12 a706ac7dc9 Codechange: Add sorter for doxygen warnings. 2026-01-29 23:58:39 +01:00
Rubidium a42ba2493e Codefix: too many or too few documented parameters 2026-01-29 23:38:32 +01:00
Rubidium 79588cbfe3 Codefix: CommandProc does not exist, so remove any references 2026-01-29 23:38:32 +01:00
Rubidium 7d70d70e0e Codefix: remove unused parameter 2026-01-29 23:38:32 +01:00
Rubidium 954ac16c8c Codefix: remove implicit LaTeX dependency 2026-01-29 21:40:06 +01:00
Rubidium 920fc5657b Codechange: move 'out' parameters of GetVehicleFromDepotWndPt to the returned value 2026-01-29 20:03:54 +01:00
Jonathan G Rennison f49924e749 Fix: Station view window fold/unfold not refreshing scrollbar 2026-01-29 19:14:17 +01:00
Rubidium 03c24810b1 Codechange: use scoped enums for timer enumerations, rename one enum 2026-01-29 12:42:27 +01:00
Richard Wheeler 7092162a97 Change: Removing river tiles reduce local authority rating 2026-01-29 07:44:27 +00:00
translators 2bb01bd0e4 Update: Translations from eints
english (au): 8 changes by krysclarke
greek: 8 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 7 changes by hpiirai
danish: 7 changes by bscargo
portuguese: 27 changes by jcteotonio
esperanto: 8 changes by slashdevslashurandom
portuguese (brazilian): 8 changes by pasantoro
polish: 9 changes by pAter-exe
2026-01-29 04:58:48 +00:00
Peter Nelson 526ee6434d Codefix: add doxygen for DefaultSaveLoadHandler (#15186) 2026-01-28 22:42:04 +00:00
Rubidium 4adf494ebc Codechange: enum-class-ify Commands 2026-01-28 23:32:51 +01:00
Peter Nelson 014bf7e750 Fix bd57aee3a9: Town supplied history incorrectly clamped to uint16_t (#15183) 2026-01-28 21:13:56 +00:00
translators bec75bc22a Update: Translations from eints
chinese (traditional): 18 changes by KogentaSan
english (us): 18 changes by 2TallTyler
maori (new zealand): 49 changes by Kyle-McDangersword
danish: 18 changes by bscargo
2026-01-28 04:49:12 +00:00
Richard Wheeler 140ca5d3e6 Fix: Use consistent description for invalid orders 2026-01-27 22:57:36 +00:00
Peter Nelson 802a31cdb0 Change #13915: Share one window for engine preview pop ups. (#14703)
If more than one engine preview occurs at the same time, previous/next buttons allow the player to switch between engines.
2026-01-27 22:29:29 +00:00
Loïc Guilloux fb8d4e880e Change: [Script] Reformat callstack output (#15171) 2026-01-27 22:30:04 +01:00
Peter Nelson 3937d7ed6f Fix #15085: don't perform GUI scale changes before video driver is fully initialised (#15175) 2026-01-27 21:07:18 +00:00
Cyprian Klimaszewski 89ddc87c16 Codefix 97f3e5b: Restore defensive programming for _tile_type_procs. (#15165) 2026-01-27 20:41:45 +00:00
Rubidium 98f27ed83c Fix #15166: foundations missing adjacent to NewGRF objects without foundation 2026-01-27 20:23:26 +01:00
translators 70404850e2 Update: Translations from eints
english (au): 18 changes by krysclarke
greek: 23 changes by gh658804
hungarian: 25 changes by vargaviktor
russian: 18 changes by Ln-Wolf
finnish: 18 changes by hpiirai
esperanto: 18 changes by slashdevslashurandom
portuguese (brazilian): 18 changes by pasantoro
polish: 18 changes by pAter-exe
2026-01-27 04:50:06 +00:00
Jonathan G Rennison 44612d5b59 Fix: Articulated road vehicle following with immediately sequential u-turns (#15170) 2026-01-26 18:46:55 +00:00
Peter Nelson 24a4f3b1a6 Fix e0c2ad1: [Script] Give GetPrimary/SecondaryLiveryColour preconditions (#15169)
These calls ignored existing API conventions and did not document them.
2026-01-26 18:45:22 +00:00
translators 402ab7cf5f Update: Translations from eints
swedish: 7 changes by robert-i
greek: 6 changes by superuser-does
portuguese: 1 change by jcteotonio
2026-01-26 04:51:30 +00:00
mmtunligit 2bcbea2694 Feature: User-defined collections of saved items in the picker window (#14813) 2026-01-25 12:38:01 -05:00
translators e661db0396 Update: Translations from eints
maori (new zealand): 7 changes by Kyle-McDangersword
esperanto: 43 changes by slashdevslashurandom
2026-01-25 04:51:08 +00:00
Peter Nelson 6addf5c704 Fix #15088: When building a new train, the refit button state may be incorrect. (#15162)
Invalidate vehicle view window when the vehicle chain is changed.

Co-authored-by: Abigail <abigailthomsonhicks@gmail.com>
2026-01-24 19:12:22 +00:00
Loïc Guilloux 6e356eb267 Fix #15160: Use savegame landscape to display company names in SaveLoad window (#15161) 2026-01-24 19:53:30 +01:00
Peter Nelson a8d0241c0b Fix #15116: install fallback cargo translation table for old cargo sets (#15150)
Old combined cargo/industry sets may set up cargo types with labels and expect them to be usable without a translation table.

Install a fallback table if the NewGRF does not install one to give them a better chance of working.
2026-01-24 14:42:58 +00:00
Peter Nelson 1716d36ebb Fix: Allow infinite water to be selected when loading heightmap (#15146) 2026-01-24 14:42:36 +00:00
Cyprian Klimaszewski 97f3e5b70f Codechange: Make TileType enum an enum class. 2026-01-24 08:34:05 +01:00
Cyprian Klimaszewski 7d34e09f94 Codefix b0542c8: Remove tree counter from docs. 2026-01-24 06:52:59 +01:00
Rubidium 84863e73a9 Fix 666073fc7b: cocoa video driver did not register 2026-01-24 06:50:36 +01:00
Rubidium 0519f82a37 Fix 317dc71c6a: MacOS version detection was broken, and return a tuple instead of three out-params 2026-01-24 06:50:36 +01:00
Rubidium 6b3eaba308 Codechange: remove unneeded MacOSVersionIsAtLeast calls 2026-01-24 06:50:36 +01:00
translators 009905e39e Update: Translations from eints
vietnamese: 11 changes by myquartz
catalan: 7 changes by J0anJosep
esperanto: 791 changes by slashdevslashurandom
2026-01-24 04:46:04 +00:00
Peter Nelson 2d6fe7d9c6 Codefix: incorrect indentation for GetCargoTranslationTable (#15156) 2026-01-23 22:37:16 +00:00
Loïc Guilloux ab68e3616d Fix #15153, beb213f9: Wrong tile used to get bridge reservation overlay (#15154) 2026-01-23 16:36:37 +01:00
Peter Nelson df7bf03cc8 Fix 568b70e: Fjordia SlCompanyLiveries::Load crash (#15148)
Co-authored-by: qirlib <qirlib@gmail.com>
2026-01-22 22:59:20 +00:00
Cyprian Klimaszewski 9545d255ce Codefix: <var> is taken as HTML tag by doxygen. 2026-01-22 23:43:25 +01:00
Cyprian Klimaszewski d18cf47c10 Codefix f4b0ac2: Documentation for non existing parameters is copied to function overrides. 2026-01-22 23:43:25 +01:00
Cyprian Klimaszewski 639cf2aa76 Codefix 9e9b513: Line numbers do not hide in WARN_LINE_FORMAT. 2026-01-22 23:43:25 +01:00
translators 0f0f19092b Update: Translations from eints
danish: 7 changes by bscargo
2026-01-22 04:49:47 +00:00
translators 0c0f55302d Update: Translations from eints
chinese (traditional): 12 changes by KogentaSan
2026-01-21 04:49:23 +00:00
Rito12 23d8a3df1b Codechange: Add GitHub workflow that checks new doxygen warnings.
Uses diff to print warnings.
2026-01-20 17:12:18 +01:00
translators f2d0e3342a Update: Translations from eints
english (us): 7 changes by 2TallTyler
chinese (simplified): 26 changes by WenSimEHRP
korean: 15 changes by telk5093
portuguese: 1 change by jcteotonio
2026-01-20 04:50:04 +00:00
Peter Nelson 4be378bc08 Fix: [Script] Map some error strings to existing errors. (#15113) 2026-01-20 00:04:21 +00:00
Peter Nelson f983a74f2e Codechange: Remove CLEAR_SNOW. (#15136)
Remove CLEAR_SNOW which is no longer used on the map and causes confusion.

IsSnowTile() is checked instead.
2026-01-19 23:34:56 +00:00
Peter Nelson 2bb6d3350f Fix 595b696d61: Tile suitability test for farm field no longer handled snow tiles. (#15134) 2026-01-19 19:59:57 +00:00
Peter Nelson 16dc1fc8bd Fix #15131, 3cf9b15959: Trees no longer spread on partially snowy tiles. (#15133) 2026-01-19 18:45:51 +00:00
translators d685a5034b Update: Translations from eints
english (au): 7 changes by krysclarke
chinese (traditional): 7 changes by KogentaSan
greek: 7 changes by gh658804
russian: 6 changes by Ln-Wolf
finnish: 6 changes by hpiirai
portuguese: 3 changes by jcteotonio
portuguese (brazilian): 6 changes by pasantoro
polish: 7 changes by pAter-exe
2026-01-19 04:50:49 +00:00
translators f1adfd58ef Update: Translations from eints
swedish: 18 changes by robert-i
2026-01-18 04:48:47 +00:00
Richard Wheeler e1e0583d1b Fix: Change tooltips to match change from checkboxes to switches (#15123) 2026-01-17 18:54:45 +00:00
translators 5cc954321a Update: Translations from eints
catalan: 48 changes by J0anJosep
french: 19 changes by glx22
2026-01-17 04:44:52 +00:00
Cyprian Klimaszewski 2e8d76386b Fix 22f5b61: [CI] File descriptions check failure due to missing git fetch depth. 2026-01-16 18:35:19 +01:00
Rubidium d4f0ff927e Codechange: make aircraft vehicle flags enum-class and EnumBitSet 2026-01-16 07:33:13 +01:00
Rubidium d2757ca5f6 Codefix: partial enum class conversion 2026-01-16 07:33:13 +01:00
Abigail df74656996 Fix #15069: World generation map edges GUI starts in an invalid state (#15082) 2026-01-15 20:11:16 -05:00
Cyprian Klimaszewski 25184a23fc Codechange: Make EconomyType an enum class. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski 322ce224b4 Codechange: Make Price an enum class. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski b556dc24b8 Codechange: Make ScoreID an enum class. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski 810dae240a Add: EnumClassIndexContainer class. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski e1d474d47d Doc: Add docs for members of Price enum. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski 6afdf51aba Doc: Add docs for members of ScoreID enum. 2026-01-14 22:07:02 +01:00
Cyprian Klimaszewski 46fd829267 Doc: Add docs for members of EconomyType enum. 2026-01-14 22:07:02 +01:00
Rito12 22f5b6111f Codechange: Add GitHub workflow that checks descriptions of source files. 2026-01-14 22:05:02 +01:00
Cyprian Klimaszewski aa6309e784 Doc: Add @file annotation to generated strings table. 2026-01-14 22:04:31 +01:00
Cyprian Klimaszewski 54b0fcf6dc Doc: Add @file annotation to generated squirrel files. 2026-01-14 22:04:31 +01:00
Peter Nelson cb4787b92a Fix: [Script] Potential out of bounds array/string slice indexes. 2026-01-14 20:17:11 +00:00
Peter Nelson 6fd761d7f6 Fix: [Script] Potential out of bounds indexed string access. 2026-01-14 20:17:11 +00:00
Peter Nelson 7933b0417d Fix: [Script] Check if array sort function modified array.
Do not allow a script to add or remove elements.
2026-01-14 20:17:11 +00:00
Loïc Guilloux 5e4af50768 Codefix 701cb2e: Incorrect initialisation of treat_first_red_two_way_signal_as_eol (#15109) 2026-01-14 12:28:00 +01:00
translators 86f621b838 Update: Translations from eints
danish: 18 changes by bscargo
polish: 1 change by pAter-exe
maori (new zealand): 18 changes by Kyle-McDangersword
2026-01-14 04:50:04 +00:00
Rubidium 0500198bea Codechange: some documentation for enumerations 2026-01-13 21:54:24 +01:00
Cyprian Klimaszewski e1d90d7b69 Codefix: Remove unnecessary client side checks for setting an unbunch order (#15107) 2026-01-13 20:25:31 +00:00
Owen Rudge 5a906f8a30 Fix: [CI] Use the latest version of GOGGalaxyPipelineBuilder to upload releases to GOG 2026-01-13 11:11:43 +00:00
translators 2d8cb5314c Update: Translations from eints
hungarian: 19 changes by vargaviktor
latvian: 1 change by lexuslatvia
polish: 12 changes by pAter-exe, 3 changes by Rito13
2026-01-13 04:48:58 +00:00
Rubidium 5418a8c6f8 Codechange: document a few enumerations 2026-01-12 06:35:19 +01:00
translators 5f7d11a6c5 Update: Translations from eints
english (au): 9 changes by krysclarke
norwegian (bokmal): 20 changes by eriksorngard
chinese (traditional): 12 changes by KogentaSan
english (us): 9 changes by 2TallTyler
czech: 18 changes by justidan4
greek: 9 changes by gh658804
russian: 9 changes by Ln-Wolf
finnish: 11 changes by hpiirai
portuguese: 9 changes by jcteotonio
portuguese (brazilian): 9 changes by pasantoro
2026-01-12 04:50:57 +00:00
Rubidium c49f1da09e Codefix: incorrect naming of enum class members 2026-01-11 22:57:38 +01:00
Cyprian Klimaszewski e0be9f09f9 Change: Warn about undocumented enum members. 2026-01-11 14:39:44 +01:00
Cyprian Klimaszewski 9e9b51369e Cmake options to customise doxygen warnings. (#15071)
* Add: Cmake otion to hide line numbers in doxygen warnings.
* Add: Cmake options to specify output file for doxygen warnings.

Adds 3 options each one for each docs target, because doxygen deletes
content of the specified file before it begins to write into it.
2026-01-11 09:58:20 +00:00
Peter Nelson dc15cd30e8 Codefix: prevent inefficient reserve behaviour (#15081)
Same as d3420e6e4c but for Town instead of Industry graph.
2026-01-11 09:56:17 +00:00
translators d925595ad1 Update: Translations from eints
polish: 8 changes by pAter-exe
2026-01-11 04:50:26 +00:00
Peter Nelson cc28e19052 Fix #15079: Incorrect dates shown on town cargo history graph. (#15080) 2026-01-11 00:03:56 +00:00
Tyler Trahan 18f2f7eb2d Codechange: Use enum class for setting values (#15074) 2026-01-10 22:40:48 +00:00
SamuXarick 6a06a76b5d Add: Several more regression tests for ScriptList (#14772)
* Add 3ebedec: [Script] Test implicit conversion from bool to integer in lists

* Codefix 333249c: Don't print the inverse of IsEnd in regression

It is more natural to print the value as is.

* Add: [Script] Several more ScriptList regression tests

* Add: [Script] ScriptList regression tests for KeepBelowValue, KeepAboveValue, KeepValue
2026-01-10 18:02:20 +01:00
Tyler Trahan 7ccfd0a658 Feature: Add worldgen setting for average height (#14989) 2026-01-10 16:53:27 +00:00
Cyprian Klimaszewski 666073fc7b Doc: Improve documentation for .mm files. (#15009) 2026-01-10 16:13:46 +00:00
translators 14e0917ae4 Update: Translations from eints
english (au): 9 changes by krysclarke
chinese (traditional): 28 changes by KogentaSan
english (us): 9 changes by 2TallTyler
korean: 8 changes by telk5093
greek: 9 changes by gh658804
russian: 7 changes by Ln-Wolf
finnish: 9 changes by hpiirai
portuguese: 9 changes by jcteotonio
portuguese (brazilian): 7 changes by pasantoro, 2 changes by jcteotonio
2026-01-10 04:46:44 +00:00
Peter Nelson 4131a36e5a Change: Show only selected badge in badge filter dropdown buttons. (#14855)
This avoids complicating languages and translations trying to compose a string from multiple parts.

Also makes these dropdown buttons more consistent with other dropdown buttons.
2026-01-09 23:03:33 +00:00
Peter Nelson 0794287b30 Fix #15067: Mark NewGRF settings as modified after moving by drag & drop. (#15068) 2026-01-09 23:02:54 +00:00
Michael Lutz bd9ced2ec2 Codechange: Support scoped enums as type for settings. (#15065) 2026-01-09 19:55:19 +01:00
translators 241b5fcdfe Update: Translations from eints
danish: 1 change by bscargo
portuguese: 3 changes by jcteotonio
2026-01-09 04:48:28 +00:00
Cyprian Klimaszewski d405e4cb09 Codechange: Use proper widget type and update widgets properly (#14870)
For vehicle window.
2026-01-08 22:31:00 +00:00
Cyprian Klimaszewski 52d6a579e5 Codefix: Use special values of CompanyID instead of CTMN "enum" (#14886) 2026-01-08 22:26:24 +00:00
Cyprian Klimaszewski fadeeb6da1 Fix 0b99a0b: Incorrect error message for aqueducts reaching northern map borders (#14974) 2026-01-08 22:14:58 +00:00
SamuXarick bee3bc0ce5 Fix: [Script] Retarget iterators on list swap (#14805)
Fix script list sorter to correctly retarget iterator when swapping lists.
Each sorter implementation now updates its internal iterator to remain valid after attaching to a new list, avoiding undefined behaviour.
2026-01-08 22:06:57 +00:00
Tyler Trahan 80f19546d2 Change: River springs must be surrounded by hills (#14845) 2026-01-08 20:58:33 +00:00
Tyler Trahan b41e23270d Codefix: Clean up object area placement (#15062) 2026-01-08 20:51:03 +00:00
Tyler Trahan 09a8b1cf5c Feature: Allow placing an area of 1x1 houses (#14708) 2026-01-08 20:43:50 +00:00
Tyler Trahan e97213e7e2 Change: Vehicles loading at stations don't lose reliability (#14841) 2026-01-08 15:34:50 -05:00
Tyler Trahan 9c6100c32a Change: Transmitter object only spawns after original base year (#14786) 2026-01-08 15:21:45 -05:00
Rubidium 55f05846a5 Cleanup: remove unneeded warning disabling macros 2026-01-08 17:52:12 +01:00
Tyler Trahan a6915cd5a3 Fix: Standardize wording of GRF/NewGRF (#15059) 2026-01-08 05:48:23 -05:00
translators 8ba1860eaa Update: Translations from eints
korean: 1 change by telk5093
turkish: 2 changes by jnmbk
2026-01-08 04:48:32 +00:00
Rubidium 463e1131da Cleanup: remove unneeded define 2026-01-07 22:00:42 +01:00
Rubidium 317dc71c6a Codechange: cleanup old defines for unsupported versions of MacOS 2026-01-07 21:34:15 +01:00
Charles Pigott 97a4e1b59e Fix: [Fluidsynth] Don't try to load the default soundfont if it's not set or doesn't exist 2026-01-07 19:18:49 +00:00
Charles Pigott 98799c9b9c Add: [Fluidsynth] Read settings from config files if available 2026-01-07 19:18:49 +00:00
Rubidium f291e3c68e Codechange: reduce required padding of some structs 2026-01-07 18:26:29 +01:00
translators 88a467db19 Update: Translations from eints
swedish: 1 change by robert-i
ukrainian: 14 changes by StepanIvasyn
portuguese: 15 changes by jcteotonio
2026-01-07 04:48:44 +00:00
Peter Nelson 58abbf9e67 Fix #15046: Crash on loading game due to invalid group parents. (#15049)
A bug when deleting groups could leave the group hierarchy in an invalid state.
2026-01-06 18:39:43 +00:00
translators d2b1253583 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 3 changes by KogentaSan
english (us): 1 change by 2TallTyler
vietnamese: 1 change by KhoiCanDev
greek: 1 change by gh658804
hungarian: 5 changes by vargaviktor
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by Rito13
maori (new zealand): 2 changes by Kyle-McDangersword
2026-01-06 04:48:38 +00:00
SamuXarick 9406e8b36c Codefix: Mostly aligment, and missing closing tags in landscape.html
- Enclose "Presence and direction of bridge above" within <li> </li>
- Several missing closing </li> tags
- A few missing closing </td></tr> tags
- Consistent lower case <br> tags
- A big table misalignment by one space in "m5 bits 7..4: Water tile type:" with an incorrect closing </li> tag at the end
2026-01-05 21:38:56 +01:00
Rito12 dc663d7b0a Feature: Allow to build buoys at (0x0). 2026-01-05 21:26:47 +01:00
Miguel Horta 9e7cb99dc2 Codefix: Use active_tab instead of hardcoded value 2026-01-05 21:25:43 +01:00
Jonathan G Rennison fed2149846 Fix: disable_elrails handling with engines that use both RAIL and ELRL (#15045) 2026-01-05 21:23:05 +01:00
J 710c78a0bb Add: Make smallmap clear to water instead of black if infinite water enabled. (#15041) 2026-01-05 19:12:31 +00:00
translators 50e890eeb5 Update: Translations from eints
greek: 1 change by superuser-does
ukrainian: 33 changes by StepanIvasyn
turkish: 3 changes by jnmbk
portuguese: 12 changes by jcteotonio
portuguese (brazilian): 1 change by jcteotonio
maori (new zealand): 30 changes by Kyle-McDangersword
2026-01-05 04:52:02 +00:00
Peter Nelson f0105607dc Fix #15039: Name and version can disappear from content list. (#15040)
If the small font is set larger than the normal font, both name and version text disappeared.

Take account of the height of the small font when setting the resize height.
2026-01-04 17:54:59 +00:00
Rubidium 7935253ee4 Codefix: initialise all fields of FileScanner 2026-01-03 20:44:38 +01:00
sorbat 46a05315b0 Codefix: [CMake] Make lsb_release a fallback option for platform detection (#15012) 2026-01-03 18:51:30 +00:00
Rubidium 13cf05c941 Codechange: remove unused parameter and unneeded heap allocation 2026-01-03 18:34:37 +01:00
Rubidium e9e7e4af51 Codechange: remove need for new (address) PoolItem(...) 2026-01-03 17:33:18 +01:00
Rubidium 2e6f8fe191 Codefix: use constructor to set index of PoolItems over 'magic'/UB 2026-01-03 16:04:32 +01:00
Rubidium ee9e8ab9b2 Codechange: replace 'new (index) PoolItem(...' with 'PoolItem::CreateAtIndex(index, ...' 2026-01-03 16:04:32 +01:00
Rubidium 2fcd4e189a Codechange: replace 'new PoolItem(...' with 'PoolItem::Create(...' 2026-01-03 16:04:32 +01:00
Tyler Trahan bc842811fc Fix #15026: Remove incorrect info from base sounds tooltip (#15029) 2026-01-03 14:11:15 +00:00
Cyprian Klimaszewski e39932c245 Doc: Update landscape_grid.html to match the source (#15022) 2026-01-03 10:34:11 +00:00
Peter Nelson ebbb7cf3e9 Codechange: Pass company ID to SubtractMoneyFromCompany. (#15018)
This avoids needing to backup and restore `_current_company` just for SubtractMoneyFromCompany to use it.
2026-01-03 09:33:37 +00:00
Rubidium 1464d5fd06 Codechange: [Script] Simplify constructors and add constness 2026-01-03 07:51:57 +01:00
Rubidium 091035b533 Codechange: [Script] Move identical code from sub class to super class 2026-01-03 07:51:57 +01:00
Loïc Guilloux 7d32bf24d5 Codefix: some incorrect doxygen comments (#15019) 2026-01-02 21:53:34 +00:00
Loïc Guilloux fdf75775d9 Fix: [Script] Improve reporting of invalid GetAPIVersion return (#15015) 2026-01-02 17:28:15 +01:00
dependabot[bot] 9add77a790 Upgrade: Bump the actions group with 4 updates (#15011)
Bumps the actions group with 4 updates: [actions/cache](https://github.com/actions/cache), [actions/download-artifact](https://github.com/actions/download-artifact), [actions/upload-artifact](https://github.com/actions/upload-artifact) and [Apple-Actions/import-codesign-certs](https://github.com/apple-actions/import-codesign-certs).


Updates `actions/cache` from 4 to 5
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

Updates `actions/download-artifact` from 6 to 7
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

Updates `actions/upload-artifact` from 5 to 6
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

Updates `Apple-Actions/import-codesign-certs` from 5 to 6
- [Release notes](https://github.com/apple-actions/import-codesign-certs/releases)
- [Commits](https://github.com/apple-actions/import-codesign-certs/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: Apple-Actions/import-codesign-certs
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 01:01:14 +01:00
Peter Nelson 27c5f9a5cd Fix #14982: Can't place buoys under bridges. (#15007)
Bridges can be built over buoys but not the other way around.
2026-01-01 16:31:08 +00:00
Rito12 f57c2cc56e Fix: Company query popups do not update in multiplayer. 2026-01-01 16:53:26 +01:00
Jonathan G Rennison 0ec507d4c5 Fix b4ac5e22: Incorrect TileIndex used in TownCanBePlacedHere (#15002) 2026-01-01 13:31:37 +00:00
Charles Pigott 1bac36a8c3 Fix: Small ufos would loop over vehicles in depots forever (#15008)
* Codechange: Rename variables to be more meaningful

* Fix: Small ufos would loop over vehicles in depots forever
2026-01-01 13:24:36 +00:00
Cyprian Klimaszewski 29a26b7f93 Codefix: Earlier return from window functions which use window number (#14960) 2025-12-31 22:33:38 +00:00
Charles Pigott 3a41738d9f Fix #15004: Crash when dropdown is open when end game screen appears (#15006) 2025-12-31 22:24:31 +00:00
translators 2a6798cc43 Update: Translations from eints
ukrainian: 12 changes by StepanIvasyn
2025-12-31 04:45:32 +00:00
translators 0d9844a815 Update: Translations from eints
ukrainian: 17 changes by StepanIvasyn
portuguese: 1 change by jcteotonio
2025-12-30 04:45:28 +00:00
translators e5f58ab7c9 Update: Translations from eints
vietnamese: 2 changes by myquartz
greek: 2 changes by superuser-does
ukrainian: 7 changes by StepanIvasyn
portuguese: 10 changes by jcteotonio
2025-12-29 04:47:12 +00:00
translators a0f80e1935 Update: Translations from eints
welsh: 67 changes by Ansbaradigeidfran
czech: 47 changes by LubosKolouch
greek: 9 changes by superuser-does
serbian: 47 changes by nkrs
ukrainian: 16 changes by StepanIvasyn
2025-12-28 04:46:56 +00:00
Peter Nelson 4776837675 Change: Allow rocks on desert tiles. (#14979) 2025-12-27 20:08:00 +00:00
Nusio_coding dd2cf93164 Fix #14610: Do not treat aircraft with only depot orders as having valid orders (#14961) 2025-12-27 14:00:57 -05:00
Tyler Trahan 851310108f Fix #14992, 046b0c6: Respect non-stop order setting when adding waypoint orders (#14993) 2025-12-27 13:59:46 -05:00
Tyler Trahan eaa066990e Fix: Use correct 'minutes per year' setting for old savegames (#14995) 2025-12-27 13:59:28 -05:00
Loïc Guilloux 42cffe0e16 Fix: potential division by 0 when drawing a line (#14994) 2025-12-27 14:50:32 +00:00
translators a900f5656c Update: Translations from eints
swedish: 2 changes by robert-i
vietnamese: 9 changes by KhoiCanDev
greek: 226 changes by superuser-does
catalan: 9 changes by J0anJosep
esperanto: 1 change by legoscia
2025-12-27 04:42:54 +00:00
Peter Nelson 5c96a2c19a Codechange: Improve performance of perlin noise function. (#14991)
Avoid pow() and reduce computations.
2025-12-26 22:01:23 +00:00
Peter Nelson b2fd405e55 Fix: Update language files for changes to English strings. 2025-12-26 16:15:25 +00:00
Peter Nelson dc115cc785 Fix f34c45c36d: Incorrect colour in cargo list in fund industry window. 2025-12-26 16:15:25 +00:00
Peter Nelson fb15730fc7 Fix 8a8ebabb9d: Don't draw bridge deck rail sprites for default bridges. (#14985)
Bridge deck sprites for default rail/road types should only be drawn for custom bridges.
2025-12-26 15:33:09 +00:00
Jonathan G Rennison 8f598b442a Fix b956af63: Incorrect TileIndex used in FindNearestGoodCoastalTownSpot (#14988) 2025-12-26 14:06:21 +00:00
Jonathan G Rennison 5683ddb99a Fix #12465: Click/tooltip alignment of industry chain cargo lines (#14963) 2025-12-26 10:20:15 +00:00
translators 02449652e4 Update: Translations from eints
czech: 37 changes by LubosKolouch
hebrew: 34 changes by maximunited
maori (new zealand): 10 changes by Kyle-McDangersword
2025-12-26 04:43:28 +00:00
Peter Nelson d80ed069b5 Fix 2d7d085e8e: "(Invalid parameter)" in error message when trying to remove another player's object. (#14981)
Formatted error string was thrown away.
2025-12-25 17:21:43 +00:00
Peter Nelson a6d66343ac Fix #14978: Don't clear water tiles after removing buoys. (#14980)
Buoys have no owner and can be cleared by anyone, but the underlying tile (e.g. canal) should not be cleared if has a different owner.
2025-12-25 14:30:39 +00:00
Peter Nelson fb79508968 Fix: Update language files for changes to English strings. 2025-12-25 09:33:49 +00:00
Peter Nelson 2406d22830 Fix f34c45c36d: Incorrect string colour in industry directory. 2025-12-25 09:33:49 +00:00
Peter Nelson 8a4d60b812 Fix #14973: Incorrect colour for some composed strings. 2025-12-25 09:33:49 +00:00
Peter Nelson c7f6971729 Fix c213218b66: Don't highlight selected dropdown item if it has a click result.
This is used by toggles and buttons within the dropdown item, and using those should not cause the row to look selected.
2025-12-25 05:57:44 +00:00
Peter Nelson 48bc08dbfb Fix 39f30692fe: Badge filter toggles no longer worked. 2025-12-25 05:57:44 +00:00
Tyler Trahan c2532fac3e Fix #14938: Don't allow cacti to die off (#14956) 2025-12-24 12:34:46 -05:00
Loïc Guilloux 0019f3831e Codechange: [Script] Reuse memory when changing values of ScriptList items (#14966) 2025-12-24 17:26:46 +00:00
Rubidium 900192e2cd Codefix: add missing tracing debug messages for Coordinator/Stun/Turn 2025-12-24 16:18:14 +01:00
Cyprian Klimaszewski cb06ca69e8 Fix cb1c240: Client list is not invalidated after company take over. (#14955) 2025-12-24 13:01:15 +00:00
Jonathan G Rennison 9ac7623608 Fix #14951: Init and save/load TimerGameEconomy::days_since_last_month (#14962) 2025-12-24 13:00:09 +00:00
translators 2515fc802d Update: Translations from eints
swedish: 7 changes by robert-i
czech: 58 changes by LubosKolouch
greek: 38 changes by superuser-does
spanish: 20 changes by MontyMontana
2025-12-24 04:44:25 +00:00
Peter Nelson 98b0197d53 Change: [Script] Include Array contents in script memory allocation total 2025-12-23 20:52:24 +00:00
Peter Nelson e8424c0ae2 Change: [Script] Include PriorityQueue contents in script memory allocation total 2025-12-23 20:52:24 +00:00
Peter Nelson 13ec1816dc Change: [Script] Include ScriptList contents in script memory allocation total 2025-12-23 20:52:24 +00:00
Peter Nelson d7942c3fd0 Codechange: [Script] Add allocator that uses script memory allocation accounting 2025-12-23 20:52:24 +00:00
Jonathan G Rennison 33c967a558 Codechange: [Script] Add helpers for script memory allocation accounting 2025-12-23 20:52:24 +00:00
Rito12 ed687c6e10 Codechange: Make doxygen warn about lack of documentation for function parameters. 2025-12-23 21:47:35 +01:00
Max c918a29e49 Fix #12937: Allow the computer to go to sleep while the game is paused 2025-12-23 21:47:25 +01:00
translators 07353973a1 Update: Translations from eints
korean: 7 changes by telk5093
greek: 60 changes by superuser-does
russian: 3 changes by Ln-Wolf
danish: 9 changes by bscargo
2025-12-23 04:45:20 +00:00
Loïc Guilloux b36c78b2de Fix #14958, e96f35c: Don't use not yet initialised member (#14959) 2025-12-22 18:21:10 +00:00
Loïc Guilloux b881d8ef5c Fix 9a47f53: Incorrect filter for ScriptList::KeepBetweenValue (#14957) 2025-12-22 14:09:50 +00:00
translators bf2ff83c67 Update: Translations from eints
english (au): 9 changes by krysclarke
norwegian (bokmal): 9 changes by eriksorngard
chinese (traditional): 9 changes by KogentaSan
english (us): 7 changes by 2TallTyler
serbian: 43 changes by nkrs
german: 12 changes by Wuzzy2
irish: 33 changes by temuchie
turkish: 59 changes by jnmbk
portuguese (brazilian): 6 changes by pasantoro
2025-12-22 04:45:58 +00:00
glx22 dbecf010eb Fix #14949, 0717746: Add the new callbacks to the callback table 2025-12-21 16:24:24 +01:00
glx22 95b913bbb7 Codechange: Check command callbacks registration even in single player 2025-12-21 16:24:24 +01:00
Peter Nelson 0a88c084ad Codechange: Don't read font os_handle on MacOS. (#14936)
os_handle is never set, so there's no need to read it.
2025-12-21 15:08:55 +00:00
Peter Nelson c6679bbcab Fix #14945: Hang when deleting implicit orders during vehicle loading. (#14946) 2025-12-21 15:08:13 +00:00
translators 75f1c36eff Update: Translations from eints
english (us): 2 changes by 2TallTyler
chinese (simplified): 9 changes by WenSimEHRP
korean: 2 changes by telk5093
greek: 9 changes by gh658804
russian: 6 changes by Ln-Wolf
finnish: 9 changes by hpiirai
french: 26 changes by glx22
portuguese: 24 changes by jcteotonio
portuguese (brazilian): 3 changes by pasantoro
polish: 9 changes by Rito13
2025-12-21 04:43:57 +00:00
glx22 ec5e7ed5e0 Change: [Script] ScripTiletList::[Add|Remove]Rectangle are now suspendable 2025-12-21 00:37:01 +01:00
glx22 36ccc5e005 Change: [Script] ScriptList::AddList is now suspendable 2025-12-21 00:37:01 +01:00
glx22 d15dd3a036 Change: [Script] ScriptList::[Remove|Keep][Top|Bottom] are now suspendable 2025-12-21 00:37:01 +01:00
glx22 ee789a1197 Change: [Script] ScriptList::[Remove|Keep][XXXValue|List] are now suspendable 2025-12-21 00:37:01 +01:00
Loïc Guilloux fd7f6fcf91 Codechange: [Script] Specify underlying type for ScriptList::SorterType (#14942) 2025-12-20 17:01:39 +01:00
Rubidium 67d9daed47 Codechange: [Script] Make member functions that do not change state const 2025-12-20 16:36:35 +01:00
Peter Nelson f34c45c36d Change: Automatically push/pop colours when formatting a sub-string. (#14006)
Reverts 226a44bf86.

This universally prevents the sub-string from changing colours in the outer string.
2025-12-19 20:17:58 +00:00
Peter Nelson f1e831233a Codefix: Mark destructors override. (#14925)
Remove some empty destructors.
2025-12-19 18:14:29 +00:00
Peter Nelson 39f30692fe Fix #14932: Increase internal badge index size to avoid overflowing BadgeIDs. (#14933) 2025-12-19 18:13:59 +00:00
translators 598d8fd65c Update: Translations from eints
chinese (traditional): 16 changes by KogentaSan
portuguese: 3 changes by jcteotonio
2025-12-19 04:43:16 +00:00
Loïc Guilloux ca1c0007b6 Codechange: [Script] Replace map of sets with set of pairs for per value storage (#14930) 2025-12-18 22:34:47 +01:00
translators 53178d0549 Update: Translations from eints
vietnamese: 41 changes by KhoiCanDev
ukrainian: 3 changes by StepanIvasyn
spanish: 135 changes by MontyMontana
maori (new zealand): 27 changes by Kyle-McDangersword
2025-12-18 04:43:22 +00:00
Loïc Guilloux 5d702a96d6 Codefix 2b24444: Don't run regression tests in parallel (#14935) 2025-12-17 19:19:29 +01:00
Loïc Guilloux 9a47f53db0 Codechange: [Script] Reduce code duplication in ScriptList filtering (#14931) 2025-12-17 15:35:53 +01:00
mmtunligit 938c3de640 Fix a41738e: Picker item recolour depends on gamemode (#14929) 2025-12-17 08:44:04 +00:00
translators 9ad161b7e9 Update: Translations from eints
czech: 4 changes by LubosKolouch
korean: 3 changes by telk5093
ukrainian: 16 changes by StepanIvasyn
portuguese: 1 change by jcteotonio
2025-12-17 04:42:55 +00:00
translators 483f1f0afa Update: Translations from eints
czech: 3 changes by jacobczsk
hungarian: 2 changes by baliball
french: 10 changes by ben20471
portuguese: 2 changes by jcteotonio
2025-12-16 04:44:42 +00:00
Peter Nelson ebdc82ad54 Fix #14921: Crash during station autorefit if station doesn't accept current cargo type. (#14924)
Add convenience helpers to correctly retrieve goods entry cargo available/totals.

Avoids having to check if cargo data is available before accessing it, which was missing for autorefit.
2025-12-15 18:06:43 +00:00
Peter Nelson b1c0198d3f Fix #14917: Crash when opening house picker with no houses available. (#14920) 2025-12-15 16:42:50 +00:00
Peter Nelson 447959b214 Fix #14916: Duration of error message window could be too short. (#14919)
The timer for automatically closing the error message was started when creating the window, instead of when first displaying the window.
2025-12-15 16:42:36 +00:00
Peter Nelson f6eba87e47 Fix #14915: Crash due to divide-by-zero of industry probabilities. (#14918) 2025-12-15 16:42:10 +00:00
Rito12 859b56a066 Doc: Correct file descriptions to match coding style and doxygen. 2025-12-15 17:31:00 +01:00
translators e1333abc3e Update: Translations from eints
chinese (traditional): 30 changes by KogentaSan
czech: 121 changes by jacobczsk
luxembourgish: 6 changes by phreeze83
russian: 11 changes by Ln-Wolf
turkish: 145 changes by jnmbk
dutch: 48 changes by Afoklala
portuguese: 21 changes by jcteotonio
2025-12-15 04:45:58 +00:00
Rubidium 4e69ef938b Codefix: missing GPL headers 2025-12-14 20:26:22 +01:00
Peter Nelson 3351975133 Codefix: Avoid shadowing month/year BaseGraphWindow member variables. (#14912) 2025-12-14 19:08:45 +00:00
Loïc Guilloux 7b69a0b7fa Fix ff08a22: script configs were cleared by AIPL and GSDT chunks from intro game (#14910) 2025-12-14 16:07:19 +00:00
Rubidium 5e2df6d028 Codefix: move error instead of copying it 2025-12-14 08:48:28 +01:00
Rubidium 36589abb33 Codefix: always initialise field 2025-12-14 08:48:28 +01:00
Rubidium ed318b0154 Codefix: unused assignment 2025-12-14 08:48:28 +01:00
Rubidium d3420e6e4c Codefix: prevent inefficient reserve behaviour
When reserving by size() + 2, in a loop you're not really helping.
2025-12-14 08:48:28 +01:00
Rubidium a3393af26c Codefix: possible null pointer dereference 2025-12-14 08:48:16 +01:00
translators 0ec8842232 Update: Translations from eints
swedish: 2 changes by joeax910
norwegian (bokmal): 2 changes by eriksorngard
catalan: 6 changes by J0anJosep
danish: 2 changes by bscargo
portuguese: 89 changes by jcteotonio
2025-12-14 04:44:00 +00:00
translators 6851cb53e8 Update: Translations from eints 2025-12-13 11:10:41 +00:00
Rubidium 13ea783bd8 Fix #14677: desync due to using newgame time settings to validate savegame time settings 2025-12-13 11:54:02 +01:00
Peter Nelson b03347f00c Revert: "Change: Support side-by-side fallback FontCaches instead of hierarchical. (#13303)"
This reverts commit 1829f7926d.
2025-12-13 09:09:21 +00:00
Peter Nelson 973514adc3 Revert: "Add: Automatically load fonts for missing glyphs. (#14856)"
This reverts commit c1d37d8699.
2025-12-13 09:09:21 +00:00
Peter Nelson 0778687ed5 Revert: "Fix #14892, 1829f7926d: Potential crash when logging fonts for survey. (#14896)"
This reverts commit 542dd1a597.
2025-12-13 09:09:21 +00:00
translators 1091fa6071 Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 2 changes by KogentaSan
english (us): 2 changes by 2TallTyler
chinese (simplified): 8 changes by WenSimEHRP
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 6 changes by hpiirai
portuguese: 28 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-12-13 04:40:52 +00:00
Peter Nelson 688958da8a Fix: Graph label allocated size could be too small. (#14901)
Set initial size based on what could be displayed, instead of what is displayed right now.
2025-12-12 09:24:16 +00:00
translators 8a5c052933 Update: Translations from eints
norwegian (bokmal): 6 changes by eriksorngard
hungarian: 1 change by vargaviktor
hebrew: 48 changes by yair-bn
portuguese: 2 changes by jcteotonio
polish: 7 changes by Rito13, 4 changes by pAter-exe
2025-12-12 04:44:29 +00:00
glx22 392f743bcd Change: [Script] ScriptList::Valuate is now suspendable 2025-12-11 23:30:27 +01:00
glx22 81b4075095 Add: [Script] Framework to make selected native calls suspendable 2025-12-11 23:30:27 +01:00
Peter Nelson ef4687895e Add: Setting to control minimum distance between towns. (#14893)
Backported from JGRPP.
2025-12-11 11:28:04 +00:00
translators a2304154d4 Update: Translations from eints
english (au): 4 changes by krysclarke
swedish: 6 changes by joeax910
chinese (traditional): 1 change by KogentaSan
english (us): 1 change by 2TallTyler
greek: 1 change by gh658804
russian: 2 changes by Ln-Wolf
finnish: 1 change by hpiirai
turkish: 30 changes by jnmbk
danish: 38 changes by bscargo
portuguese: 10 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
polish: 1 change by pAter-exe
2025-12-11 04:44:09 +00:00
Loïc Guilloux f32646743a Codechange: [CI] setup-vcpkg action is now in OpenTTD/actions (#14897) 2025-12-10 21:13:44 +01:00
Peter Nelson 542dd1a597 Fix #14892, 1829f7926d: Potential crash when logging fonts for survey. (#14896)
Check for empty fontcache slots before outputting font info in survey.
2025-12-10 17:56:43 +00:00
Kuhnovic 19b65cd3e7 Codechange: Added DIAGDIRECTIONS_ALL. (#14895) 2025-12-10 14:14:13 +01:00
Peter Nelson 1e6153e875 Fix #14891, a8650c6b06: Minimum sprite zoomlevel could break in some cases. (#14894)
Caused by sprite control flags not being reset when scanning available sprites.
2025-12-10 08:17:24 +00:00
translators fef0d830b2 Update: Translations from eints
swedish: 5 changes by robert-i
chinese (traditional): 7 changes by KogentaSan
english (us): 3 changes by 2TallTyler
korean: 5 changes by telk5093
greek: 3 changes by gh658804
hungarian: 5 changes by vargaviktor
russian: 3 changes by Ln-Wolf
finnish: 3 changes by hpiirai
turkish: 147 changes by jnmbk
portuguese: 28 changes by jcteotonio
portuguese (brazilian): 6 changes by jcteotonio
polish: 10 changes by Rito13
2025-12-09 04:41:41 +00:00
Peter Nelson 9695de9e1c Fix #14889: [FluidSynth] Don't try to load a soundfont that doesn't exist. 2025-12-08 23:30:06 +00:00
Peter Nelson 2162983054 Codechange: Auto-reformat fluidsynth.cpp. 2025-12-08 23:30:06 +00:00
Kuhnovic 8e35553208 Feature: Configurable sign text colors in scenario editor. (#14743) 2025-12-08 17:52:19 +01:00
Peter Nelson 0d59ecf7de Codefix 6f52a977a8: GRFConfigFlag was given enum class naming without being enum class. (#14884) 2025-12-08 08:59:02 +00:00
translators 2c8a15cf36 Update: Translations from eints
english (au): 2 changes by krysclarke
english (us): 2 changes by 2TallTyler
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
catalan: 18 changes by J0anJosep
portuguese: 10 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-12-08 04:44:16 +00:00
Loïc Guilloux 40be27503d Fix: [CI] Install NSIS for windows releases (#14885) 2025-12-07 23:50:14 +00:00
Michael Lutz 170c29b376 Codechange: We are heading to 16 (#14882) 2025-12-07 23:16:08 +01:00
Peter Nelson 9ea4d6b2df Doc: Update 15.0-rc1 changelog with last PR. (#14880) 2025-12-07 20:42:40 +00:00
Tyler Trahan 7f196c6652 Feature: House placer mode to replace existing houses (#14469) 2025-12-07 12:05:47 -05:00
Charles Pigott 0bf3de7658 Fix #14863: [Script] Improve documentation for GetAPIVersion (#14877) 2025-12-07 16:55:41 +00:00
Charles Pigott 0ef15fa991 Update: Improve wording of 15.0-RC1 changelog entries (#14876) 2025-12-07 16:55:28 +00:00
Rubidium ced54c3008 Update: Changelog for 15.0-RC1 2025-12-07 14:22:25 +01:00
Cyprian Klimaszewski bbf582ff3a Fix 92e895a: don't force proceed crashed trains 2025-12-07 13:19:50 +00:00
frosch 4339bf3dc7 Codechange: Use attribute syntax for debug_inline, so clang-format understands it. 2025-12-07 13:10:40 +00:00
Peter Nelson 2fc877c2ec Fix #14871, 80e58e751a: Possible crash when building NewGRF station under bridge. (#14872)
Triggered by reading random tile data before the tile is actually created.
2025-12-07 11:59:20 +00:00
Cyprian Klimaszewski 99f04f27de Doc: Update information for receiving a copy of GPL. (#14869) 2025-12-07 11:25:08 +00:00
Peter Nelson 4b7a3241bf Codechange: Remove unnecessary 'core' includes. (#14867) 2025-12-07 08:36:58 +00:00
translators 9e52df87ad Update: Translations from eints
chinese (traditional): 22 changes by KogentaSan
2025-12-07 04:43:11 +00:00
Richard Wheeler bc6a656deb Change: Package OpenGFX2 for Windows Store and GOG 2025-12-06 21:44:02 +00:00
Rubidium 55157f6df2 Doc: update contact information for Free Software Foundation 2025-12-06 19:47:10 +01:00
Peter Nelson 9adc4bfc0f Codechange: Make order load/unload flags value types. (#14861)
Order Load and Unload flags have complex logic to ensure that invalid combinations aren't used. In fact, apart from FullLoad and FullLoadAny, all mixed combinations are invalid.

Simplify logic by removing the use of bit values and treat each option as a value.
2025-12-06 18:30:31 +00:00
Cyprian Klimaszewski abf8438a1b Fix #14756: Invalidate nested focus before widget container is cleared. (#14809) 2025-12-06 12:52:44 -05:00
Cyprian Klimaszewski 92e895a37a Fix #14723: Set force proceed to TFP_SIGNAL if next tile has signals. (#14724) 2025-12-06 18:12:03 +01:00
Peter Nelson 046b0c6267 Codechange: Use enum class and EnumBitSet for various order flags. (#14783) 2025-12-06 12:29:11 +00:00
Peter Nelson c1d37d8699 Add: Automatically load fonts for missing glyphs. (#14856) 2025-12-06 12:22:25 +00:00
Rubidium 064f4df6cc Fix: always try to create at least one town 2025-12-06 12:55:47 +01:00
Rubidium 6e65b2387a Fix #14802: close NewGRF inspection window when overbuilding with default station/waypoint 2025-12-06 12:08:03 +01:00
Rubidium 1445aa9543 Codefix: some coding style improvements 2025-12-06 12:07:53 +01:00
Peter Nelson 1829f7926d Change: Support side-by-side fallback FontCaches instead of hierarchical. (#13303)
The text layouter system can now support using different fonts for different glyphs, including mixing scalable and sprite glyphs.
2025-12-06 10:47:12 +00:00
Rubidium 2c91607671 Fix #14839, e4cf6ca0ba: do not set stacked widget height, which might not be shown 2025-12-06 10:28:52 +01:00
Peter Nelson 22569515df Fix: Drop down scrolling broken for mixed-height items. (#14840) 2025-12-06 09:15:55 +00:00
translators 06d3ae7381 Update: Translations from eints
chinese (simplified): 22 changes by WenSimEHRP
2025-12-06 04:38:49 +00:00
translators ad63087928 Update: Translations from eints
portuguese: 2 changes by jcteotonio
2025-12-05 04:43:02 +00:00
Tyler Trahan bca8913d1d Change: Eliminate small seas instead of ending rivers there (#14797) 2025-12-04 10:55:13 -05:00
Peter Nelson bd338d6e42 Fix 25f1c97bea: Incorrect background colour in badge configuration list. (#14850)
Provide correct widget colour instead of assuming COLOUR_GREY.
2025-12-03 14:38:20 +00:00
Peter Nelson 7e046f112b Fix #14844: Use company colour remap for badges in picker window. (#14849)
(Except for houses, which are not company-owned.)
2025-12-03 14:38:03 +00:00
Jonathan G Rennison 73b260ce05 Codefix: Leading newlines in Squirrel error/callstack prints (#14851) 2025-12-03 08:19:49 +00:00
translators 43a82c2e27 Update: Translations from eints
portuguese: 8 changes by jcteotonio
2025-12-03 04:42:04 +00:00
dependabot[bot] c24526a2e1 Upgrade: Bump the actions group across 1 directory with 5 updates (#14731)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 14:49:36 +00:00
Tyler Trahan 595b696d61 Change: Avoid building farm fields in wetlands (#14846) 2025-12-02 14:28:12 +00:00
Tyler Trahan faf3bb9739 Fix #9071: Don't consider tram tracks when growing towns (#14833) 2025-12-01 11:44:28 -05:00
mmtunligit e96f35cda9 Codechange: Use SetDisplayedPlane instead of UpdateWidgetSize to hide various buttons (#14831) 2025-12-01 11:43:48 -05:00
translators 66185a312d Update: Translations from eints
luxembourgish: 23 changes by phreeze83
2025-12-01 04:48:24 +00:00
Peter Nelson 0600fbe34b Change: Explicitly reserve sprite group types >= 0x80. (#14836)
The NewGRF spec does not mention that sprite group `type` and the `num-ent1` fields are the same.

Reserve all unrecognised special types in case they are wanted at some point.
2025-11-30 09:12:29 +00:00
translators 84d89cc802 Update: Translations from eints
norwegian (bokmal): 17 changes by eriksorngard
portuguese: 17 changes by jcteotonio
2025-11-30 04:44:11 +00:00
Jonathan G Rennison 712ca5e3ec Codechange: [Script] Use std::optional for script list next iteration item (#14753)
Avoids false positive updates in Remove when iterating the final item
and leftover values being returned when IsEnd is true
2025-11-29 17:36:41 +00:00
Peter Nelson 069833963c Codechange: Replace drop down list's default bools with DropDownOptions. (#14837)
Improves maintainability and avoids positional ambiguity.
2025-11-29 16:17:44 +00:00
Peter Nelson 2675295675 Fix #8062: (Try to) ensure enough room for profit in vehicle group window.
Width of group info panel previously relied entirely on the size of other widgets.
2025-11-29 16:17:23 +00:00
Peter Nelson 91a12a3928 Codechange: Precalculate group column rects.
Simplifies drawing group list which no longer needs to calculate horizontal positions for each row.
2025-11-29 16:17:23 +00:00
Peter Nelson e15539c430 Codechange: Extract functions to get group name and profit sprite.
Improves readability and allows long if-else conditions to be replaced with early returns.
2025-11-29 16:17:23 +00:00
translators 1810354622 Update: Translations from eints
galician: 17 changes by pvillaverde
german: 47 changes by Wuzzy2
2025-11-29 04:39:53 +00:00
translators ff578faf95 Update: Translations from eints
korean: 17 changes by telk5093
hungarian: 18 changes by vargaviktor
portuguese: 9 changes by jcteotonio
2025-11-28 04:40:44 +00:00
Peter Nelson b9deabab7e Codefix: Add missing consts in group handling. (#14834) 2025-11-27 20:56:02 +00:00
translators fa0fd235c2 Update: Translations from eints
english (au): 9 changes by krysclarke
swedish: 17 changes by robert-i
english (us): 17 changes by 2TallTyler
greek: 9 changes by gh658804
russian: 9 changes by Ln-Wolf
finnish: 9 changes by hpiirai
portuguese (brazilian): 9 changes by pasantoro
polish: 9 changes by pAter-exe
2025-11-27 04:39:51 +00:00
Tyler Trahan 3e73a130d8 Fix 509cbed: Don't give up erroneously when building lakes (#14832) 2025-11-26 21:34:05 +00:00
TheDude-gh 75aee10e1e Add: [Script] ScriptTile::IsHouseTile 2025-11-26 20:44:50 +01:00
translators 67ded4f980 Update: Translations from eints
english (au): 8 changes by krysclarke
greek: 8 changes by gh658804
russian: 8 changes by Ln-Wolf
finnish: 8 changes by hpiirai
portuguese: 8 changes by jcteotonio
portuguese (brazilian): 8 changes by pasantoro
polish: 10 changes by pAter-exe
2025-11-26 04:41:30 +00:00
Peter Nelson f1937222d3 Change: Make picker label/text colours consistent. (#14829)
Use {GOLD} instead of {ORANGE} in house picker window, to match other picker windows.
2025-11-25 21:23:19 +00:00
mmtunligit c3f9cdf84f Codechange 7a0814c: Use SetDisplayedPlane instead of UpdateWidgetSize (#14823) 2025-11-25 06:05:24 -05:00
mmtunligit 3b541d4c74 Codefix: Add comments to SetViewport functions (#14822) 2025-11-25 06:04:16 -05:00
Tyler Trahan b4ac5e2231 Change: Ensure generated towns have enough room (#14803) 2025-11-25 05:39:17 -05:00
translators 5bd28fa692 Update: Translations from eints
portuguese: 4 changes by jcteotonio
2025-11-25 04:41:35 +00:00
Cyprian Klimaszewski 26a84fad55 Fix 98700eee43, Fix #14815: Properly handle picker window invalidation. (#14816) 2025-11-24 23:28:41 +01:00
Peter Nelson 3555f26ae6 Add: [NewGRF] Allow badges to be excluded from badge name list. (#14818)
This allows badges to have names that can be filtered, but avoid cluttering the purchase text.
2025-11-24 22:19:25 +00:00
Rubidium 5533a24d84 Codechange: silence CodeQL complaints about long switches 2025-11-24 23:17:44 +01:00
Rubidium 316f36fe14 Codefix: comparison of narrow type with wide type in loop condition 2025-11-24 23:02:00 +01:00
mmtunligit 07177467b3 Feature: Signs, waypoint and station names may be moved (#14744) 2025-11-24 14:56:19 -05:00
Richard Wheeler f128d0de1d Fix: Bridge deck sprites were not toyland aware (#14821) 2025-11-24 19:43:12 +00:00
Jonathan G Rennison 84eb3fb0e0 Fix #14800: Incorrect register processing in GetCustomStationRelocation (#14801)
ProcessRegisters must be called even if the sprite resolve result
is not valid.
A zero-length ResultSpriteGroup is valid because the output value
is an offset, not a sprite ID within the ResultSpriteGroup.
2025-11-24 06:22:58 -05:00
translators 74cb4dcefc Update: Translations from eints
portuguese: 11 changes by jcteotonio
2025-11-24 04:43:59 +00:00
Peter Nelson c9b73247e0 Codefix: Remove this-> from static call to CleaningPool. (#14817)
Don't call unnecessarily.
2025-11-23 21:37:43 +00:00
translators 7ffd3b2c48 Update: Translations from eints
catalan: 4 changes by J0anJosep
portuguese: 6 changes by jcteotonio
2025-11-23 04:43:07 +00:00
Peter Nelson e8dbd3aad2 Change: Add debug messages for errors encountered reading sounds. (#14810) 2025-11-22 12:31:08 +00:00
Peter Nelson f3b24d51c3 Fix ed67aedabf: Saved default houses had incorrect class and index information. (#14812)
Saved default houses would not appear properly in the 'Saved' tab after restarting the game.
2025-11-22 12:15:14 +00:00
Peter Nelson 821a496495 Codefix 0455627d16: Don't make temporary copies of order when converting old orders. (#14808) 2025-11-21 17:26:12 +00:00
Peter Nelson 9237685f4c Fix #14794: Default railtype missing for some NewGRF rail vehicles. (#14795) 2025-11-20 22:12:10 +00:00
Peter Nelson 98275ee5d3 Codechange: Use enum class for water-related enums. (#14804) 2025-11-19 20:35:11 +00:00
davidxn 4e24c205d6 Fix 741c431: Miscalculated cargo penalty for poor station rating (#14712) 2025-11-18 20:18:02 +00:00
kos 98700eee43 Fix #14755: Remove clicked type selection when not visible 2025-11-18 20:26:45 +01:00
Rubidium 62e568ce65 Codefix: shadowing variable, grouping loop increments 2025-11-18 20:22:31 +01:00
Jonathan G Rennison f0f964577d Fix 98481ecc: Incorrect parsing of var 6x parameter in NewGRF debug window 2025-11-18 20:21:03 +01:00
Jonathan G Rennison a321509d90 Fix 2b244441: [CMake] Regression tests failed if no previous crashes present
On CMake 3.x
2025-11-18 20:20:47 +01:00
Tyler Trahan 509cbedf0b Feature: Rivers can end in wetlands if unable to reach sea (#14784) 2025-11-18 07:38:55 -05:00
translators a8b000f982 Update: Translations from eints
swedish: 4 changes by joeax910
portuguese: 1 change by jcteotonio
2025-11-18 04:39:55 +00:00
Peter Nelson c3451b5d97 Codechange: Replace color with colour. 2025-11-18 00:02:48 +00:00
Peter Nelson 73660bfaf2 Codechange: Replace favorite with favourite. 2025-11-18 00:02:48 +00:00
Peter Nelson 30955da3ce Codechange: Use enum class for Roadside. 2025-11-17 20:46:05 +00:00
Peter Nelson 2cd5a241c5 Codechange: Use enum class for RoadTileType. 2025-11-17 20:46:05 +00:00
Peter Nelson 2851c70a59 Codechange: Use enum class for RailGroundType. 2025-11-17 20:46:05 +00:00
Peter Nelson 0f5a4290df Codechange: Use enum class for RailTileType 2025-11-17 20:46:05 +00:00
Peter Nelson e8ba7d0a08 Codefix f98b90ac2e: Use to_underlying instead of direct static_cast. (#14790) 2025-11-17 18:12:27 +00:00
Tyler Trahan e8d49ebfe6 Fix: Two lighthouse spawn issues (#14785)
* Fix: Lighthouses need sea to generate, not rivers

* Fix: Don't spawn lighthouses close together
2025-11-17 12:55:23 +00:00
translators 7398d2e290 Update: Translations from eints
portuguese: 17 changes by jcteotonio
portuguese (brazilian): 1 change by jcteotonio
maori (new zealand): 21 changes by Kyle-McDangersword
2025-11-17 04:41:35 +00:00
translators 21329071df Update: Translations from eints
portuguese: 21 changes by jcteotonio
2025-11-16 04:40:12 +00:00
SamuXarick 06d2f44891 Codechange: HighScore sorting to use std::vector (#14779)
Replaces the fixed-size array for company sorting with a std::vector and updates sorting to use std::ranges::sort. This removes the need for manual count management.
2025-11-15 16:40:36 -05:00
Muxy Du Goulp 05c40a6e55 Fix #14777: authorized_key: Correctly target key type for add/remove
The logic in ConNetworkAuthorizedKey for the `authorized_key` command was inverted.
The check `if (StrEqualsIgnoreCase(type, name)) continue;` caused the action (add/remove) to be incorrectly executed on the first key type encountered that *did not* match the requested type, rather than the intended one. This resulted in keys specified for 'admin' being added to 'rcon', for example.

This commit inverts the condition to ensure the action is performed only when the requested type matches the iterated key name.
2025-11-15 22:08:58 +01:00
Peter Nelson d61a21cc0b Codechange: Use enum class for command-related enums. (#14775) 2025-11-15 19:33:09 +00:00
Loïc Guilloux 2b24444146 Codechange: Detect crashes during regression (#14774) 2025-11-15 08:19:33 +00:00
translators 459d213f74 Update: Translations from eints
polish: 4 changes by pAter-exe
2025-11-15 04:38:42 +00:00
translators 2693e63247 Update: Translations from eints
norwegian (bokmal): 4 changes by eriksorngard
2025-11-14 04:39:19 +00:00
mmtunligit 7662105081 Change: Clamp terraform toolbar to main toolbar (#14725) 2025-11-13 18:25:21 -05:00
Rito12 c38aa9cc86 Fix #14701: Company colour remap for sprites in badge filter dropdowns. (#14732) 2025-11-13 18:24:46 -05:00
translators dbe329733c Update: Translations from eints
korean: 4 changes by telk5093
2025-11-13 04:40:24 +00:00
Rito12 120afd29f3 Codefix 394adb6: Make newgrf_badge_gui.cpp file docs compatible with the file name. (#14770) 2025-11-12 16:42:11 +00:00
translators c4b16cb4cd Update: Translations from eints
galician: 17 changes by pvillaverde
polish: 4 changes by Rito13
2025-11-12 04:39:35 +00:00
translators ae413728c1 Update: Translations from eints
english (au): 4 changes by krysclarke
english (us): 4 changes by 2TallTyler
greek: 4 changes by gh658804
hungarian: 4 changes by vargaviktor
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
2025-11-11 04:40:42 +00:00
Peter Nelson ca866cc083 Fix 394adb654e: Incorrect spacing for badges in dropdown lists. (#14768) 2025-11-10 21:43:35 +00:00
Peter Nelson aa6c694c67 Fix c2d4098afa: Unconfigured badge classes should be visible in column 0 by default. (#14766) 2025-11-10 21:41:02 +00:00
translators 744543e469 Update: Translations from eints
luxembourgish: 54 changes by phreeze83
2025-11-10 04:41:07 +00:00
Peter Nelson 376a39f67a Change: Use proper tooltip strings for freeform edge toggles. (#14765) 2025-11-09 22:40:08 +00:00
Loïc Guilloux b563c34ca4 Codefix 6d495d1: [Actions] vcpkg caching for codeql requires some permissions (#14767) 2025-11-09 21:31:59 +00:00
Rito12 9c338cf212 Codefix 8f14894: Correct the comment for GetClassBadge function. (#14759) 2025-11-09 17:29:44 +01:00
Peter Nelson d48463d2be Fix #14763: Crash if NewGRF currency separator is not valid. (#14764)
Ensure separator is a valid string.
2025-11-09 08:21:55 +00:00
translators f052ef213e Update: Translations from eints
luxembourgish: 54 changes by phreeze83
2025-11-07 04:39:02 +00:00
translators 94052a6ccb Update: Translations from eints
korean: 11 changes by telk5093
french: 14 changes by glx22
2025-11-06 04:41:15 +00:00
Jonathan G Rennison 6d5f150b3d Fix: BaseBitSet bit iteration for values which don't fit in 32 bits (#14757) 2025-11-04 20:23:18 +01:00
Peter Nelson 06d8e039c6 Codechange: Use std-find instead of for-loops in strgen. (#14754) 2025-11-04 15:26:15 +00:00
translators 3befbdd52f Update: Translations from eints
hungarian: 12 changes by vargaviktor
2025-11-04 04:38:48 +00:00
Peter Nelson 8226548e31 Fix fd32d1447e: Test for empty shares became inverted. (#14751) 2025-11-03 16:33:18 +00:00
Rito12 f759b691d7 Codechange: Use helper function for company recolour offset (#14740) 2025-11-03 12:25:32 +00:00
Peter Nelson 9001d4a884 Codefix: Clear m8 when making tiles.
m8 should be cleared when tiles do not use it.
2025-11-02 09:24:07 +00:00
Peter Nelson 00cdf1bc56 Codefix: Clear m6 more thoroughly when making tiles.
m6 bits 6-7 were previously used to be for bridge above state, but should now be cleared.
2025-11-02 09:24:07 +00:00
Peter Nelson 66b6d71e32 Codechange: Use std::initializer_list for NWidgetPart data. (#14749)
Avoids using C/C++ arrays.
2025-11-01 22:33:00 +00:00
Peter Nelson 34bbae05db Codechange: Use enum/EnumBitSet for livery in use flags. (#14746)
Replaces magic numbers.
2025-11-01 14:25:24 +00:00
translators 7c855c69fa Update: Translations from eints
dutch: 11 changes by Afoklala
2025-11-01 04:37:15 +00:00
Rito12 8ea347a811 Remove: Rail type cost from replace vehicle window. (#14748) 2025-10-31 10:26:47 -04:00
SamuXarick 20fd2b5014 Codefix: Add missing 'this->' in ScriptList (#14747) 2025-10-31 11:38:49 +00:00
Peter Nelson 038c4d2b87 Codechange: Make driver probe behave the same as loading by name. (#14736)
Inconsistent initialisation order when setting active driver and starting the driver.
2025-10-30 20:22:30 +00:00
SamuXarick 3f19240bbe Doc 313c6c4: [Script] GetAllRailTypes and GetRailType are from ScriptEngine (#14745) 2025-10-30 13:36:43 -04:00
SamuXarick 3ebedecb4a Add: [Script] Auto-convert ObjectType bool to integer when setting values for items in lists via [] (#14308) 2025-10-29 21:18:00 +01:00
translators 3b02761302 Update: Translations from eints
english (us): 11 changes by 2TallTyler
2025-10-29 04:41:13 +00:00
Peter Nelson 534918ccb0 Codechange: Simplify YAPF debug helpers a little. (#14741)
Remove template magic to get C-array size.
2025-10-28 22:05:23 +00:00
translators 6295310f25 Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
chinese (simplified): 11 changes by WenSimEHRP
catalan: 11 changes by J0anJosep
2025-10-28 04:38:50 +00:00
Tyler Trahan d1376d0b67 Fix #14737: Don't scale custom town and industry counts by land area (#14738) 2025-10-27 18:18:31 +00:00
translators b43cdcba01 Update: Translations from eints
norwegian (bokmal): 12 changes by eriksorngard
portuguese: 1 change by jcteotonio
polish: 2 changes by pAter-exe, 2 changes by Rito13
2025-10-27 04:41:32 +00:00
translators 1522c9f661 Update: Translations from eints
english (au): 11 changes by krysclarke
swedish: 11 changes by robert-i
chinese (traditional): 11 changes by KogentaSan
greek: 11 changes by gh658804
russian: 13 changes by Ln-Wolf
finnish: 15 changes by hpiirai
portuguese: 44 changes by jcteotonio
portuguese (brazilian): 11 changes by pasantoro, 1 change by jcteotonio
polish: 10 changes by Rito13, 1 change by pAter-exe
2025-10-26 04:38:02 +00:00
translators 7b703f688a Update: Translations from eints
galician: 1 change by pvillaverde
2025-10-25 04:38:31 +00:00
Peter Nelson a1920fc225 Change: Scale towns/industries by amount of land tiles. (#10063) 2025-10-24 16:32:09 -04:00
Rito12 70bf84175f Add: Show height difference in bridge is too low error message. (#14614) 2025-10-24 16:27:11 -04:00
Rito12 6ebe64703f Add: Game units for height. (#14615) 2025-10-24 16:25:16 -04:00
Jonathan G Rennison 2212169a8c Fix: Do not pre-fill industry production history for unused production slots (#14730) 2025-10-24 21:34:35 +02:00
Oliver Bechstein-Rumble 6fc4bef0e3 Fix #14240: Remember previous GUI scale when toggling auto-detect (#14380) 2025-10-24 21:33:55 +02:00
Peter Nelson 813cde3735 Fix: Don't set set town index for depot tiles. (#14729) 2025-10-24 21:30:50 +02:00
Peter Nelson 06b830dc07 Codechange: Prefer string equality instead of comparison. (#14727) 2025-10-24 21:30:03 +02:00
Loïc Guilloux a19f6c02e5 Codechange: Add prefix to dependabot commits (#14691) 2025-10-24 21:20:41 +02:00
SamuXarick e4b0e84a7c Doc 80666a0: Fix typo in game script changelog (#14714) 2025-10-24 21:19:47 +02:00
Peter Nelson d6eff806f0 Codechange: Use single vector for next station order.
Pass vector to insert into to avoid handling multiple vectors.

This may change the order of returned stations.
2025-10-23 21:02:27 +01:00
Peter Nelson fd32d1447e Codechange: Remove StationIDStack and SmallStack.
Use a std::vector or std::span instead.
2025-10-23 21:02:27 +01:00
Peter Nelson 5c89dff677 Codechange: Iterate road/tram masks instead of checking each type. (#14716) 2025-10-23 20:59:58 +01:00
Tyler Trahan 8e8eebd785 Doc: Define policy on AI usage in OpenTTD development (#14537) 2025-10-23 08:24:58 -04:00
SamuXarick 2396353c16 Codechange: Optimize FlowRiver (#13264) 2025-10-22 14:42:17 +02:00
Peter Nelson 9f7f314f81 Codechange: [Script] Add regression test for company president gender. 2025-10-19 17:32:48 +01:00
Peter Nelson 75ca1e3cda Fix a46a3a97f3: Incorrect parameter order for CmdSetCompanyManagerFace.
Style and bits were mixed up. Switch everything to style first, as the most significant parameter.
2025-10-19 17:32:48 +01:00
Peter Nelson bf3a07c5d2 Codechange: Silence uninitialized variable warning from GCC. (#14715)
`is_custom_layout` is not used uninitialized but GCC does not know that and produces a warning.
2025-10-19 11:45:13 +01:00
translators c627c64cc5 Update: Translations from eints
swedish: 1 change by robert-i
norwegian (bokmal): 4 changes by eriksorngard
chinese (simplified): 4 changes by WenSimEHRP
catalan: 1 change by J0anJosep
danish: 4 changes by bscargo
latvian: 8 changes by lexuslatvia
dutch: 4 changes by Afoklala
french: 5 changes by ottdfevr
2025-10-16 04:38:47 +00:00
Peter Nelson a949197264 Fix ef71ce0a9d: Crash when user enters a blank line in the console. (#14711)
Crash caused by reading outside the bounds of string_view (though not the underlying buffer)
2025-10-15 22:16:00 +00:00
Peter Nelson 8e055156e3 Codefix: Make sure safeguards.h is the last included non-table header. (#14687) 2025-10-11 10:22:50 +01:00
Rito12 f935e34d90 Codefix: Remove double SetDirty() calls. 2025-10-11 12:15:00 +08:00
Peter Nelson a617d009cc Codechange: Dereference with x-> instead of (*x). (#14700) 2025-10-05 15:47:33 +01:00
Peter Nelson c9fbc41636 Codechange: Script list iterator tidying. (#14698)
* Use `iter->` instead of `(*iter).`
* Use prefix instead of postfix operators
* Use `auto` instead of explicit iterator type.
* Use `std::next()` instead of assignment then increment.
* Use range-for where possible.
2025-10-05 07:57:09 +01:00
Peter Nelson 6fdacb0759 Codechange: Use find/find_if to search for rail/road types by label.
Replaces manual loops.
2025-10-04 18:16:45 +01:00
Peter Nelson 4d40966303 Codechange: Use FlatSet to store and test alternate rail/road types. 2025-10-04 18:16:45 +01:00
Peter Nelson 97674ac2a2 Fix f6c5da4cad: dump_info should not reverse non-ASCII label. (#14697)
Cargo/rail/road types labels are already in appropriate endian-ness.
2025-10-03 22:28:28 +01:00
translators 632ab6a4e5 Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
english (us): 1 change by 2TallTyler
korean: 1 change by telk5093
polish: 1 change by pAter-exe
2025-10-01 04:38:32 +00:00
Peter Nelson 5d5d27841b Fix: Bootstrap ignored default OpenTTD truetype fonts. (#14684)
Bootstrapping assumed that glyphs must be missing if there is no baseset, ignoring whether there actually are glyphs missing.
2025-09-30 22:16:50 +01:00
translators 9eacb889f8 Update: Translations from eints
english (au): 1 change by krysclarke
greek: 1 change by gh658804
hungarian: 4 changes by vargaviktor
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 1 change by jcteotonio
portuguese (brazilian): 1 change by pasantoro
2025-09-30 04:38:08 +00:00
Peter Nelson 42084ca516 Change: Make groups window group list aware of interface scaling. 2025-09-29 22:11:02 +01:00
Peter Nelson 3087194d80 Codechange: Use Rects for group window drawing.
Simplifies handling of LTR/RTL coordinates.
2025-09-29 22:11:02 +01:00
Peter Nelson 8a8ebabb9d Change: Provide road and rail overlay sprites for bridge decks. (#14557)
This allows bridges designed primarily with NewGRF railtypes and roadtypes to be at least somewhat compatible with built-in rail and road.
2025-09-29 22:08:16 +01:00
Rubidium aa7eb089c6 Codechange: make all Providers fully const (Font/Screenshot/Sound) 2025-09-29 23:39:13 +03:00
Peter Nelson dcc3a67752 Fix 9cdf740097: Don't make copy of format providers when making a screenshot. (#14681)
While here, use projection instead of lambda to select provider.
2025-09-29 20:02:08 +00:00
Peter Nelson f8aa2e64e4 Add: Include build cost in rail/road dropdowns. (#14599) 2025-09-29 19:23:02 +01:00
translators 8eaf511f0c Update: Translations from eints
english (us): 3 changes by 2TallTyler
galician: 9 changes by pvillaverde
2025-09-29 04:39:03 +00:00
Su c8220494de Change: replace the "(City)" identifier in the town directory with the city icon (#14634) 2025-09-28 21:18:23 +02:00
Peter Nelson 29136350cf Codechange: Initialise rail/road types with range-for.
Replace double loop with single loop that performs both parts together.
2025-09-28 19:27:47 +01:00
Peter Nelson ca8fb69ffd Codechange: Use std algorithm when allocating rail/road type.
Use `std::ranges::find()` instead of a `for`-loop to allocate rail and road types.
2025-09-28 19:27:47 +01:00
Peter Nelson 126669e10d Codechange: Make GetRail/RoadTypeInfoIndex() a member method.
This follows a similar pattern used for cargoes, houses and objects.

Also fixes incorrect documentation of GetRoadTypeInfoIndex().
2025-09-28 19:27:47 +01:00
Peter Nelson 5ed8f1203b Codechange: Cleanup unnecessary includes of spritecache.h (#14678) 2025-09-28 17:09:57 +00:00
Peter Nelson ff674829f5 Codechange: Replace Rect CentreTo with CentreToHeight. (#14675)
So far all callers only need to centre vertically, so not having to provide the existing width simplifies calls.
2025-09-28 13:09:36 +00:00
Peter Nelson 81530e2574 Change: Support interface scaling in network client list buttons. 2025-09-28 11:00:07 +01:00
Peter Nelson cb1c2409e6 Codechange: Rework network client list buttons.
Instead of calculating and storing which buttons to display for each
line and then further calculating what each line should be when
displaying it, store everything on one pass.

This simplifies/deduplicates logic.
2025-09-28 11:00:07 +01:00
translators 37f737417c Update: Translations from eints
english (au): 3 changes by krysclarke
swedish: 3 changes by robert-i
korean: 3 changes by telk5093
greek: 3 changes by gh658804
russian: 3 changes by Ln-Wolf
finnish: 3 changes by hpiirai
catalan: 3 changes by J0anJosep
portuguese: 3 changes by jcteotonio
portuguese (brazilian): 3 changes by pasantoro
polish: 3 changes by pAter-exe
2025-09-28 04:37:53 +00:00
Peter Nelson 31eec7106b Codechange: Use Rect WithX/WithY in some places. 2025-09-28 00:31:23 +01:00
Peter Nelson 6d3f39609f Codechange: Add WithX/WithY methods to Rect.
This simplifies creating a new Rect with specific horizontal or vertical coordinates.
2025-09-28 00:31:23 +01:00
Peter Nelson 380f9e8b48 Change: Prefer normal/medium weight font in FontConfig fallback detection. (#14672)
This way it behaves similar to Windows.
2025-09-28 00:30:47 +01:00
Rubidium e58fdb8840 Codefix: shadowing of variables 2025-09-28 01:19:32 +03:00
Jonathan G Rennison f64e1cdae0 Fix: Industry accept/produce when not contiguous range from 0 (#14555) 2025-09-27 18:12:49 +01:00
Jonathan G Rennison 9307e1929e Fix #14604: Clearing tiles to build objects did not update town ratings (#14616) 2025-09-27 18:11:42 +01:00
Peter Nelson bfe5fb7339 Codechange: FlatSet's contains() should be const. (#14665)
This function does not modify contents, so should be marked const.
2025-09-27 18:10:39 +01:00
Peter Nelson 0aaeb6f7e7 Codechange: Rename TrackFollowers to follower. (#14664)
Replaces use of codestyle breaking `F` in places.
2025-09-27 18:10:22 +01:00
Peter Nelson 69ea970d6e Codefix 18e28077cc: Local variable icon shadowed member variable icon. (#14668)
Rename rects used in league table to avoid name shadowing. Now uses the same naming as in ScriptLeagueWindow.
2025-09-27 13:08:06 +01:00
Rubidium 5e7cb08411 Fix #14549: changing interface scale could underflow map zoom 2025-09-27 07:41:20 +03:00
translators 910eeef17f Update: Translations from eints 2025-09-27 04:38:00 +00:00
Peter Nelson 18e28077cc Fix: League Table layout broken with RTL languages. (#14667) 2025-09-27 01:50:33 +01:00
Peter Nelson 41837d093b Change: Record and show multiple errors for each NewGRF. (#14658) 2025-09-26 19:00:45 +01:00
Tyler Trahan 0b99a0b66a Feature: Draw infinite water when all borders are water (#13289) 2025-09-26 14:37:27 +00:00
Kuhnovic 5822c8cc65 Codechange: Set YAPF startup nodes directly. (#14663) 2025-09-26 16:33:20 +02:00
Kuhnovic aa6fb0e9e5 Codechange: Simplified logic of ship leaving a depot. (#14661) 2025-09-26 13:35:11 +02:00
Kuhnovic f4f1beba64 Codechange: Moved PruneIntermediateNodeBranch to rail pathfinder. (#14662) 2025-09-26 11:37:50 +02:00
Kuhnovic 6401855842 Fix bff8501: Gcc 15 warns about duplicate type. (#14660) 2025-09-26 10:04:50 +02:00
Peter Nelson 80e58e751a Fix #14607: Bridge-over-station discrepancy depending on build order. (#14608)
When building a custom station, the callback-derived tile layout is ignored during the bridge height test. This caused a discrepancy between building a station under a bridge vs building a bridge over the same station.

Test the station tile layout callback during the bridge height test.
2025-09-24 22:45:18 +01:00
Peter Nelson 42c9f84d74 Fix 3ac1a2f1e4: Game crash due to invalid vehicle type information. (#14628)
Use std::variant instead of union for vehicle info.

RailVehicleInfo is now non-POD so using in a union causes undefined behaviour.
2025-09-24 22:44:41 +01:00
Kuhnovic ecb761fc69 Codechange: Simplified structure of yapf_ship_regions. (#14640) 2025-09-24 21:34:01 +02:00
translators bec4e71d53 Update: Translations from eints
hungarian: 5 changes by vargaviktor
2025-09-24 04:37:55 +00:00
Peter Nelson 6ad7c1c40a Fix d85f4b3ebf: Incorrect row height in network server list. (#14653) 2025-09-23 23:15:21 +01:00
Peter Nelson 484ed1008a Codechange: Make TownRatingCheckType an enum class. (#14652) 2025-09-23 22:00:34 +01:00
Peter Nelson 2b164111a9 Codechange: Use EnumBitSet for TownFlags. (#14651) 2025-09-22 19:04:55 +00:00
Peter Nelson 43e65d04e4 Codefix: Incorrect naming and location of widget names for build docks window. (#14650) 2025-09-22 07:18:08 +01:00
translators 853dc245a0 Update: Translations from eints
chinese (simplified): 4 changes by WenSimEHRP
catalan: 5 changes by J0anJosep
2025-09-22 04:38:24 +00:00
Peter Nelson 1229a498b7 Codechange: Add constant for INVALID_WIDGET. (#14649)
Replaces direct use of -1, making it easier to find.
2025-09-21 21:47:04 +00:00
Peter Nelson 1278f62e2e Codechange: Call shorter variant of DrawFrameRect and GfxFillRect. (#14647)
Pass rect instead of breaking it up when possible.
2025-09-21 20:30:59 +01:00
Peter Nelson 71eba489bc Codechange: Deduplicate DrawButtonDropdown. (#14646)
Use Rect methods to position components.
2025-09-21 20:26:06 +01:00
Peter Nelson a7b06fc9f5 Codechange: Don't use Point for non-2D coordinate. (#14645)
`HandleScrollbarHittest` returns min and max coordinates, not x and y.
Also avoid referring to the min and max coordinates as top and bottom, as these functions are used for both vertical and horizontal scrollbars.
2025-09-21 14:57:53 +01:00
Peter Nelson 29012c3fce Codechange: Move settings entry size global variables. (#14644)
_setting_circle_size and (the incorrectly named) SETTING_HEIGHT variables are now static members of BaseSettingEntry.

Neither of these are constants, so they no longer use constant naming style.
2025-09-21 13:41:47 +01:00
Peter Nelson 13ab9c1adc Fix 6e90b828c6: Off-by-one in Rect::CentreTo. (#14643)
* Rect right/bottom are inclusive so -1 must be taken from width/height.
* Misnamed variable, `new_right` is actually `new_top`.
2025-09-21 13:41:23 +01:00
Peter Nelson 69697a62d3 Fix 8c58fb1efd: Doubled beep sounds when clicking toolbar buttons.
* ShowDropDownList() now issues a beep, so individual toolbar buttons no longer need to do it.
* HandleButtonClick() may be called twice for some buttons, as it is called by automatically for PUSH buttons.

This caused some beeps to sound louder than others.
2025-09-21 10:12:22 +01:00
Peter Nelson ce166bbbc3 Codechange: Demagicify main toolbar button type.
Use WWT_PUSHIMGBTN for non-menu buttons so they automatically raise, replacing the custom OnTimeout function.
2025-09-21 10:12:22 +01:00
Peter Nelson 70d4182850 Fix #14631, Fix 1cb0cbcb6c: Waypoint customs spec not allocated properly on initial construction. (#14633)
Split AllocateSpecToStation/RoadStop into Allocate and Assign functions, allowing command tests to occur separately.
2025-09-21 09:32:25 +01:00
translators 030bbc6399 Update: Translations from eints
vietnamese: 4 changes by KhoiCanDev
2025-09-21 04:37:37 +00:00
Peter Nelson d07ff71c67 Fix ed67aedabf: Wrong button type for town menu in scenario editor toolbar. (#14641)
The button was changed from an action to a menu, which should be WWT_IMGBTN instead of WWT_PUSHIMGBTN.
2025-09-21 01:25:31 +00:00
Tyler Trahan 20067d2db5 Doc: Update station rating comments and doxygen. 2025-09-20 19:28:40 -04:00
Tyler Trahan 2ab3b5516f Codechange: Early continue for cargos not moved by this station 2025-09-20 19:28:40 -04:00
Kuhnovic 1ac5baab31 Change: Add lock penalty to ship pathfinder. (#14603) 2025-09-20 22:52:59 +02:00
Kuhnovic bff850128c Codechange: Use YAPF for river builder pathfinder. (#14606) 2025-09-20 21:42:06 +02:00
translators 2aaffbe23c Update: Translations from eints
korean: 8 changes by telk5093
dutch: 4 changes by Afoklala
portuguese: 10 changes by jcteotonio
2025-09-20 04:37:32 +00:00
Peter Nelson 68e37b7b50 Change: [Script] Decouple RAILTYPE_INVALID from internal presentation. (#14630)
RAILTYPE_INVALID is now -1, which matches ROADTYPE_INVALID.
2025-09-19 22:02:08 +01:00
translators 264cbd8ab5 Update: Translations from eints
english (au): 4 changes by krysclarke
portuguese: 13 changes by jcteotonio
2025-09-19 04:38:27 +00:00
Peter Nelson 17fbe0b911 Change: Determine automatic interface scale by window size. (#14627)
Replace OS-dependent interface scaling with scaling dependent on the window size.

This works on all platforms and should provide a more comfortable experience for new players. Manual interface scale setting works as before.
2025-09-18 18:52:14 +01:00
translators 2d13bcb7b9 Update: Translations from eints
french: 5 changes by ottdfevr
portuguese: 31 changes by jcteotonio
2025-09-18 04:37:46 +00:00
Jonathan G Rennison d54bf49936 Fix: Variant cycle detection in FinaliseEngineArray (#14629) 2025-09-17 22:42:42 +01:00
Kuhnovic 262c364a28 Fix #14620: Use full file path when deleting files. (#14623) 2025-09-17 21:43:22 +02:00
Peter Nelson 129825077b Change: Apply interface scale to window snap distance. (#14625) 2025-09-17 12:29:16 +01:00
translators 445d2b3e22 Update: Translations from eints
swedish: 2 changes by robert-i
norwegian (bokmal): 4 changes by eriksorngard
chinese (traditional): 5 changes by KogentaSan
english (us): 5 changes by 2TallTyler
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
danish: 2 changes by bscargo
portuguese: 6 changes by jcteotonio
portuguese (brazilian): 9 changes by pasantoro
polish: 12 changes by pAter-exe
2025-09-17 04:37:43 +00:00
translators f487cde056 Update: Translations from eints
swedish: 2 changes by robert-i
greek: 2 changes by gh658804
russian: 3 changes by Ln-Wolf
finnish: 2 changes by hpiirai
danish: 3 changes by New-Authentication
portuguese: 44 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-09-16 04:37:32 +00:00
Tyler Trahan 5dea170589 Fix #14588: Show error when unable to clone partly-cleared crashed train (#14591) 2025-09-15 19:05:35 -04:00
Kuhnovic faacae2c3f Change: Removed disable_node_optimization YAPF setting (#14578) 2025-09-15 21:59:12 +02:00
Kuhnovic 26fef5b62b Fix 4eaeccd: FioRemove should return false if the file does not exist. (#14619) 2025-09-15 21:17:18 +02:00
Peter Nelson f2f6609206 Fix #14572: Incorrect playlist entry was removed if there are duplicates. (#14583) 2025-09-15 18:52:07 +01:00
Peter Nelson 5f20a97b36 Fix 313c6c45aa: [Script] Return rail types as list instead of bitmask. (#14617)
This is more idiomatic for scripts, and avoids exposing internal representation.
2025-09-15 13:59:04 +01:00
Kuhnovic 7d252ff7fc Change: Ask for confirmation before deleting a savegame / scenario / heightmap. (#14621) 2025-09-15 13:14:56 +02:00
Peter Nelson 7240ed5817 Cleanup 3ac1a2f1e4: Don't load/save a train's railtypes property. (#14618)
A train's railtypes property is always reset by Train::ConsistChanged on load, so storing is not necessary.
2025-09-15 08:21:09 +01:00
translators c111abad37 Update: Translations from eints
portuguese: 1 change by jcteotonio
2025-09-15 04:38:59 +00:00
Michael Lutz 52e97c981c Add: Show all railtypes in the build vehicle and engine preview dialogs. 2025-09-14 17:11:26 +02:00
Michael Lutz 313c6c45aa Add: [Script] Function to get all rail types of an rail engine. 2025-09-14 17:11:26 +02:00
Michael Lutz 1779da51c2 Add: [NewGRF] Train property to set multiple track types for an engine. 2025-09-14 17:11:26 +02:00
Michael Lutz 3ac1a2f1e4 Codechange: Store the rail type of rail engines as a RailTypes bitmask. 2025-09-14 17:11:26 +02:00
Michael Lutz 0715903b24 Codechange: Use an enum for vehicle acceleration model. 2025-09-14 17:11:26 +02:00
translators 748700bd9e Update: Translations from eints
catalan: 2 changes by J0anJosep
latvian: 53 changes by lexuslatvia
portuguese: 36 changes by jcteotonio
2025-09-14 04:38:01 +00:00
translators 96b59af4d1 Update: Translations from eints
norwegian (bokmal): 2 changes by eriksorngard
vietnamese: 14 changes by KhoiCanDev
russian: 1 change by Ln-Wolf
dutch: 1 change by Afoklala
2025-09-13 04:36:41 +00:00
Peter Nelson 3356aa7c69 Codechange: Remove two vector typedefs which are only used once. (#14612) 2025-09-12 19:41:18 +01:00
Peter Nelson ee664f7e8c Codechange: Prefer EnumBitSet's All() method over bitwise comparisons. (#14611)
This makes the intent of the operation clearer.
2025-09-12 19:37:17 +01:00
Peter Nelson b1dc37fb05 Fix 9a294ab2ed: Bridge height check for waypoints didn't include axis in layout. (#14609)
It's unlikely that X and Y axis waypoints have different heights, but not impossible.
2025-09-12 08:28:42 +01:00
translators 3317997976 Update: Translations from eints
english (au): 1 change by krysclarke
swedish: 1 change by robert-i
chinese (traditional): 1 change by KogentaSan
chinese (simplified): 2 changes by WenSimEHRP
korean: 1 change by telk5093
greek: 1 change by gh658804
finnish: 1 change by hpiirai
portuguese: 9 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by Rito13
2025-09-12 04:43:48 +00:00
Peter Nelson d095526406 Codechange: Range-check rail/road/tram maps by size instead of constant. (#14602)
* Compare against the size of the array instead of the constant used to define the array.
* `type_map` alias now uses auto to avoid defining the type each time.
* `_cur_gps.grffile->railtype_map` is now aliased to `type_map` to simplify and standardise.
2025-09-11 12:31:34 +01:00
translators fe9093df96 Update: Translations from eints
english (us): 1 change by 2TallTyler
korean: 1 change by telk5093
hungarian: 1 change by vargaviktor
danish: 2 changes by New-Authentication
dutch: 1 change by nicobresseleers
portuguese: 12 changes by jcteotonio
2025-09-11 04:37:58 +00:00
Peter Nelson e10200efa4 Change: Allow bridges over locks. (#14595)
The bridge must be at least 2 levels higher than the lock.
2025-09-10 18:41:56 +01:00
translators eb09d18418 Update: Translations from eints
english (au): 1 change by krysclarke
swedish: 1 change by robert-i
chinese (traditional): 1 change by KogentaSan
vietnamese: 1 change by KhoiCanDev
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 76 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 4 changes by pAter-exe
2025-09-10 04:36:50 +00:00
translators 033114da8c Update: Translations from eints
italian: 64 changes by Boh132Boh
portuguese: 172 changes by jcteotonio
2025-09-09 04:38:39 +00:00
Peter Nelson 5f84ff5c3f Change: Allow bridges over docks. (#14594) 2025-09-08 21:43:31 +01:00
Peter Nelson 43842f0bcc Fix: Don't add spacing in rail/road type dropdowns if no badges are present. (#14598) 2025-09-08 21:42:49 +01:00
translators 16cd420e4c Update: Translations from eints
portuguese: 44 changes by jcteotonio
portuguese (brazilian): 6 changes by jcteotonio
2025-09-08 04:40:24 +00:00
Peter Nelson 89a90080c5 Codechange: Split table data out of rail.cpp (#14597) 2025-09-07 15:44:54 +00:00
Peter Nelson 80541a7682 Fix c02ef3e456: [AI] Incorrect infrastructure cost for road/tram tiles. (#14596)
Infrastructure total count should be split between road and tram pieces.
2025-09-07 14:11:05 +01:00
translators f82bd95faf Update: Translations from eints
portuguese: 25 changes by jcteotonio
2025-09-07 04:37:41 +00:00
translators 64dbb9383b Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
danish: 28 changes by New-Authentication
portuguese: 30 changes by jcteotonio
2025-09-06 04:38:23 +00:00
Peter Nelson 244a267304 Codechange: Give better names to water tile layouts. (#14592) 2025-09-05 19:02:00 +00:00
Peter Nelson a2f3d59707 Codefix: Use of nullptr instead of std::nullopt. (#14590) 2025-09-05 14:05:02 +01:00
translators 122023be8d Update: Translations from eints
danish: 10 changes by New-Authentication
french: 1 change by ottdfevr
2025-09-05 04:39:06 +00:00
Peter Nelson 6613da5d7e Fix #14586, Fix 069ff846e4: Empty station tile layouts incorrectly substituted with default layouts. (#14587)
It is no longer possible for a layout to be missing, so the nullptr check should have been removed.
2025-09-04 21:11:02 +00:00
Peter Nelson 8d96ea1a5e Fix #14584: Crash due to drawing non-existent orders of new vehicle. (#14585)
When the vehicle list window is grouped by orders, no check was made that vehicle's order list existed.
2025-09-04 02:18:26 +00:00
Peter Nelson 4ed4a8b602 Codechange: Remove MusicSystem::displayed_playlist. (#14582)
It is not actually used for display, and is basically a copy of the standard playlist with duplicated maintenance.
2025-09-04 02:56:19 +01:00
Peter Nelson 5d15c8b8ab Fix: Wrong row may be selected in music playlists. (#14581)
Include frame offset when clicking on music playlist to ensure the correct row is selected.
2025-09-03 18:02:26 +00:00
Peter Nelson f3951214c1 Codechange: Shuffle MusicSongInfo members to reduce alignment padding. (#14580) 2025-09-03 17:22:50 +00:00
Kuhnovic 80f672d5b4 Codechange: Remove redundant data members from YAPF ship node. (#14577) 2025-09-03 12:52:15 +02:00
translators 5602555a7a Update: Translations from eints
danish: 8 changes by New-Authentication
2025-09-03 04:38:23 +00:00
Peter Nelson 736998b595 Codechange: Use span instead of raw pointer for animated cursors. (#14575)
This allows the terminator entry to be removed.
2025-09-02 21:48:24 +01:00
Peter Nelson 7d4282b341 Fix #14569: Ensure music playlist window is large enough. (#14570)
Take number of tracks allowed in custom playlist into account, instead of just the number of tracks loaded.
2025-09-02 20:18:33 +01:00
Cornelius Diekmann dd426bb8c7 Codefix f6555cf: fix comment track vs. tile (#14571) 2025-09-02 13:55:08 +02:00
Loïc Guilloux 7a6e04561d Fix #14278, ccd586a7: [Script] Don't set members inside operator new() (#14568) 2025-09-02 12:58:31 +02:00
translators fce2748bb7 Update: Translations from eints
portuguese: 5 changes by jcteotonio
2025-09-02 04:39:43 +00:00
Peter Nelson 960b840291 Fix 6d6e64b1f0: Road stop properties 0x13/0x14 were not skipped properly. (#14567)
These properties where changed to be variable length for consistency, but ignoring them treated them as fixed length.
2025-09-01 18:52:55 +01:00
Peter Nelson 73045f9b0e Fix #13922: Ensure music track no widget is wide enough for track no. (#14566) 2025-09-01 08:44:33 +00:00
translators 4c77026167 Update: Translations from eints
galician: 2 changes by pvillaverde
vietnamese: 24 changes by MagicalDrizzle
french: 1 change by ottdfevr
2025-09-01 04:42:09 +00:00
Peter Nelson ff5e067341 Fix 7b60e5ccad: Badge filters were only applied to trains. (#14565) 2025-08-31 23:04:48 +01:00
Peter Nelson 24a4a1652b Update: Changelog for 15.0-beta3 (#14407) 2025-08-31 14:49:25 -04:00
Peter Nelson a23970af32 Fix f30f808b50: Bridge over bridge head could be built one level too low. (#14564) 2025-08-31 19:15:49 +01:00
Peter Nelson febf8b0d57 Fix #14561: Vehicle effects missing for vehicle on bridge. (#14563) 2025-08-31 18:27:46 +01:00
Loïc Guilloux 4b9afbe35b Codefix: [Script] Mention ScriptError::ERR_STATION_TOO_SPREAD_OUT in API doc (#14562) 2025-08-31 15:18:51 +00:00
Loïc Guilloux 80666a0d51 Add: [Script] ScriptError::ERR_BRIDGE_TOO_LOW (#14560) 2025-08-31 14:04:02 +00:00
Rubidium 7c0f69a8fe Codefix: typos in comments and strings 2025-08-31 10:30:37 +02:00
Rubidium 4fb749886a Codefix: typos in variable/constant/function names 2025-08-31 10:30:37 +02:00
Rubidium da8422a656 Codefix: typos in string names 2025-08-31 10:30:37 +02:00
translators 37b72f9dcf Update: Translations from eints
galician: 21 changes by pvillaverde
french: 9 changes by ottdfevr
2025-08-31 04:38:04 +00:00
Loïc Guilloux fac55d0278 Fix #14506, aac3a5b6: Restore prefilling of _stations_nearby_list (#14551) 2025-08-30 21:11:09 +02:00
Peter Nelson b867939f37 Fix #14553: Parameter configuration of pre-action 14 NewGRFs did not work. (#14554) 2025-08-30 19:47:37 +01:00
translators 011fca6e21 Update: Translations from eints
danish: 59 changes by bscargo
2025-08-30 04:37:31 +00:00
Jonathan G Rennison 32d93e1c67 Cleanup: Misspellings of "dropdown" in order_gui.cpp 2025-08-29 21:40:35 +02:00
translators 5c285f3e0c Update: Translations from eints
italian: 12 changes by da-cal
maori (new zealand): 85 changes by Kyle-McDangersword
2025-08-29 04:38:53 +00:00
Richard Wheeler 72fc2032e6 Change: Update OpenTTD TTF fonts to v0.8
Add new private range special symbols for recent OpenTTD updates: town and city icons for sans (supporting #14504), left arrow for small and sans (supporting #14174). Add Hebrew alphabet to small and serif fonts, for first (beta) support for Hebrew. Fix new shekel glyph height in all fonts. Fix i ogonek right bearing and umlaut alignment in sans font. Fixes #14179
2025-08-28 22:50:15 +01:00
Richard Wheeler c6c72404e1 Change: Set endgame background to match original graphics borders 2025-08-28 21:22:31 +01:00
Kuhnovic 10e81af663 Codechange: Deduplicate YAPF estimate calculation. (#14527) 2025-08-28 21:09:00 +02:00
Peter Nelson e6323e6760 Fix: File/directory titles not updated if language is changed. (#14542) 2025-08-28 17:42:00 +01:00
Peter Nelson 2978cfa5c9 Fix fbd71a9d72: Missing space after old file type identifier. (#14541) 2025-08-27 18:06:49 +01:00
translators 41ecb25238 Update: Translations from eints
maori (new zealand): 2 changes by translators
2025-08-27 04:39:11 +00:00
Kyle McDangersword 2907dff157 Add #14536: Maori (New Zealand) language 2025-08-26 20:52:25 +02:00
Peter Nelson 68af94cf3e Fix 7344dfe651: Hang when clicking on a link in a text file. (#14539)
When text is not wrapped, a line's `wrapped_width` is 0, causing the Layouter to get stuck in an infinite loop.
2025-08-26 18:28:16 +01:00
Loïc Guilloux 995f30bff0 Codefix bd1a3fe0: Incorrect handling of squirrel stack (#14538) 2025-08-26 16:00:01 +02:00
translators d3d25a39a0 Update: Translations from eints
norwegian (bokmal): 5 changes by eriksorngard
2025-08-26 04:40:50 +00:00
Jonathan G Rennison c4912c94e4 Fix: Incorrect use of GetDescription in town/industry load handler (#14526)
GetLoadDescription should be used instead such that skipping incoming
table fields works as expected
2025-08-25 15:16:04 +01:00
Peter Nelson 6eb5c166dc Fix: Account for both text and icon size in station waiting cargo display. (#14535) 2025-08-25 15:15:10 +01:00
translators 5996aa4a57 Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
english (us): 5 changes by 2TallTyler
chinese (simplified): 5 changes by WenSimEHRP
2025-08-25 04:42:04 +00:00
glx22 6d495d1fb9 Codechange: [Actions] Use NuGet for vcpkg binary caching 2025-08-24 21:38:16 +02:00
glx22 0f2d1dc39c Codechange: [Actions] Setup vcpkg via a composite action 2025-08-24 21:38:16 +02:00
Cornelius Diekmann c9fc7c0caa Doc: Symbol consistency in landscape_grid.html (#14531)
The table in landscape_grid.html uses both the letter `O` as well as the digit `0` (zero) to denote bits.
The digit `0` represents actual values, while the letter `O` is a placeholder for free bits.
2025-08-24 12:46:10 +00:00
Jonathan G Rennison 294006b1c8 Fix: Incorrect Company::freegroups handling on company merger (#14534) 2025-08-24 12:26:34 +00:00
Jonathan G Rennison 98ffd3cdb1 Fix: Off-by-one when drawing diagonal lines (#14523) 2025-08-24 13:24:17 +01:00
translators 98090fe948 Update: Translations from eints
swedish: 5 changes by robert-i
korean: 5 changes by telk5093
hungarian: 9 changes by vargaviktor
catalan: 5 changes by J0anJosep
2025-08-24 04:42:03 +00:00
translators 0d736d7555 Update: Translations from eints
greek: 7 changes by gh658804
finnish: 6 changes by hpiirai
dutch: 9 changes by Afoklala
2025-08-23 04:39:05 +00:00
Peter Nelson 54f328beeb Codechange: Remove output pointer from GetTileArea(). (#14530)
This simplifies things and removes undocumented type `ETileArea`
2025-08-22 21:27:31 +01:00
translators 2aaf0c0211 Update: Translations from eints
english (au): 5 changes by krysclarke
chinese (traditional): 5 changes by KogentaSan
russian: 5 changes by Ln-Wolf
finnish: 8 changes by hpiirai
portuguese: 7 changes by jcteotonio
portuguese (brazilian): 6 changes by pasantoro
polish: 5 changes by pAter-exe
2025-08-22 04:40:24 +00:00
translators b3beff9781 Update: Translations from eints
swedish: 2 changes by joeax910
chinese (traditional): 2 changes by KogentaSan
english (us): 4 changes by 2TallTyler
chinese (simplified): 2 changes by WenSimEHRP
finnish: 2 changes by hpiirai
2025-08-21 04:40:46 +00:00
Peter Nelson 7a47f7b834 Change: Tweak tubular bridges to remove baked-in pillars. 2025-08-20 21:40:41 +01:00
Peter Nelson 9a294ab2ed Feature: Allow stations and roadstops under bridges.
Bridges above stations will have pillars excluded if they conflict with the station layout.

Partly based on the system implemented in JGRPP.

Co-authored-by: <su@angel-island.zone>
2025-08-20 21:40:41 +01:00
Peter Nelson 6d6e64b1f0 Add: [NewGRF] Bridge pillar exclusion information for stations and roadstops.
NewGRF stations and roadstops can now specify bridge pillar and minimum height information for their tiles.
2025-08-20 21:40:41 +01:00
Peter Nelson f30f808b50 Codechange: Implement tile proc handler to test for building bridge over tile. 2025-08-20 21:40:41 +01:00
translators 77503776b6 Update: Translations from eints
english (au): 2 changes by krysclarke
norwegian (bokmal): 7 changes by eriksorngard
chinese (traditional): 2 changes by KogentaSan
korean: 7 changes by telk5093
russian: 2 changes by Ln-Wolf
catalan: 24 changes by J0anJosep
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-08-20 04:40:05 +00:00
Peter Nelson 1cb0cbcb6c Codechange: Standardise how AllocateSpecToStation/RoadStop are called. (#14525)
Replace use of negative value with std::optional and update doxygen.
2025-08-19 18:52:36 +01:00
translators 5eeede82c5 Update: Translations from eints
swedish: 4 changes by robert-i
english (us): 2 changes by 2TallTyler
greek: 2 changes by gh658804
2025-08-19 04:39:40 +00:00
Peter Nelson 3a5eaf367a Feature: Option to disable activate-on-release behaviour of toolbar dropdown buttons. 2025-08-18 19:48:22 +01:00
Peter Nelson ea9bee2a3e Fix: Close dropdown menu when user clicks on a differenet window.
This did not happen if the clicked window is flagged as unfocusable (i.e. the main toolbar.)
2025-08-18 19:48:22 +01:00
translators 1850ad1aa2 Update: Translations from eints
chinese (traditional): 2 changes by KogentaSan
russian: 2 changes by Ln-Wolf
2025-08-18 04:46:26 +00:00
Jonathan G Rennison add40a2de2 Fix #10222: Off by one drawing even-width horizontal/vertical lines 2025-08-17 20:41:49 +01:00
Jonathan G Rennison 80f72d3722 Fix: Off-by-one in Blitter::DrawLineGeneric 2025-08-17 20:41:22 +01:00
Loïc Guilloux 2d60b9d7b9 Codefix: [macos] variable length array warnings with clang-17 (#14521) 2025-08-17 19:47:31 +02:00
translators 88923a3f18 Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (simplified): 4 changes by WenSimEHRP
finnish: 2 changes by hpiirai
french: 52 changes by glx22
portuguese: 2 changes by jcteotonio
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-08-17 04:45:07 +00:00
translators 94ba9b1454 Update: Translations from eints
hungarian: 2 changes by vargaviktor
finnish: 2 changes by hpiirai
dutch: 3 changes by Afoklala
2025-08-16 04:41:07 +00:00
dP 628a23a990 Fix: [Script] Invalid title on GSGoal.Question windows (#14519) 2025-08-16 00:55:09 +02:00
Peter Nelson 0a1c0b8b48 Change: Hide bridge pillars if obstructed by tile below.
Tiles can now control if pillars are drawn on a bridge above it. There is no visible change with default bridges.
2025-08-15 23:20:18 +01:00
Peter Nelson 48b42492bc Add: [NewGRF] Add extra information to bridges about pillars.
Bridges can now include information about pillars and blocked edges for each bridge piece.

This data is set for default bridges, and NewGRFs can provide their own pillar information.
2025-08-15 23:20:18 +01:00
Su 85af200788 Add: Identify cities on the main viewport by appending an icon to their names (#14504)
Co-authored-by: Peter Nelson <peter1138@openttd.org>
2025-08-15 16:49:25 -04:00
Tyler Trahan 3d806d6a65 Fix: 'Map edges' GUI buttons shouldn't initialize with water on northeast edge (#14514) 2025-08-14 08:25:16 -04:00
Peter Nelson 980121cdf5 Codefix: Don't store palette for track detail in temporary global variable. (#14516)
Pass palette via parameters instead.
2025-08-14 12:28:36 +01:00
translators 1399efd72a Update: Translations from eints
portuguese: 2 changes by jcteotonio
2025-08-14 04:44:10 +00:00
Peter Nelson 376b2f42c9 Fix 0878f71051: Incorrect station layout for even platform counts. (#14515) 2025-08-13 23:18:26 +01:00
Peter Nelson 0878f71051 Codechange: Add RailStationTileLayout iterator. (#14510)
This allows iterating a predefined or calculated rail station layout without allocating extra memory and copying.
2025-08-13 17:23:19 +01:00
translators 5b5bdd346d Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 2 changes by KogentaSan
english (us): 4 changes by 2TallTyler
chinese (simplified): 2 changes by WenSimEHRP
greek: 2 changes by gh658804
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-08-13 04:43:07 +00:00
Peter Nelson f898acae3e Codechange: Remove line break before opening brace of Yapf classes. (#14513) 2025-08-12 21:08:41 +01:00
translators f1a33d50a7 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (simplified): 1 change by WenSimEHRP
2025-08-12 04:42:13 +00:00
Peter Nelson b4ebb26c55 Codechange: Remove SpriteGroupType from SpriteGroup. (#14511) 2025-08-11 23:14:44 +01:00
Tyler Trahan f596498a28 Fix #14486: Make cargo graph All/None tooltips less specific (#14509) 2025-08-11 16:08:05 -04:00
Peter Nelson 1af721a6f0 Add: [Badges] Vehicle variable to query badges of current rail or road types. (#14312) 2025-08-11 19:08:48 +01:00
Peter Nelson cd61682ebf Codefix: Don't unnecessarily extract string from bridge CommandCost result. (#14507) 2025-08-10 22:01:03 +01:00
Tyler Trahan 78f7060994 Fix: Standardize "rail waypoint" strings (#14505) 2025-08-10 10:56:33 -04:00
translators 3587db6a23 Update: Translations from eints
swedish: 1 change by robert-i
english (us): 1 change by 2TallTyler
portuguese: 1 change by jcteotonio
2025-08-10 04:46:46 +00:00
translators 850bf1c715 Update: Translations from eints
dutch: 6 changes by Afoklala
2025-08-09 04:42:25 +00:00
Peter Nelson 4a4613e630 Change: Reduce visual height of default rail waypoints. (#14503)
Added 20 years ago, these were perhaps out of proportion with default rail stations.
2025-08-08 17:53:46 +01:00
frosch 66b775016a Fix: Original graphics' tycoon-of-the-century sprite assumes a black background. 2025-08-08 18:15:24 +02:00
Kuhnovic 40457fc0dd Change: Separate ships travelling in opposite direction (#14493) 2025-08-08 09:52:01 +02:00
translators c8a07fe90b Update: Translations from eints
chinese (traditional): 36 changes by KogentaSan
2025-08-08 04:47:48 +00:00
merni-ns e1b404089c Fix #13307: Return non-zero value when there is a mistake in command-line arguments
Specifically, when the savegame passed to -q cannot be read or when non-existent/invalid options are passed
2025-08-07 23:28:57 +02:00
Peter Nelson e1a50abcbb Codechange: Move fallback font detection to FontCacheFactory.
Provides a standard interface instead of relying on defines.
2025-08-07 19:38:00 +01:00
Peter Nelson 140f2b291a Codechange: Use ProviderManager interface to register FontCache factories.
This removes use of #ifdefs to select the appropriate loader, and also replaces FontCache self-registration.
2025-08-07 19:38:00 +01:00
Peter Nelson ed1262cab9 Codefix: Move provider instances to static members. (#14501)
Avoids misnaming in global scope.
2025-08-07 09:21:44 +01:00
translators 2b6cb8a2d2 Update: Translations from eints
english (au): 1 change by krysclarke
norwegian (bokmal): 1 change by eriksorngard
chinese (traditional): 2 changes by KogentaSan
greek: 1 change by gh658804
hungarian: 1 change by vargaviktor
german: 190 changes by Wuzzy2
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese (brazilian): 1 change by pasantoro
polish: 3 changes by pAter-exe
2025-08-07 04:48:50 +00:00
Peter Nelson 1ccbd735d8 Codechange: Extract function to draw custom rail station foundations. (#14492) 2025-08-06 23:46:53 +01:00
translators 73a69fd171 Update: Translations from eints
swedish: 55 changes by robert-i
norwegian (bokmal): 8 changes by eriksorngard
spanish (mexican): 1 change by absay
chinese (simplified): 1 change by WenSimEHRP
2025-08-06 04:47:48 +00:00
Mizuki Nguyen 45929c1672 Add: Currency: Vietnamese Dong (#14474) 2025-08-05 20:16:12 +01:00
Peter Nelson cb12a59eed Fix #14495: Dangling references in Industry Production graph window. (#14496) 2025-08-05 20:14:55 +01:00
Peter Nelson 439723b718 Codechange: Use handler structs for NewGRF action map sprite groups. (#14489)
Reduces code duplication for mapping sprite groups across GRF features.
2025-08-05 20:14:30 +01:00
Peter Nelson b0f247df23 Fix #14498: Crash when cloning aircraft with no orders. (#14499) 2025-08-05 20:08:23 +01:00
Tyler Trahan 8c58fb1efd Fix: Missing button beeps (#14470) 2025-08-05 13:57:45 -04:00
translators dea40880a4 Update: Translations from eints
english (us): 5 changes by 2TallTyler
portuguese: 2 changes by jcteotonio
polish: 1 change by pAter-exe
2025-08-05 04:48:13 +00:00
translators d545cec9a2 Update: Translations from eints
english (au): 5 changes by krysclarke
chinese (traditional): 7 changes by KogentaSan
chinese (simplified): 11 changes by WenSimEHRP
korean: 5 changes by telk5093
greek: 7 changes by gh658804
hungarian: 5 changes by vargaviktor
russian: 7 changes by Ln-Wolf
finnish: 5 changes by hpiirai
portuguese: 5 changes by jcteotonio
portuguese (brazilian): 5 changes by pasantoro
polish: 6 changes by pAter-exe
2025-08-04 04:50:00 +00:00
Peter Nelson 5b1c6772da Fix 557fb0bd78, bd57aee3a9: Remove separate x-axis label for industry/town production graph. (#14497)
This is no longer necessary (and is wrong) as it's now part of the horizontal scale selector.
2025-08-03 20:04:17 +01:00
Peter Nelson 5ee186e850 Codefix: Possible use of uninitialised variable. (#14494)
Realistically this can't happen but gcc 12.2 warns.
2025-08-03 10:48:26 +00:00
translators 61c1f2a35b Update: Translations from eints
polish: 6 changes by pAter-exe
2025-08-03 04:48:21 +00:00
Peter Nelson bd57aee3a9 Add: Town cargo history graphs. (#14461) 2025-08-02 23:19:43 +01:00
kojonek2 aac3a5b683 Fix #12900: Join station window will be shown for stations with existing stations in tile gaps 2025-08-02 20:37:02 +02:00
translators 8f9d4150bc Update: Translations from eints
norwegian (bokmal): 11 changes by eriksorngard
english (us): 6 changes by 2TallTyler
korean: 6 changes by telk5093
dutch: 6 changes by Afoklala
2025-08-02 04:46:00 +00:00
translators 4d03b4b618 Update: Translations from eints
portuguese: 1 change by jcteotonio
2025-08-01 04:49:17 +00:00
Loïc Guilloux 2a0e0b4b68 Fix #14490, 0455627d: Incorrect detection of final order when drawing timetable (#14491) 2025-08-01 03:39:02 +02:00
Ian Earle ec7c8dd095 Codefix: Updating doxygen file documentation string for group_sl.cpp (#14488) 2025-07-31 12:39:22 -04:00
Tyler Trahan 48e3aa1027 Fix #14415: Update survey option text when changing setting (#14487) 2025-07-31 06:03:51 -04:00
translators 22bcb8bd46 Update: Translations from eints
english (au): 6 changes by krysclarke
chinese (traditional): 8 changes by KogentaSan
spanish (mexican): 6 changes by absay
greek: 6 changes by gh658804
hungarian: 6 changes by vargaviktor
russian: 6 changes by Ln-Wolf
finnish: 6 changes by hpiirai
portuguese: 6 changes by jcteotonio
portuguese (brazilian): 6 changes by pasantoro
2025-07-31 04:47:22 +00:00
translators fe95782047 Update: Translations from eints 2025-07-30 04:47:35 +00:00
Peter Nelson 557fb0bd78 Change: Add support for different horizontal graph scales. 2025-07-30 01:13:05 +01:00
Peter Nelson d09dfd843c Codechange: Extend industry cargo history to 24 years.
Monthly data is stored for the current 24 months.
Quarterly data is stored for a further 2-6 years.
Yearly data is stored for a further 6-24 years.
2025-07-30 01:13:05 +01:00
translators 8675d7b498 Update: Translations from eints
chinese (simplified): 5 changes by WenSimEHRP
2025-07-29 04:48:22 +00:00
translators 7c8759552a Update: Translations from eints
japanese: 40 changes by akaregi
hungarian: 6 changes by nemesbala
2025-07-28 04:48:20 +00:00
Peter Nelson 614a01907a Codechange: Make functions for click and confirm beeps. (#14484)
Avoids repetition.
2025-07-27 21:54:32 +01:00
Peter Nelson f51067f9f5 Codechange: Give all bridge sprite tables descriptive names. (#14483)
Finish off the work started 17 years ago...
2025-07-27 20:14:37 +01:00
Peter Nelson 009b7cbc57 Fix #14480: Music player playlist buttons are clickable but non-operational in intro menu. (#14482)
In the intro menu the music is hardcoded to be the introduction track. Therefore, prevent these buttons being clickable.
2025-07-27 16:03:47 +01:00
translators 79524af5fc Update: Translations from eints
spanish (mexican): 6 changes by absay
galician: 6 changes by pvillaverde
dutch: 6 changes by Afoklala
polish: 3 changes by pAter-exe
2025-07-27 04:48:17 +00:00
translators d764d59f5a Update: Translations from eints
chinese (traditional): 7 changes by KogentaSan
welsh: 62 changes by Ansbaradigeidfran
2025-07-26 04:46:16 +00:00
Peter Nelson 13759e9f23 Fix: Display GRFID in correct hex format. (#14478) 2025-07-25 08:41:48 +01:00
translators 3e06c69e26 Update: Translations from eints
portuguese: 1 change by jcteotonio
polish: 6 changes by pAter-exe
2025-07-25 04:47:26 +00:00
translators 7eb042feac Update: Translations from eints
english (us): 5 changes by 2TallTyler
2025-07-24 04:46:38 +00:00
Peter Nelson 10eeba86a6 Codechange: Simplify/breakout logic for selecting bridge table sprites.
Move various base offsets to separate functions where they can be reused and documented.

No longer rely on coincidences to select the correct data between bridges and aqueducts.
2025-07-23 20:31:15 +01:00
Peter Nelson d99dad9e9e Codechange: Pass bridge pillar palette/sprite by reference. 2025-07-23 20:31:15 +01:00
translators ae917cb8c6 Update: Translations from eints
vietnamese: 134 changes by MagicalDrizzle
2025-07-23 04:48:20 +00:00
translators 6d95cea73a Update: Translations from eints
english (au): 5 changes by krysclarke
korean: 6 changes by telk5093
greek: 5 changes by gh658804
russian: 5 changes by Ln-Wolf
finnish: 5 changes by hpiirai
portuguese: 5 changes by jcteotonio
portuguese (brazilian): 5 changes by pasantoro
2025-07-22 04:46:31 +00:00
Peter Nelson 921d83c324 Codechange: Unify structures with sprite sub-tile bounds and simplify bounding boxes. (#14424)
Lots of different structs contain variations on sub-tile bounds with different naming. Unify into a single struct that can be inherited and passed directly to AddSortableSpriteToDraw.

At the same time, offsets now work more logically: sub-tile bounds now specify the bounding box, and an offset can be applied to the sprite.
2025-07-22 00:02:00 +01:00
Peter Nelson c69fc76395 Codefix: Rail type bridge offset is not a SpriteID. (#14471) 2025-07-21 20:00:04 +00:00
translators 1d21edde8d Update: Translations from eints
english (us): 1 change by 2TallTyler
2025-07-21 04:47:54 +00:00
Peter Nelson b82ffa3542 Codechange: Decouple glyph map from SpriteFontCache instances. (#14449)
This makes the map independent from the SpriteFontCache instances.
2025-07-20 22:58:43 +01:00
Peter Nelson 8e2df7809b Codechange: Add distinct type to hold pixel drawing colour. (#14457)
This is used for individual pixels as well as line drawing.
2025-07-20 22:57:55 +01:00
Jonathan G Rennison 821784004d Fix: [Linkgraph] Incorrect NodeID to StationID conversion for EraseFlows 2025-07-20 16:07:11 +02:00
Jonathan G Rennison f0447d59d4 Codechange: Use StationID as StationIDStack Titem type 2025-07-20 16:06:03 +02:00
Jonathan G Rennison cbdd358ae8 Codechange: Allow SmallStack Titem type to be non-structural 2025-07-20 16:06:03 +02:00
Peter Nelson 2cdd50f40e Fix 03f5f7145f: Wrong colour used when string POP_COLOURs back to initial colour. (#14468)
Fixing ellipsis colour broke the PUSH_COLOUR/POP_COLOUR system, reverting to the last used colour instead of the initial colour.
2025-07-20 14:30:18 +01:00
Peter Nelson 56942a15c7 Add: Industry accepted and waiting history graphs.
Records amount of cargo accepted, and a rolling average of the waiting amount.

Average waiting samples the waiting amount once per day for each industry, spread out over an economy day.
2025-07-20 14:03:54 +01:00
Peter Nelson 5eeda026a4 Codechange: Allow unused graph ranges to be masked. 2025-07-20 14:03:54 +01:00
Peter Nelson edc5b8ea1f Fix #14464: Invalid string parameter in scenario editor when unable to build industry. (#14465)
Resolved by removing the Build Industry command callback. This was used to display an error message in the scenario editor, however an error is already automatically displayed.
2025-07-20 14:03:29 +01:00
Peter Nelson a8650c6b06 Codechange: Make SpriteCacheCtrlFlags an enum bit set. (#14462)
Due to header dependencies, this requires types to split from the spritecache header.
2025-07-19 23:49:15 +01:00
Peter Nelson 7bb4940ebd Codechange: Use unique_ptr for all pointers in script instance. (#14339)
Removes manual memory management with new/delete.
2025-07-19 09:29:30 +01:00
translators b8e56cd05d Update: Translations from eints
chinese (traditional): 3 changes by KogentaSan
chinese (simplified): 1 change by ahyangyi
2025-07-19 04:43:14 +00:00
Peter Nelson df5237e721 Fix: Vehicle liveries did not update when switching company. (#14456)
Vehicle liveries must be refreshed if "Show vehicle-type specific liveries" is set to "Own company".
2025-07-18 23:43:07 +00:00
Peter Nelson 03f5f7145f Fix f6e78a480d: Truncation ellipsis always drawn in initial colour. (#14451)
Truncation ellipsis is now a layouted line, so we can no longer rely on implicitly using the last set colour.
2025-07-18 18:24:19 +01:00
Peter Nelson 0dc40877fd Codechange: Initialise/reset font cache with FontSizes bitset. (#14448)
Instead of choosing either "Normal/Small/Large" or "Monospace", use an EnumBitSet to allow any combination.
2025-07-18 18:23:28 +01:00
Jonathan G Rennison 03672ed8eb Fix: EngineImageType mismatch between sizing and drawing in preview window (#14455) 2025-07-18 07:02:46 -04:00
Loïc Guilloux 1b01a0636c Fix #14362, 4b677e8256: Don't crash old scripts doing silly instantiation (#14394) 2025-07-17 13:30:33 +02:00
nikolas bccbd64037 Fix: GL error typo (#14376) 2025-07-17 07:18:35 +01:00
Ivan Pravdin 434163aa31 Fix #14277: Aircraft can land when Zeppeliner in the runway (#14317) 2025-07-17 07:26:57 +02:00
translators 55605ae8f2 Update: Translations from eints
english (au): 1 change by krysclarke
catalan: 1 change by J0anJosep
portuguese: 8 changes by jcteotonio
2025-07-17 04:45:55 +00:00
Jonathan G Rennison 7f792e9c5f Codefix: Spelling error in name of GetGRFStringTextStackParameters (#14447) 2025-07-16 09:21:25 -04:00
translators 6b6caa6fa8 Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
greek: 1 change by gh658804
hungarian: 1 change by vargaviktor
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
catalan: 49 changes by J0anJosep
portuguese: 2 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-07-16 04:46:46 +00:00
Peter Nelson 67e56391c7 Fix #8167: No error sub-message when trying to clear protected buildings. (#14444) 2025-07-14 23:23:15 +01:00
Peter Nelson e015e3ecc3 Codefix 3fde611012: AirportMovingDataFlag should be enum class (#14435)
`AirportMovingDataFlag` was changed to use `enum class` naming style, but wasn't actually changed to be `enum class`.
2025-07-14 23:22:51 +01:00
Henry Wilson 8330957a4d Codechange: Remove manual memory management from IcuStringIterator 2025-07-14 23:55:24 +02:00
Peter Nelson 9ce2aca949 Codechange: Get/pass ScriptStorage by reference instead of pointer. 2025-07-14 19:19:29 +01:00
Peter Nelson 55098a2f2e Codechange: Get/pass engine by reference instead of pointer. 2025-07-14 19:19:29 +01:00
Peter Nelson 7ff0c67f77 Codechange: Get/pass script controller by reference instead of pointer. 2025-07-14 19:19:29 +01:00
Peter Nelson b2de1ff66f Fix #14433: Broken road stop drawing due to incorrect modes conversion. (#14434)
The mask was treated as a single RoadStopDrawMode instead of a RoadStopDrawModes bitset.
2025-07-14 17:25:53 +01:00
Loïc Guilloux fc924161ab Fix 0455627d: Don't draw timetable panel if no orders (#14441) 2025-07-14 14:18:54 +00:00
Peter Nelson 61a299bc99 Codechange: Use SpriteID as GlyphID for SpriteFontCache. (#14439)
This reduces the amount of lookups in the character map as rendering a cached layout no longer needs to do so.
2025-07-14 13:28:10 +01:00
Peter Nelson 7546c1acab Codefix f220ed179d: GetUnicodeGlyph takes a unicode character. (#14438)
Previous change erroneously changed type to GlyphID, based on naming. It should actually be char32_t.
2025-07-14 08:01:42 +00:00
Peter Nelson a6143eea21 Codechange: Include more relevant headers for script_storage. (#14437) 2025-07-14 07:49:50 +01:00
Peter Nelson 1d38cbafcb Codechange: Use unique_ptr for ScriptInfo instances.
Replaces raw pointers, slightly.
2025-07-14 00:10:14 +01:00
Peter Nelson 992d58d799 Codechange: Pass ScriptInfo by reference to IsSameScript. 2025-07-14 00:10:14 +01:00
Peter Nelson 8f34b7a821 Codechange: Keep Squirrel engine in unique_ptr. 2025-07-14 00:10:14 +01:00
Peter Nelson bf6d0c4934 Codechange: Don't pre-fill font metrics when loading fonts. (#14436)
Each font cache implementation sets its own metrics based on the loaded font, so there is no need to pre-fill with (unscaled, invalid) default metrics.
2025-07-13 23:38:31 +01:00
Michael Lutz 3c4fb21a5e Fix: [Win32] Link failure with newer Windows SDK version due to WinRT changes. (#14432) 2025-07-13 22:34:32 +01:00
translators baced00e9f Update: Translations from eints
spanish (mexican): 1 change by absay
english (us): 1 change by 2TallTyler
galician: 10 changes by pvillaverde
dutch: 1 change by Afoklala
portuguese: 10 changes by jcteotonio
2025-07-13 04:45:12 +00:00
translators aaf5d39b15 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 1 change by KogentaSan
chinese (simplified): 1 change by WenSimEHRP
korean: 1 change by telk5093
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 1 change by azulcosta
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-07-11 04:45:38 +00:00
Richard Wheeler 7db135099a Fix: Scale graph gridlines and axes with GUI scale (#12131) 2025-07-10 00:05:48 +01:00
Peter Nelson 290144c5c9 Fix #14396: Industry production graph showed zero instead of N/A.
Record the number of valid history records per industry so that the graph avoids showing values which are not present as zero.
2025-07-09 23:02:58 +01:00
Peter Nelson 9b55ad5b8d Codechange: Generic type and container for history statistics. 2025-07-09 23:02:58 +01:00
Peter Nelson f6e78a480d Change: Make truncation ellipsis translatable. (#14417) 2025-07-09 22:55:43 +01:00
Tyler Trahan 259830777c Fix #14375: When loading config, validate timekeeping mode and minutes per year (#14405) 2025-07-09 16:04:38 -04:00
Tyler Trahan 753905ae2d Fix #14377: Make house picker window remember house protection state when closed (#14406) 2025-07-09 14:18:19 +00:00
Peter Nelson d2ee2add28 Codechange: Remove ZOOM_LVL_GUI macro. (#14423) 2025-07-09 11:05:06 +01:00
translators 8de32c4509 Update: Translations from eints
portuguese: 7 changes by jcteotonio
2025-07-09 04:45:29 +00:00
Peter Nelson 77b572619a Codechange: Make use of ZoomLevels range iteration. (#14422) 2025-07-08 14:00:12 +01:00
Peter Nelson b21c8a3450 Codechange: Simplify test for bridges above bridge ramps. (#14421) 2025-07-08 13:55:36 +01:00
translators 6d86c760c6 Update: Translations from eints
hungarian: 9 changes by vargaviktor
2025-07-08 04:43:02 +00:00
translators d44e693b25 Update: Translations from eints
norwegian (bokmal): 17 changes by eriksorngard
spanish (mexican): 6 changes by absay
english (us): 21 changes by 2TallTyler
2025-07-07 04:45:34 +00:00
translators b0ea6c0974 Update: Translations from eints
chinese (traditional): 6 changes by KogentaSan
chinese (simplified): 6 changes by WenSimEHRP
2025-07-06 04:44:01 +00:00
Peter Nelson 84e9e106c1 Codefix: SpriteFontCache was never deleted. (#14414) 2025-07-05 13:22:45 +01:00
translators ebd984d894 Update: Translations from eints
english (au): 3 changes by krysclarke
korean: 6 changes by telk5093
greek: 3 changes by gh658804
russian: 3 changes by Ln-Wolf
dutch: 6 changes by Afoklala
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 3 changes by pasantoro
2025-07-05 04:43:09 +00:00
translators f23845805a Update: Translations from eints
english (au): 6 changes by krysclarke
greek: 7 changes by gh658804
russian: 6 changes by Ln-Wolf
finnish: 25 changes by hpiirai
portuguese: 19 changes by jcteotonio
portuguese (brazilian): 6 changes by pasantoro
polish: 6 changes by pAter-exe
2025-07-04 04:42:38 +00:00
Loïc Guilloux 655291facb Fix #14385: [Strgen] Don't count parameters more than one time (#14413) 2025-07-04 01:10:50 +02:00
Peter Nelson 16b0371c1b Codechange: Remove owner from CargoPayment. (#14411)
Owner can instead be looked up from the CargoPayment's vehicle.

This reduces the size of each CargoPayment slightly.
2025-07-03 23:11:12 +01:00
Heikki Piirainen febba930b0 Fix: Inconsistent capitalization in game settings 2025-07-03 17:11:51 +02:00
translators bf07751ee7 Update: Translations from eints
spanish (mexican): 12 changes by absay
portuguese: 1 change by jcteotonio
2025-07-03 04:44:02 +00:00
Tyler Trahan e578668a93 Fix #14360: Don't reuse strings for Low/Medium/High setting values (#14409) 2025-07-02 06:09:39 -04:00
translators 226b098c55 Update: Translations from eints
portuguese: 17 changes by jcteotonio
2025-07-02 04:42:46 +00:00
Peter Nelson 0391eec189 Change: Improve sprite ellipsis appearance. (#14404)
Make spacing more consistent with periods.
2025-07-01 17:34:26 +01:00
translators b84b641ed9 Update: Translations from eints
hungarian: 7 changes by vargaviktor
2025-07-01 04:45:31 +00:00
Peter Nelson 4fe6adb2dd Fix c2d4098afa: Crash when accessing unconfigurable badge feature. (#14403)
Some features support badges but do not have a way to configure them. Accessing these features could crash the game.
2025-06-30 21:45:08 +01:00
Peter Nelson 36d7e09369 Fix: Include sort button width in content list header minimal size. (#14402) 2025-06-30 20:40:26 +01:00
Peter Nelson 42a9d27fd9 Fix: Don't draw truncation ellipsis if it's too wide. (#14401) 2025-06-30 20:40:04 +01:00
Peter Nelson 80d2194511 Fix: Don't include ellipsis width in RTL truncation offset. (#14400)
This caused the right-most glyphs to be truncated.
2025-06-30 10:03:24 +01:00
translators 7c33a67e7b Update: Translations from eints
galician: 30 changes by pvillaverde
danish: 6 changes by bscargo
2025-06-30 04:44:29 +00:00
translators 9bcf1cf29b Update: Translations from eints
korean: 8 changes by telk5093
polish: 3 changes by pAter-exe
2025-06-29 04:45:43 +00:00
Peter Nelson 4b6d409ee8 Codefix: Out-of-range cargo type passed to a string affected remaining parameters. (#14398)
When the string codes CARGO_TINY, CARGO_SHORT or CARGO_LONG encountered an out-of-range string, they did not read the extra amount parameter. This leads to later parameters being used in the wrong place.

Change the order of operation so that all parameters for these string codes are always read, even if the cargo type is not valid.
2025-06-28 21:50:36 +01:00
translators a37ad181ff Update: Translations from eints
dutch: 12 changes by Afoklala
polish: 12 changes by pAter-exe
2025-06-28 04:42:40 +00:00
Peter Nelson 20ed5be905 Codechange: Use FontSizeToName() instead of switch block. (#14395) 2025-06-27 20:38:39 +00:00
translators f41ad372a3 Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
2025-06-27 04:42:22 +00:00
Peter Nelson bd2430dc94 Codechange: Use FlatSet to avoid trying to add variant parents multiple times. 2025-06-26 08:33:34 +01:00
Peter Nelson 1ddc03b916 Codechange: Give FlatSet insert() a return value.
This now returns an iterator, and whether an insert was performed.

Allows the caller to know if the item was already in the FlatSet without explicitly checking first.
2025-06-26 08:33:34 +01:00
translators 1ff12b6e74 Update: Translations from eints
english (au): 8 changes by krysclarke
chinese (traditional): 23 changes by KogentaSan
chinese (simplified): 12 changes by WenSimEHRP
greek: 8 changes by gh658804
russian: 6 changes by Ln-Wolf
finnish: 8 changes by hpiirai
portuguese: 9 changes by jcteotonio
portuguese (brazilian): 8 changes by pasantoro
2025-06-26 04:43:34 +00:00
Peter Nelson d5ebd20110 Fix 319caef58f: Buildings with non-zero subtile offsets broken in house picker. (#14390)
Partially reverts 319caef58f. Conversion of subtile position was originally correct.
2025-06-25 17:33:15 +00:00
translators b3c96a7785 Update: Translations from eints
english (au): 4 changes by krysclarke
norwegian (bokmal): 4 changes by eriksorngard
chinese (traditional): 4 changes by KogentaSan
korean: 4 changes by telk5093
greek: 4 changes by gh658804
hungarian: 4 changes by vargaviktor
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
2025-06-25 04:42:43 +00:00
Peter Nelson 8f01ae675e Revert 0853c1979b: Button to toggle showing advanced signal types (#9617) (#14219) 2025-06-24 20:18:08 +02:00
Peter Nelson a46a3a97f3 Change: New company face definition system and UI. (#14319)
Bits used by company faces are now defined by a variable system instead of being hardcoded, allowing future expansion.

The four face types covering gender and skin colour are now separate face styles with their own definitions.
2025-06-24 07:59:49 +01:00
translators ebc74c8905 Update: Translations from eints 2025-06-24 04:43:09 +00:00
Jonathan G Rennison e436b32468 Codechange: Remove now unused sprite cache memory error strings 2025-06-23 21:22:37 +01:00
Peter Nelson 7744f49a9e Change: Simplify sprite cache memory management
* Remove custom allocator
* Use std::unique_ptr for sprite data
* Perform LRU cache eviction in a single pass
2025-06-23 21:22:37 +01:00
Peter Nelson 1d67094863 Add: Buttons to change picker preview image height. (#14373)
Adjusted height is remembered per picker type, but not saved.
2025-06-23 08:24:49 +01:00
Peter Nelson 8901f9adca Fix #14361: Removing a badge filter did not clear it. (#14379) 2025-06-23 08:24:03 +01:00
translators c15568be5f Update: Translations from eints
ukrainian: 20 changes by StepanIvasyn
latvian: 13 changes by lexuslatvia
2025-06-22 04:43:50 +00:00
Patric Stout 3571f77d46 Codechange: typo in GoG's workflow (#14386) 2025-06-21 09:25:39 +00:00
dependabot[bot] 1b2a3b0cb1 Upgrade: Bump Apple-Actions/import-codesign-certs in the actions group (#13945)
Bumps the actions group with 1 update: [Apple-Actions/import-codesign-certs](https://github.com/apple-actions/import-codesign-certs).

Updates `Apple-Actions/import-codesign-certs` from 3 to 5
- [Release notes](https://github.com/apple-actions/import-codesign-certs/releases)
- [Commits](https://github.com/apple-actions/import-codesign-certs/compare/v3...v5)

---
updated-dependencies:
- dependency-name: Apple-Actions/import-codesign-certs
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-21 09:18:32 +00:00
Peter Nelson 5766ba51d7 Codefix: Clean up incorrect indentation for multi-line comments. (#14383) 2025-06-20 19:01:44 +01:00
translators a927925996 Update: Translations from eints
portuguese: 13 changes by jcteotonio
2025-06-20 04:42:53 +00:00
translators de6e420917 Update: Translations from eints
ukrainian: 11 changes by StepanIvasyn
portuguese: 18 changes by jcteotonio
2025-06-19 04:43:06 +00:00
Adam Zmuda 9238f508eb Fix #14081: Check if removed item is a savegame (#14371) 2025-06-18 10:05:18 +02:00
translators 7aa4e7fc58 Update: Translations from eints
ukrainian: 12 changes by StepanIvasyn
portuguese: 8 changes by jcteotonio
2025-06-18 04:43:22 +00:00
Peter Nelson c882ad5142 Fix: Allow object picker to resize if there are no classes. (#14372) 2025-06-17 19:04:34 +01:00
Peter Nelson e4cf6ca0ba Fix: Mis-sized widgets due to missing widget fill. (#14370)
In most places where we calculate and set widget resize step we neglect
to set widget fill step to match. Initial widget sizing uses fill step
instead of resize step, which means the initial size may not be a
multiple of the resize step as intended. In particular this will cause
WWT_MATRIX to be misrendered.

Whether or not this matters depends on the widget type being resized and
the window layout, however for consistency always set fill step to the
same as resize step when calculating.
2025-06-17 17:40:11 +01:00
Peter Nelson 4144865c73 Change: Tweak layout of music player widgets.
This removes some magic numbers and gets rid of spacers.
2025-06-17 08:54:08 +01:00
Peter Nelson 7ec78e94db Fix: Don't include height of blank text in frame and inset widgets. 2025-06-17 08:54:08 +01:00
translators dd826ea49c Update: Translations from eints
spanish: 13 changes by Unely
portuguese: 30 changes by jcteotonio
2025-06-17 04:41:57 +00:00
Peter Nelson 009b68caeb Codechange: Use toolbar minimal sizing with intro menu buttons. (#14368)
The intro menu buttons use toolbar icons, so use SetToolbarMinimalSize() on them for consistency.
2025-06-17 01:12:39 +01:00
Colin Caine 5f8e04457e Codechange: Use default OnHotkey handler for focusing editboxes (#14358) 2025-06-16 22:25:54 +02:00
Henry 56bc391763 Codechange: Remove manual memory management of AIScannerInfo::info_dummy (#14338)
Co-authored-by: Henry Wilson <henry@henryandlizzy.uk>
2025-06-16 10:30:22 +01:00
translators ea410cfe85 Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
chinese (simplified): 69 changes by WenSimEHRP
ukrainian: 57 changes by StepanIvasyn
portuguese: 35 changes by jcteotonio
2025-06-16 04:43:21 +00:00
Henry c71515e790 Codechange: Remove manual memory management from CountArticulatedParts (#14336)
Co-authored-by: Henry Wilson <henry@henryandlizzy.uk>
2025-06-15 21:38:00 +01:00
Peter Nelson cdd555edd5 Codechange: Use vector with unique_ptr instead of linked-list for base set lists. (#14332) 2025-06-15 21:32:29 +01:00
Michael Lutz e163aab892 Fix: Train path reservations on different railtypes could join leading to train crashes. (#14366)
This could happen if the compatibility between the railtypes was not symmetric. If for
example a reservation of a first train ended at a railtype transition with an already present
reservation on the other side, a reversing train could end up crashing with the first train.
2025-06-15 22:09:04 +02:00
translators 98b488f366 Update: Translations from eints
chinese (traditional): 3 changes by KogentaSan
chinese (simplified): 108 changes by WenSimEHRP
ukrainian: 21 changes by StepanIvasyn
dutch: 9 changes by Afoklala
portuguese: 177 changes by jcteotonio
2025-06-15 04:42:32 +00:00
Loïc Guilloux d0b56022d8 Fix #14362, 4b677e8256: Class with non static methods may have a default constructor (#14363) 2025-06-14 23:39:22 +02:00
Peter Nelson 1cd0391926 Fix #14356, ff7eb996e6: Incorrect sprite group chosen for stations and road stops. (#14359) 2025-06-14 13:38:45 +01:00
glx22 8e3acbfa84 Codechange: Deduplicate DefSQClass::DefSQ[Static]Method() 2025-06-14 12:41:39 +02:00
glx22 90e21bc713 Codechange: Remove useless SQConstruct parameters 2025-06-14 12:41:39 +02:00
glx22 4b677e8256 Codechange: Don't export default constructors 2025-06-14 12:41:39 +02:00
glx22 ccffbb4142 Codechange: Remove manual param count for constructors too 2025-06-14 12:41:39 +02:00
glx22 6d601e2eb1 Codechange: Use more descriptive variable names 2025-06-14 12:41:39 +02:00
translators a1786fa1f4 Update: Translations from eints
norwegian (bokmal): 13 changes by eriksorngard
ukrainian: 28 changes by StepanIvasyn
portuguese: 16 changes by jcteotonio
polish: 1 change by pAter-exe
2025-06-13 04:42:21 +00:00
Jonathan G Rennison d3e4e07daa Codechange: Remove ReferenceThroughBaseContainer 2025-06-12 18:50:49 +01:00
Jonathan G Rennison 63f1c2aa3a Codechange: Use TypedIndexContainer for typed index containers
Instead of ReferenceThroughBaseContainer
2025-06-12 18:50:49 +01:00
Jonathan G Rennison d0e49a297f Codechange: Add TypedIndexContainer adapter type
This is equivalent in functionality to ReferenceThroughBaseContainer,
except only for the correct index type, instead of any type matching
ConvertibleThroughBase.
The also serves to unambiguously document the index type at the
point of definition of the container.
2025-06-12 18:50:49 +01:00
Peter Nelson 401ebed03a Add: Show and sort online content version in list. (#14355) 2025-06-12 18:27:16 +01:00
translators b012d9e3dc Update: Translations from eints
danish: 18 changes by bscargo
portuguese: 23 changes by jcteotonio
2025-06-12 04:42:39 +00:00
Peter Nelson 28cc0079f2 Codechange: Create ScriptAllocator with make_unique instead of new. (#14340) 2025-06-11 23:28:08 +01:00
Peter Nelson b2d69ae606 Codechange: Use AutoRelease to simplify cleanup after FontConfig calls. (#14354) 2025-06-11 21:24:31 +01:00
Peter Nelson 9c16603da6 Codechange: Add AutoRelease helper to use function as unique_ptr deleter. (#14353)
This allows passing the function as a template parameter instead of requiring a custom deleter functor.
2025-06-11 20:13:49 +01:00
translators f8776b0a6f Update: Translations from eints
hungarian: 9 changes by vargaviktor
finnish: 13 changes by hpiirai
ukrainian: 1 change by imlystyi
tamil: 2 changes by merni-ns
lithuanian: 1 change by khamper
spanish: 22 changes by Unely
portuguese: 46 changes by jcteotonio
2025-06-11 04:42:30 +00:00
Peter Nelson f2318c35db Fix 0455627d16: Order backups were no longer created when selling vehicles. (#14352) 2025-06-10 18:03:05 +01:00
Peter Nelson c702e05517 Codechange: Replace C-casts for FontConfig with helper functions. (#14349)
Add `ToFcString()` and `FromFcString()` to remove C-style casts and make reinterpret_casts safer and clearer.
2025-06-10 17:11:22 +01:00
Peter Nelson 8f5ac84a3d Fix 20738865f0: Remove colour codes from Game Options strings. (#14348)
When merging the game options and settings windows, colour codes were removed from strings. This change didn't get propagated to all translations.
2025-06-10 17:10:57 +01:00
translators 8c90be8c9f Update: Translations from eints
english (au): 9 changes by krysclarke
spanish (mexican): 10 changes by absay
english (us): 9 changes by 2TallTyler
korean: 13 changes by telk5093
lithuanian: 3 changes by khamper
portuguese: 13 changes by jcteotonio
polish: 9 changes by pAter-exe
2025-06-10 04:42:12 +00:00
Peter Nelson 4f18c18735 Fix: Remove U+200C characters from Lithuanian translation. (#14347)
This character prevents OpenTTD Sans being used.
2025-06-09 11:53:31 +00:00
translators 3908df5fbe Update: Translations from eints
chinese (traditional): 9 changes by KogentaSan
greek: 9 changes by gh658804
russian: 9 changes by Ln-Wolf
portuguese (brazilian): 9 changes by pasantoro
2025-06-09 04:43:26 +00:00
SamuXarick ac8b236885 Fix: [Script] Make ScriptOrder functions aware of road waypoints (#13419) 2025-06-08 16:49:36 -04:00
SamuXarick 484f18f987 Codechange: Code style changes to AI/GS GUI files (#13665) 2025-06-08 16:48:36 -04:00
SamuXarick 893a75f2c0 Codechange: Iterate with VehiclesOnTile when attaching a just bought wagon to a locomotive (#14284) 2025-06-08 16:45:58 -04:00
Peter Nelson de660cba02 Change: Consistent toolbar sizes with dedicated NWidgetParts. (#14344)
Add SetToolbarSpacerMinimalSize() and SetToolbarMinimalSize() NWidgetParts and use to make toolbar button sizes consistent.
2025-06-08 18:13:47 +00:00
Peter Nelson 7c9c2aec49 Codechange: Use vehicle tile hash to search for free wagons. (#14343)
Avoids iterating the vehicle pool.
2025-06-08 19:07:43 +01:00
translators 4b18622c4e Update: Translations from eints
chinese (traditional): 4 changes by KogentaSan
english (us): 4 changes by 2TallTyler
french: 4 changes by ottdfevr
2025-06-08 04:43:18 +00:00
Peter Nelson 2f725d1e85 Add: Hover on graph legend to highlight line. 2025-06-07 15:50:25 +01:00
Peter Nelson 10841ea3fd Codechange: Add constant for common blink interval. 2025-06-07 15:50:25 +01:00
Peter Nelson ecafbf884e Add: Allow separate expansion of town buildings and roads in scenario editor. (#14341) 2025-06-07 13:56:43 +00:00
translators 6b5cde463a Update: Translations from eints
english (au): 4 changes by krysclarke
spanish (mexican): 3 changes by absay
greek: 4 changes by gh658804
hungarian: 4 changes by vargaviktor
russian: 5 changes by Ln-Wolf
dutch: 4 changes by Afoklala
portuguese (brazilian): 4 changes by pasantoro
polish: 4 changes by pAter-exe
2025-06-07 04:40:06 +00:00
Loïc Guilloux 9339b8270c Fix: Wrong error message about script Save() returned value (#14334) 2025-06-06 19:01:50 +02:00
Peter Nelson a6de925ba6 Fix #14333, 20d83677eb: Incorrect change from index to range iteration. (#14335) 2025-06-06 16:57:26 +00:00
glx22 938acbe6ef Add: [Script] Cloning ScriptList 2025-06-05 22:37:33 +02:00
glx22 7200e7f509 Add: [Script] Framework for cloning selected ScriptObject 2025-06-05 22:37:33 +02:00
Jonathan G Rennison 7dcc932d44 Fix: Drag drop line position when dragging NewGRF from file to active panel (#14316) 2025-06-05 14:09:51 -04:00
Peter Nelson 48764b0fed Add: Badge dropdown filters to picker window. 2025-06-05 17:55:24 +01:00
Peter Nelson 7b60e5ccad Add: Badge dropdown filters to build vehicle window. 2025-06-05 17:55:24 +01:00
Peter Nelson 25f1c97bea Change: Add badge dropdown filters and configuration. 2025-06-05 17:55:24 +01:00
Peter Nelson 308ce39747 Codechange: Add DropDownUnselectable component.
This component makes a drop down item unselectable, as it says on the tin.
2025-06-05 17:55:24 +01:00
Peter Nelson 82f5af7ecd Codechange: Allow all widget types to have a WidgetID index. 2025-06-05 17:55:24 +01:00
glx22 31fbb17c5b Codechange: Replace ScriptObject::[SG]etAllowDoCommand with ScriptObject::DisableDoCommandScope 2025-06-05 01:39:40 +02:00
glx22 4beb23af30 Codechange: TicToc can now accumulate and output every tick 2025-06-04 23:59:06 +02:00
glx22 fca75fd06a Codechange: Use brace counting to detect end of class in squirrel-exporter 2025-06-04 19:48:27 +02:00
glx22 6482e16564 Codechange: Deduplicate namespace opening in squirrel-exporter 2025-06-04 19:48:27 +02:00
glx22 e0d8158957 Codechange: Don't use literal tabs in squirrel-exporter 2025-06-04 19:48:27 +02:00
Owen Rudge b0dbe631b3 Codechange: [CI] Azure Code Signing has been rebranded 'Trusted Signing' 2025-06-04 09:16:18 +01:00
Peter Nelson 2e78c24ba3 Codefix: Use bitset .None() or .Any() instead of comparing against an empty bitset. (#14327) 2025-06-04 07:31:44 +01:00
translators 8f10f9fb5a Update: Translations from eints
finnish: 1 change by hpiirai
2025-06-04 04:43:00 +00:00
Peter Nelson 5bf31a431e Fix 4c8f1b0f81: Hidden-by-facility station signs were not ignored when handling clicks. (#14326) 2025-06-03 20:53:53 +00:00
Loïc Guilloux 9e8fc8da48 Fix: [Script] SQOpsLimiter had no effect for native valuator/filter (#14322) 2025-06-03 14:05:29 +02:00
Peter Nelson ea0b3983a5 Codechange: Deduplicate common parts of graph windows with cargo legends.
This unifies handling on the cargo selected to avoid having to rewrite it for every cargo graph window.
2025-06-02 17:40:39 +01:00
Peter Nelson 43d57a6b7e Codefix 5c45738613: Rename CompanyGraphWindow to BaseCompanyGraphWindow.
This makes it clearer that it isn't a final graph window.
2025-06-02 17:40:39 +01:00
translators 6d0dd90e20 Update: Translations from eints
korean: 2 changes by telk5093
portuguese: 2 changes by jcteotonio
2025-06-02 04:43:26 +00:00
Peter Nelson b7b2b57805 Fix bd1a3fe0b7: Crash if loading compatibility scripts fails. (#14318) 2025-05-31 19:59:23 +01:00
Peter Nelson 4ab48f34f5 Fix 5664b1e2f6: Upgrade button in NewGRF window no longer worked. (#14315) 2025-05-31 08:20:55 +00:00
translators 621c031307 Update: Translations from eints
dutch: 4 changes by Afoklala
2025-05-31 04:39:26 +00:00
Loïc Guilloux 2cd3c8db86 Codechange: [Script] Don't report multiple errors on valuator/filter failure (#14303) 2025-05-30 14:38:41 +02:00
translators 10c159a79f Update: Translations from eints
norwegian (bokmal): 4 changes by eriksorngard
korean: 4 changes by telk5093
2025-05-29 04:47:48 +00:00
Peter Nelson c233e5ee2c Codechange: Tweak layouts of graph windows to reduce spacers. 2025-05-28 18:40:33 +01:00
Peter Nelson 5c45738613 Codechange: Improve inheritance of graph windows.
BaseGraphWindow contains parts that are only relevant to company-series data -- these are moved to a separate class.
2025-05-28 18:40:33 +01:00
translators 3aca5d62a8 Update: Translations from eints
spanish (mexican): 4 changes by absay
chinese (simplified): 4 changes by WenSimEHRP
hungarian: 5 changes by vargaviktor
french: 27 changes by glx22
polish: 4 changes by pAter-exe
2025-05-28 04:47:09 +00:00
Peter Nelson 7c9393e822 Codechange: Remove terminator from airport tile lists. (#14306) 2025-05-27 20:23:59 +01:00
translators 808af15975 Update: Translations from eints
english (au): 4 changes by krysclarke
chinese (traditional): 5 changes by KogentaSan
english (us): 5 changes by 2TallTyler
greek: 4 changes by gh658804
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
latvian: 6 changes by lexuslatvia
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
2025-05-27 04:48:27 +00:00
Peter Nelson e2d066e5d3 Codefix: Effect vehicles don't use v->tile, so shouldn't be in the vehicle tile hash. (#14302) 2025-05-26 21:45:46 +01:00
translators e23a591a1e Update: Translations from eints
galician: 10 changes by pvillaverde
turkish: 20 changes by BeratSJ
latvian: 2 changes by lexuslatvia
2025-05-26 04:49:25 +00:00
Peter Nelson b042e7a439 Codefix: Prefer static inline const keyword order. (#14301) 2025-05-25 20:32:56 +01:00
Peter Nelson 948ceb3b17 Add: Button to configure badges in build picker window. 2025-05-25 09:13:05 +01:00
Peter Nelson f28dc3cca4 Add: Button to configure badges in build vehicle window. 2025-05-25 09:13:05 +01:00
Peter Nelson c2d4098afa Add: Configuration of NewGRF badges. 2025-05-25 09:13:05 +01:00
Peter Nelson daef052329 Add: Generic "configure list/view" vertical ellipsis icon. 2025-05-25 09:13:05 +01:00
Peter Nelson 29970fb496 Codechange: Add DropDownToggle component. 2025-05-25 09:13:05 +01:00
Peter Nelson 6e90b828c6 Codechange: Add CentreTo Rect method. 2025-05-25 09:13:05 +01:00
Peter Nelson c213218b66 Codechange: Pass click state to Dropdown Draw() function.
This allows drawing to change depending on last click position.
2025-05-25 09:13:05 +01:00
Peter Nelson 984d864c72 Codechange: Add OnClick handler for dropdown items.
This allows each dropdown item to indicate if something different should happen depending on where in the item was clicked.
2025-05-25 09:13:05 +01:00
Peter Nelson 04e07dff84 Codechange: Add Up/Down buttons, to fit in with the settings-button style. 2025-05-25 09:13:05 +01:00
translators b82e32c360 Update: Translations from eints
norwegian (bokmal): 1 change by eriksorngard
spanish (mexican): 1 change by absay
chinese (simplified): 1 change by WenSimEHRP
korean: 1 change by telk5093
danish: 68 changes by bscargo
2025-05-25 04:48:20 +00:00
Loïc Guilloux 5e765a2787 Codechange: [CMake] Use ".sq.hpp" instead of ".hpp.sq" for API exports (#14297) 2025-05-24 22:38:37 +02:00
Kuhnovic 34c0b09764 Codechange: Removed T prefix from water region related types. (#14290) 2025-05-24 18:12:16 +02:00
Loïc Guilloux fea120a710 Fix #14295, 0455627d16: v->cur_implicit_order_index is never INVALID_VEH_ORDER_ID (#14296) 2025-05-24 13:53:51 +00:00
translators c366e6a48e Update: Translations from eints
chinese (simplified): 1 change by WenSimEHRP
dutch: 1 change by Afoklala
2025-05-24 04:44:57 +00:00
Peter Nelson b42abfbefc Fix 0455627d16: Incorrect script order position mapping. (#14294) 2025-05-23 19:55:22 +01:00
Kuhnovic 180ec6505b Codechange: Use strong types for water regions. (#14289) 2025-05-23 20:54:42 +02:00
Peter Nelson 0455627d16 Codechange: Move ownership of Orders to OrderList. (#13948)
Removes the orders pool, and orders are now stored directly in each OrderList.

Iterating orders now no longer needs to traverse a linked-list, all orders in an OrderList are sequential.
2025-05-23 10:36:28 +01:00
Peter Nelson 7344dfe651 Change: Reflow Textfile window content incrementally.
This avoids a stall when reflowing a long text file with some truetype fonts.
2025-05-23 07:42:10 +01:00
Peter Nelson 46b745a06a Codechange: Use a helper method to test if text file window is wrapped. 2025-05-23 07:42:10 +01:00
Peter Nelson 940071a5f2 Codechange: Add alternating iterator to take elements from middle of range. 2025-05-23 07:42:10 +01:00
Peter Nelson 780c26237f Codechange: Add OnScrollbarScroll window event, called when a scrollbar position changes. 2025-05-23 07:42:10 +01:00
translators 321f7e8683 Update: Translations from eints
swedish: 3 changes by joeax910
2025-05-23 04:45:57 +00:00
Peter Nelson 1064309ecf Change: Don't measure group name widths in company livery window. (#14291)
Measuring the name width did not also take account of indentation levels so didn't prevent cropping, and the window can be resized anyway.

This avoids a potential bottleneck due to layouting group names if there are a lot of groups present.
2025-05-22 22:57:50 +01:00
SamuXarick 5fef32bde7 Change: [Script] Move GSStation::GetOwner to GSBaseStation::GetOwner (#13406)
* Add: [Script] GSBaseStation::GetOwner

Added method for Game Scripts to retrieve the owner of a basestation.

* Cleanup: [Script] Remove ScriptStation::GetOwner

Due to class inheritance, GSStation::GetOwner and GSWaypoint::GetOwner can both reach GetOwner defined at GSBaseStation.
2025-05-22 13:47:04 +02:00
translators 467f832c2f Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 10 changes by KogentaSan
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
latvian: 1 change by lexuslatvia
portuguese: 1 change by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 10 changes by pAter-exe
2025-05-22 04:47:11 +00:00
Peter Nelson 5fe6578f64 Codechange: Improve performance of exclusive preview engine test. (#14270)
Check group statistics to test if a company has built an exclusive preview engine.

This improves performance by avoiding iterating the vehicle pool.
2025-05-21 21:19:38 +01:00
Peter Nelson 9f190aa534 Codechange: Use group's children list to improve performance of group UI. 2025-05-21 19:50:07 +01:00
Peter Nelson 000a79c093 Codechange: Improve performance of evaluating group hierarchy.
Store a list of child groups in each group, to avoid having to iterate the group pool to find its children.
2025-05-21 19:50:07 +01:00
SamuXarick 8f3f25de4b Codefix: Missing 'this->' in VehiclesNearTileXY::Iterator::Iterator (#14288) 2025-05-21 20:28:47 +02:00
Peter Nelson 1d8db2223f Fix #14234, 5aa4ad5135: Crash due to unexpected NUL char in string. (#14235)
Gracefully handle an unexpected NUL character in non-debug builds.
2025-05-21 18:47:04 +01:00
translators 82876c25e0 Update: Translations from eints 2025-05-21 04:46:46 +00:00
Peter Nelson a2addf0fe7 Fix: Clear rail vehicle flipped flag if reverse probability callback returns false. (#14281)
This now distinguishes between not-flipped and callback not implemented.
2025-05-20 23:03:55 +01:00
Peter Nelson acf594a7b7 Fix #14271, 7fd0e6c27d: Crash due to incorrect parameter index in string. (#14272) 2025-05-20 23:03:27 +01:00
Loïc Guilloux 4b1b2a4310 Change: [Script] Don't allow scripts to instantiate ScriptEvent (#14276) 2025-05-20 15:37:05 +02:00
frosch 2926179d02 Fix: Restore the behaviour when entering numbers in query windows: clamp integers out of range to the maximum valid value. 2025-05-20 12:57:30 +02:00
frosch c1389c77b2 Codechange: ParseInteger optionally clamps out-of-range values, instead of treating them as invalid. 2025-05-20 12:57:30 +02:00
translators ecadf1b322 Update: Translations from eints
hungarian: 4 changes by meskobalazs
2025-05-20 04:46:13 +00:00
Peter Nelson ce83f583bc Codechange: Use EnumBitSet for VehicleRailFlags. (#14280) 2025-05-19 18:56:45 +01:00
Peter Nelson 77d6f6c69f Codechange: Make ContentType::State an enum class. (#14279) 2025-05-19 17:11:28 +01:00
SamuXarick ad3a34e9ef Add: [Script] ScriptVehicleList_Waypoint (#13456)
Creates a list of vehicles that have orders to a given waypoint.
2025-05-19 14:48:17 +02:00
Loïc Guilloux 1b0fd0e6fd Fix b2c57123: [Script] Conversion from ScriptEvent to ScriptEventCompanyTown subclasses (#14274) 2025-05-18 15:40:47 +02:00
translators 9bbc525e53 Update: Translations from eints
catalan: 17 changes by J0anJosep
2025-05-18 04:50:09 +00:00
Peter Nelson 940a7127f8 Fix f8bdc1e612: Empty first parameter of EncodedString was skipped. (#14273)
This would place the remaining parameters one position too early.
2025-05-17 22:55:48 +00:00
translators 617169c1c9 Update: Translations from eints
norwegian (bokmal): 2 changes by eriksorngard
english (us): 9 changes by 2TallTyler
romanian: 3 changes by The-Bober
dutch: 2 changes by Afoklala
2025-05-17 04:44:32 +00:00
translators 521d0465d9 Update: Translations from eints
korean: 2 changes by telk5093
hungarian: 26 changes by meskobalazs
2025-05-16 04:47:27 +00:00
translators 6c84dd1f32 Update: Translations from eints
persian: 371 changes by realsepehrz
romanian: 49 changes by The-Bober
portuguese: 2 changes by azulcosta
2025-05-15 04:46:38 +00:00
Peter Nelson c8a336f760 Codechange: Move GetNthSetBit() to BaseBitSet.
This now returns the correct type, or std::nullopt instead of -1.
2025-05-14 07:22:12 +01:00
Peter Nelson c50ee282f9 Codechange: EnumBitSet bits can be iterated directly. 2025-05-14 07:22:12 +01:00
Peter Nelson 66c16a1d1f Codechange: Add Count() method to BaseBitSet. 2025-05-14 07:22:12 +01:00
translators ecc3438519 Update: Translations from eints
polish: 2 changes by pAter-exe
2025-05-14 04:46:05 +00:00
Loïc Guilloux c16d5f3a8d Change: [Script] ScriptVehicleList_Station accepts an optional VehicleType parameter (#14260) 2025-05-13 16:41:23 +02:00
Peter Nelson 87fa1e41d5 Codechange: Use std::byte for sound buffers. 2025-05-13 14:51:17 +01:00
Peter Nelson 5585363407 Codechange: Use std::byte for glyph sprite buffer. 2025-05-13 14:51:17 +01:00
translators c718858999 Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 2 changes by KogentaSan
spanish (mexican): 2 changes by absay
chinese (simplified): 11 changes by WenSimEHRP
greek: 2 changes by gh658804
hungarian: 2 changes by vargaviktor
persian: 17 changes by realsepehrz
russian: 2 changes by lexuslatvia
finnish: 4 changes by hpiirai
latvian: 2 changes by lexuslatvia
portuguese (brazilian): 2 changes by pasantoro
2025-05-13 04:47:36 +00:00
Peter Nelson 156f98ba06 Fix #14256, dfd9fbf873: Company finance windows not updated when paused. (#14258)
Refresh company finance windows via a WindowTimer instead of in game loop.

As the invalidation affects multiple windows this is a global timer instead of window-specific.
2025-05-13 01:23:27 +01:00
Peter Nelson bc778545b3 Fix 0829604b4f: Dragging of selected order was still not possible. (#14259)
Check click_count condition earlier so that drag and drop is activated.
2025-05-13 01:22:58 +01:00
Peter Nelson 431e57d087 Fix 0ce30d05c8: Replacing a dropdown list could reposition it partially off-screen. (#14261) 2025-05-13 01:22:45 +01:00
Peter Nelson d37d4c18b5 Change: Remove Apply button from NewGRF config window when unneeded. (#14254)
When configuring NewGRFs outside of a game, the changes are always applied when the window is closed, even if the Apply button is not used.

The Apply button only needs appear during a game when changes are not automatically applied.
2025-05-13 01:22:23 +01:00
Jonathan G Rennison d107b7c8c0 Fix 3cf9b159: Incorrect tile colour in smallmap for snowy MP_CLEAR tiles in vegetation mode
See: #13659
2025-05-12 19:04:43 +02:00
Peter Nelson d9247fa1a0 Change: Remove extra close buttons from some windows. (#14124)
All windows have an X button to close it, so remove the redundant close buttons.
2025-05-12 14:54:44 +01:00
frosch a62081d79e Fix #14251: Out-of-bounds writes via TextRefStack. (#14255) 2025-05-12 13:59:33 +02:00
Peter Nelson 0aacd7acb3 Codechange: Use GrfSpecFeature type instead of uint8_t. (#14253) 2025-05-12 08:44:39 +01:00
translators 2516c435b7 Update: Translations from eints
swedish: 9 changes by joeax910
2025-05-12 04:47:40 +00:00
Rubidium 568b70e556 Codechange: replace memmove with std::move(_backwards) 2025-05-11 21:51:57 +02:00
Rubidium 3cd040ffe9 Codechange: unify moving of pixels in the blitters 2025-05-11 21:51:57 +02:00
Peter Nelson b38527ca05 Change: Move OpenTTD version to intro viewport. (#14233)
This stops the length of the game version from affecting the main menu.
2025-05-11 20:01:22 +01:00
Rubidium 03116ea878 Codechange: remove now unused cpp_sizeof 2025-05-11 13:48:23 +02:00
Rubidium 02d8ae018c Codechange: simplify getting the value of a NewGRF property 2025-05-11 13:48:23 +02:00
Rubidium f2b48bad79 Codechange: remove last (hidden) users of memset 2025-05-11 06:07:01 +02:00
frosch c037722cb5 Fix 51a7edd: NewGRF debug sprite picker was broken. (#14246) 2025-05-10 20:27:43 +02:00
Rubidium a48a5f0cc6 Codechange: replace memcpy with std::copy_n 2025-05-10 16:50:58 +02:00
Loïc Guilloux a45f23686d Fix #14241, 6e10584: Invalid string parameters in subsidies list window (#14243) 2025-05-09 18:08:17 +02:00
Rubidium f8aceb6c37 Codechange: use value initialisation over memset 2025-05-09 17:20:41 +02:00
Rubidium 7981fcb297 Codechange: use std::fill_n over memset 2025-05-09 17:20:41 +02:00
Rubidium 92bd78dd25 Codechange: use std::ranges::fill over memset 2025-05-09 17:20:41 +02:00
Rubidium 96873dee63 Codechange: use std::array.fill over memset 2025-05-09 17:20:41 +02:00
frosch 228f9ca941 Fix #13854: 40bpp-anim blitter recolouring failed for 32bpp pixels without mask channel. (#14242) 2025-05-09 17:16:29 +02:00
frosch a277cb2b4c Change: [NewGRF] Increase the textstack for all callbacks to 16 registers. 2025-05-09 12:39:11 +02:00
frosch c6fa5022cb Add: [NewGRF] All callbacks returning D0xx strings, have now the option to return any string id via register 0x100. 2025-05-09 12:39:11 +02:00
frosch 84bc78fd8f Add: [NewGRF] Special value 0x7FFE for VarAction2 results specifying 'return calculated result'. 2025-05-09 12:38:58 +02:00
frosch 9d32087236 Add: [NewGRF] Special value 0x7FFF for Action2 references specifying explicit 'callback/sprite-resolving failed'. 2025-05-09 12:38:58 +02:00
translators b1cdf5024f Update: Translations from eints
spanish (mexican): 7 changes by absay
2025-05-09 04:46:47 +00:00
Peter Nelson ae1f469aac Fix #14234, 16b4e73: Skip PLURAL data if parameter is invalid. (#14236) 2025-05-08 09:06:56 +01:00
glx22 1d18b4a80b Codechange: remove core/mem_func.hpp 2025-05-08 09:33:18 +02:00
glx22 aba5e1258e Codechange: use assignment over MemCpyT 2025-05-08 09:33:18 +02:00
glx22 6356311fbc Codechange: use std::copy_n over MemCpyT 2025-05-08 09:33:18 +02:00
glx22 a013f81120 Codechange: use std::array's fill over memset 2025-05-08 09:33:18 +02:00
glx22 82244779eb Codechange: use C++ initialisation over MemSetT 2025-05-08 09:33:18 +02:00
translators 6680169251 Update: Translations from eints 2025-05-08 04:46:44 +00:00
Peter Nelson 2feba80fd7 Codechange: Codestyle fixes for elrail code. 2025-05-07 20:34:33 +01:00
Peter Nelson 4a8dd494ee Codechange: Don't abbreviate TileLocationGroup type name. 2025-05-07 20:34:33 +01:00
frosch d00196cd65 Change: Rearrange buttons in the intro screen, remove unnecessary ones. 2025-05-07 18:41:48 +02:00
frosch 4111ce2698 Add: WWT_IMGTEXTBTN, WWT_PUSHIMGTEXTBTN 2025-05-07 18:41:48 +02:00
Peter Nelson a7019b859c Codechange: Use DiagDirections when checking for flat buildable tiles. 2025-05-07 17:31:29 +01:00
Peter Nelson aa9e5b38cd Codechange: Use DiagDirections when drawing level crossings. 2025-05-07 17:31:29 +01:00
Peter Nelson 1ac9f24f38 Codechange: Use (Diag)Directions when drawing catenary. 2025-05-07 17:31:29 +01:00
Peter Nelson 87544eff0c Codechange: Use DiagDirections to collect rail fence data. 2025-05-07 17:31:29 +01:00
Peter Nelson 1cbc4da054 Codechange: Use Directions for water flooding data. 2025-05-07 17:31:29 +01:00
Peter Nelson 968bb8961e Codechange: Add Directions and DiagDirections EnumBitSets. 2025-05-07 17:31:29 +01:00
Peter Nelson e0dbbbb032 Codechange: Add Reset() and missing &=/|= operators for BaseBitSet. 2025-05-07 17:31:29 +01:00
Peter Nelson c4d033967b Codechange: Remove some unnecessary includes from network files. (#14226) 2025-05-07 16:46:14 +01:00
frosch 22fedca77e Codechange: Integrate ResolverObject::ResetState() into DoResolve(), no need to call it manually. 2025-05-06 22:24:41 +02:00
frosch f8c928ed98 Codechange: Make temporary storage a member of ResolverObject. 2025-05-06 22:24:41 +02:00
frosch eb9bbb2456 Codechange: Remove direct access to temporary storage from TextRefStack. 2025-05-06 22:24:41 +02:00
frosch 6faa667644 Codechange: Remove global GetRegister(), instead return 100+ registers directly from GetXxxCallback(). 2025-05-06 22:24:41 +02:00
frosch f59cf73b88 Codechange: Access temporary storage through ResolverObject during sprite layout preprocessing. 2025-05-06 22:24:41 +02:00
frosch 85be7a4d92 Codechange: Access temporary storage through ResolverObject during Resolve. 2025-05-06 22:24:41 +02:00
frosch 99d7a775ad Codechange: Make GetRegister return a signed integer, matching the underlying TemporaryStorageArray. 2025-05-06 22:24:41 +02:00
frosch 74030a63e6 Codechange: Move SpriteLayoutProcessor's operations closer to the ResolverObject. 2025-05-06 22:24:41 +02:00
Rubidium 0ffdc86a2c Codechange: use std::ranges::equal over memcmp 2025-05-06 21:29:21 +02:00
Rubidium 89deb3876f Codechange: use fstream to compare file equality 2025-05-06 21:29:21 +02:00
frosch cd7ac64f9d Codefix: Fix compilation with DEBUG_DUMP_COMMANDS. (#14228) 2025-05-06 21:11:30 +02:00
frosch 592cc49b62 Codechange: Turn _grow_town_result into a local variable in GrowTownAtRoad. 2025-05-06 20:58:17 +02:00
frosch 5af877d12d Codechange: Do not assign _grow_town_result in GrowTownInTile, instead return the new value. 2025-05-06 20:58:17 +02:00
frosch 22af391064 Codechange: Move _grow_town_result out of GrowTownWithExtraHouse, GrowTownWithRoad, GrowTownWithBridge and GrowTownWithTunnel. 2025-05-06 20:58:17 +02:00
Rubidium d70aeb72a7 Codechange: C++ initialise LanguageHeaderPack 2025-05-06 20:03:35 +02:00
Rubidium 8f1e94c546 Codechange: use C++ initialisation over MemSetT 2025-05-06 20:03:35 +02:00
Rubidium cc51b29234 Codechange: use std::fill_n/copy_n over MemSetT/MemCpyT 2025-05-06 20:03:35 +02:00
Rubidium 0d922c9d62 Codechange: use std::array's fill over memset 2025-05-06 20:03:35 +02:00
Rubidium 4c1cd4fe4c Codefix: remove unused mem_func includes 2025-05-06 20:03:35 +02:00
Peter Nelson 9735fbbaa1 Codechange: Use LRUCache for layouted LineCache.
This avoids needing to manually manage the size of the cache.
2025-05-06 18:09:00 +01:00
Peter Nelson 8c4f8af66e Codechange: Move std::unique_ptr out of LRUCache implementation.
This is an implementation detail of how OpenGLSprites are stored.
2025-05-06 18:09:00 +01:00
frosch 8bbfbd0347 Codechange: Move spritelayout preprocessing to a separate class, which owns the heap allocations involved. 2025-05-06 18:30:42 +02:00
frosch d9c43e7fda Codechange: Make TileLayoutSpriteGroup::ProcessRegisters return a DrawTileSpriteSpan on the stack, instead of a reference to a global. 2025-05-06 18:30:42 +02:00
frosch 51a7edd941 Codechange: Remove _input_events_this_tick. 2025-05-06 18:29:41 +02:00
frosch 42f9312f71 Codechange: Make station variable cache a member of StationScopeResolver. 2025-05-06 18:29:41 +02:00
frosch b20b6da937 Codechange: The compiler ensures static variables are initialised only once, no need to track that manually. 2025-05-06 18:29:41 +02:00
frosch 75a775e59d Codechange: Make GetCurrentLocale return a std::string instead of a reference to a static buffer.
For win32 this is even a fix, because the static buffer was only updated once. Later calls discarded the determined locale.
2025-05-06 18:29:41 +02:00
frosch 0d5b3ebd7f Codechange: Declare all IntervalTimers const, which can be const. 2025-05-06 18:29:41 +02:00
frosch 61cec33be2 Codechange: Add 'const' to static variables, which are only initialised once. 2025-05-06 18:29:41 +02:00
frosch 1900125c98 Codechange: Use string_view for FileExists. 2025-05-06 18:29:41 +02:00
Peter Nelson d571491405 Codechange: Replace std::bitset<CONTENT_TYPE_END> with ContentTypes. (#14223)
#14214 added `ContentTypes` as en `EnumBitSet`, but some std::bitset existed already; they are now `ContentTypes` too.
2025-05-06 17:20:01 +01:00
translators eca826b0a4 Update: Translations from eints
korean: 7 changes by telk5093
hungarian: 3 changes by vargaviktor
latvian: 3 changes by lexuslatvia
polish: 6 changes by pAter-exe
2025-05-06 04:46:37 +00:00
frosch 13349254ea Fix #14216, d030d17: RealSpriteGroups referencing CallbackResultSpriteGroups were always treated as callback-failure. (#14218) 2025-05-05 16:13:41 +02:00
Peter Nelson e23de03a99 Codechange: Use FlatSet for sprite picker list. 2025-05-05 14:00:38 +01:00
Peter Nelson b06273f716 Codechange: Use FlatSet when searching tiles around stations. 2025-05-05 14:00:38 +01:00
Peter Nelson 7679b0bc46 Codechange: Use FlatSet when filtering and drawing badge names. 2025-05-05 14:00:38 +01:00
Peter Nelson 5fd7344a6d Codechange: Use FlatSet when creating rivers. 2025-05-05 14:00:38 +01:00
Peter Nelson 7c834921b2 Codechange: Use FlatSet for per-industry type industry lists. 2025-05-05 14:00:38 +01:00
Peter Nelson 6070f8d4f3 Codechange: Add FlatSet implementation.
This is a flat set implemented using a sorted vector for storage.
2025-05-05 14:00:38 +01:00
Peter Nelson 2355d67e11 Codechange: Use EnumBitSet instead of Vector to record received content types. (#14214) 2025-05-05 08:55:34 +01:00
translators a46b885640 Update: Translations from eints
english (au): 1 change by krysclarke
russian: 2 changes by Ln-Wolf
2025-05-05 04:47:18 +00:00
Peter Nelson d7563096c6 Doc: Tweak documentation for consistency. (#14211)
* Remove/add line breaks so spacing is the same.
* Fix ToC links.
2025-05-04 20:16:29 +01:00
Peter Nelson ac76212b80 Fix: Closing the Game Options window closes all textfile windows.
Record the parent window that opens a textfile window so only child windows are closed instead of all.
2025-05-04 19:36:46 +01:00
Peter Nelson dabf2ede67 Change: Add methods to close child windows with a specific window number. 2025-05-04 19:36:46 +01:00
Rubidium 0724b3cda8 Codechange: replace SQChar with char 2025-05-04 16:59:06 +02:00
Rubidium 1f411f8a16 Codechange: use string_view for squirrel parameter checks 2025-05-04 16:59:06 +02:00
Rubidium 588b0de3de Codechange: hide SQString internals behind std::string_view/std::span 2025-05-04 16:59:06 +02:00
Rubidium 635ca3739f Codechange: use std::string_view in squirrel lexer 2025-05-04 16:59:06 +02:00
Rubidium 4255a94779 Codechange: use std::span over char* for writing the buffers 2025-05-04 15:32:52 +02:00
Rubidium 6817f52d9b Codechange: move definition of getcwd for Windows to where it is used 2025-05-04 15:32:52 +02:00
Rubidium 6189bbc45a Codechange: return std::string_view for convert_from_fs 2025-05-04 15:32:52 +02:00
Rubidium 6caa08098c Codechange: remove char* StringConsumer 2025-05-04 15:32:52 +02:00
Peter Nelson 3e608b5fe4 Fix: Zoom-scroll extra viewports only if the mouse cursor is over the viewport. (#14209) 2025-05-04 14:16:05 +01:00
Rubidium afc1e76575 Codefix: StartNewThread uses char* after returning 2025-05-04 14:05:15 +02:00
Rubidium 8f74c08ea6 Codechange: put SQRegFunctions into initializer_list and use ranged for loops 2025-05-04 14:05:05 +02:00
Rubidium f4fc8f6b38 Codechange: replace Error with simple throw 2025-05-04 14:05:05 +02:00
Rubidium 9d8a612bfb Codechange: remove unused function 2025-05-04 10:43:56 +02:00
Rubidium 5e3c7c4146 Codechange: char* -> char * 2025-05-04 10:43:56 +02:00
Rubidium 3f2b39e3f8 Codechange: replace char* where out-of-date 2025-05-04 10:43:56 +02:00
Rubidium d697280493 Codechange: remove now obsolete char* tests
The function is std::string_view and there are std::string_view tests as well.
2025-05-04 10:43:56 +02:00
Rubidium d01bebbd18 Codefix 26a4da9b01: MinGW compilation failure 2025-05-04 09:07:02 +02:00
translators 7d7a6bd32c Update: Translations from eints
norwegian (bokmal): 3 changes by eriksorngard
2025-05-04 04:46:05 +00:00
frosch 8571af9833 Codechange: Turn ZoomLevel into enum class. 2025-05-03 23:21:09 +02:00
frosch c0d4ab69d0 Codechange: Add a container to index data by zoom level. 2025-05-03 23:21:09 +02:00
frosch 7055ea0aee Codechange: Define sequential operators for ZoomLevel. 2025-05-03 23:21:09 +02:00
frosch bbfda39ac3 Codechange: Add ZoomLevels bit set. 2025-05-03 23:21:09 +02:00
frosch 48d09af039 Codechange: Simplify weird range check. 2025-05-03 23:21:09 +02:00
Rubidium d464961c41 Codechange: use std::string_view for SQ stack and function info 2025-05-03 23:02:09 +02:00
Rubidium 0bc773215e Codechange: use std::optional<std::string_view> to make the intent of function clearer 2025-05-03 23:02:09 +02:00
Rubidium ead3b96883 Codechange: use std::string_view to create SQString 2025-05-03 23:02:09 +02:00
Rubidium fca99967a7 Codechange: make sq_scratchpad use std::span<char> 2025-05-03 23:02:09 +02:00
Rubidium b4d9682f21 Codechange: use std::string_view for sq_throwerror 2025-05-03 23:02:09 +02:00
Rubidium ec79ceb2be Codechange: use std::string_view for sq_pushstring 2025-05-03 23:02:09 +02:00
Rubidium 3020e615a9 Codechange: use std::string_view for squirrel compilation 2025-05-03 23:02:09 +02:00
Rubidium 26a4da9b01 Codechange: replace last strncmp uses 2025-05-03 21:51:01 +02:00
Peter Nelson 31754a0afd Fix: Changing monospace font didn't refresh the monospace width cache. (#14185) 2025-05-03 18:34:45 +01:00
Peter Nelson 7596f98e2d Codechange: Cache layouted text for the last used width. (#14177) 2025-05-03 18:33:47 +01:00
Peter Nelson bd1a3fe0b7 Change: Remove the limit of 20 parameters to a Script Text string. (#14193) 2025-05-03 18:33:29 +01:00
frosch 518a34c286 Codechange: Use std::byte for generic buffers. 2025-05-03 18:43:20 +02:00
frosch 02082a0211 Codechange: Deduplicate array lookup. 2025-05-03 18:43:20 +02:00
frosch bb767608de Codechange: Pass SpriteType as direct parameter to SpriteEncoder::Encoder. 2025-05-03 18:43:20 +02:00
frosch c3aa3f140c Codechange: Use more std::string_view. (#14197) 2025-05-03 18:40:37 +02:00
frosch 74a275f37b Add: [NewGRF] Add purchase list Action3 CID for houses, industries, industry tiles, airports and airport tiles. (#14121) 2025-05-03 17:50:20 +02:00
frosch 9ac9798d7f Codechange: Remove usages of stoi and stol. (#14196) 2025-05-03 17:46:30 +02:00
Rubidium b6afd8d2b6 Codechange: remove some completely unused squirrel files 2025-05-03 17:14:10 +02:00
Rubidium 85f1110569 Codechange: rewrite ini file parsing with the StringConsumer 2025-05-03 17:13:33 +02:00
Rubidium 6a9f694158 Codechange: remove StrEmpty 2025-05-03 15:58:14 +02:00
Rubidium d037dbb42a Codechange: use std::string_view for locales 2025-05-03 15:58:14 +02:00
Rubidium 96fd291693 Codechange: introduce GetEnv that returns optional based on std::getenv 2025-05-03 15:58:14 +02:00
Rubidium 04a6a55e94 Codechange: replace StripTrailingWhitespace with StrTrimView 2025-05-03 15:57:53 +02:00
Rubidium 1f39d469ff Codechange: pass the characters to trim to StrTrimView 2025-05-03 15:57:53 +02:00
Rubidium e2db8277b8 Codefix: implement StrTrimInPlace without assigning a borrowed view of itself 2025-05-03 15:57:53 +02:00
Rubidium 4109b6848b Codechange: replace manual trim and std::from_chars with ParseInteger 2025-05-03 15:57:53 +02:00
Rubidium 414f6a3067 Codechange: add support for parsing octal numbers 2025-05-03 15:57:53 +02:00
Rubidium c79abc6da6 Codechange: reduce dependence on C-style strings in OpenGL 2025-05-03 14:24:49 +02:00
Rubidium 278aee2c19 Codechange: use std::string_view for sq_getstring 2025-05-03 14:24:28 +02:00
translators f4f05dea33 Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
chinese (simplified): 1 change by WenSimEHRP
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
dutch: 8 changes by Afoklala
portuguese: 3 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-05-03 04:45:31 +00:00
Peter Nelson 8b14faaa40 Codechange: Add version of DrawStringMultiLine that performs clipping test. (#14189)
Normally DrawStringMultiLine does not perform any clipping, as the return value may be needed if it the text is not drawn.

In some specific cases the height is already known, so it is possible to test for clipping, which can cut down on layouting time for text which won't be visible.
2025-05-02 22:59:55 +01:00
Iris-Persephone 2f020abe74 Add: "Many random towns" button in scenario editor now prompts for the number of towns, with defaults based on new game settings (#14158) 2025-05-02 22:54:21 +01:00
Peter Nelson 3eba97f67c Codechange: Scrollbar Count no longer needs to be clamped to uint16_t. (#14184) 2025-05-02 22:21:05 +01:00
Peter Nelson f7db4938ce Fix #14098: Use 64-bit type for MIDI realtime information. (#14144) 2025-05-02 22:20:44 +01:00
Rubidium c420ba349d Codechange: use std::string_view over char* 2025-05-02 23:12:43 +02:00
Rubidium f2a32c6d13 Codechange: use std::byte instead of char for calculating arbitrary byte offsets 2025-05-02 23:12:43 +02:00
Peter Nelson 932dca927b Fix: Crash/Undefined behaviour in station view window. (#14183)
No column limit was applied when drawing waiting cargo, which could cause out-of-bounds array access.
2025-05-02 08:02:35 +01:00
translators e0a9c7d818 Update: Translations from eints
english (au): 2 changes by krysclarke
chinese (traditional): 3 changes by KogentaSan
chinese (simplified): 6 changes by WenSimEHRP
greek: 2 changes by gh658804
russian: 2 changes by Ln-Wolf
finnish: 3 changes by hpiirai
portuguese (brazilian): 2 changes by pasantoro
polish: 2 changes by pAter-exe
2025-05-02 04:45:34 +00:00
Peter Nelson ae9646eb0a Change: Use same padding as NewGRF parameters for AI/GS parameters lists. (#14118) 2025-05-01 22:36:53 +01:00
Rubidium 5ca686261e Codechange: use std::string_view for the string setting defaults 2025-05-01 23:24:43 +02:00
Rubidium 5c7b04a0c2 Codechange: use std::string_view for 'x-of-many' settings 2025-05-01 23:24:43 +02:00
Rubidium 7805c1c189 Codechange: use std::string_view for ini_key 2025-05-01 23:24:43 +02:00
Peter Nelson d958d50985 Fix: Small order list arrow was wrong direction for RTL text. (#14174)
Add sprite for small left arrow and use for small order list when using an RTL language.
2025-05-01 22:08:24 +01:00
Loïc Guilloux 41b113840a Fix: [Script] Access to enum/consts defined outside of main.nut (#14176) 2025-05-01 18:16:32 +02:00
Loïc Guilloux 1f212e6f2a Fix: Handle \t when loading GS strings from savegame (#14180) 2025-05-01 16:48:02 +02:00
Loïc Guilloux 6f4994329c Fix bf8a241f: Handle \t in trailing whitespaces (#14178) 2025-05-01 12:32:00 +02:00
translators a30f251d05 Update: Translations from eints
hungarian: 99 changes by meskobalazs
russian: 8 changes by Ln-Wolf
finnish: 24 changes by hpiirai
latvian: 70 changes by lexuslatvia
2025-05-01 04:47:22 +00:00
Rubidium fbe80f31fe Codechange: replace char* in GetOptData with std::string_view 2025-04-30 23:49:06 +02:00
Rubidium c1a287ad17 Codechange: make some saveload functions work natively with std::string_view 2025-04-30 23:49:06 +02:00
Rubidium 855377191e Codechange: replace some more char*s with std::string_view 2025-04-30 23:49:06 +02:00
frosch a80c11a6e8 Fix 66733e2a: Textbuf was broken, and did not insert any input. (#14173) 2025-04-30 19:31:52 +00:00
Peter Nelson 7dd3bed10f Fix #14170, 7fd0e6c27d: Missing spaces for timetabled order strings. (#14172) 2025-04-30 19:54:54 +01:00
frosch 316279f4b4 Codechange: Use more std::string_view. 2025-04-30 19:33:56 +02:00
frosch 9cf36dac39 Codechange: Use data() instead of c_str(), if no NUL termination is needed. 2025-04-30 19:33:56 +02:00
frosch 9e90d4ed79 Codefix: Do not assign nullptr to std::string_view. 2025-04-30 19:33:56 +02:00
frosch 36ce1f890a Codechange: Remove c_str, if std::string_view is already accepted. 2025-04-30 19:33:56 +02:00
frosch b564fbb5e6 Codechange: Use StringConsumer to parse hotkeys. 2025-04-30 19:33:56 +02:00
frosch 66733e2a50 Codechange: Use std::string_view in IME input handling. 2025-04-30 19:33:56 +02:00
frosch 6db13df3b5 Add: [BaseSet] Allow basesets to set minor and patch versions in obg/obs/obm files. 2025-04-30 15:23:27 +02:00
frosch d30fee4a99 Codechange: Improve debug/error messages when reading baseset metadata. 2025-04-30 15:23:27 +02:00
Rubidium 708e6a512d Codechange: replace char* with C++ style strings 2025-04-30 12:05:04 +02:00
Peter Nelson 356b0159c7 Fix 261e09a549: Compilation failure with Fluidsynth enabled. (#14167) 2025-04-30 07:27:57 +01:00
translators 7bec2029fa Update: Translations from eints
english (au): 4 changes by krysclarke
norwegian (bokmal): 5 changes by eriksorngard
chinese (traditional): 4 changes by KogentaSan
greek: 8 changes by gh658804
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
portuguese: 4 changes by jcteotonio
portuguese (brazilian): 4 changes by pasantoro
polish: 4 changes by pAter-exe
2025-04-30 04:46:51 +00:00
Peter Nelson 0abebfce1c Codechange: Use result of .find() instead of looking up multiple times. (#14154) 2025-04-29 23:52:46 +01:00
Peter Nelson aa9e8b422c Fix #14166, dfd9fbf873: Loan was no longer invalidated when refreshing finance window. (#14168)
In most cases the company loan does not change, but it should be updated in case it does.
2025-04-29 23:52:11 +01:00
Rubidium f4ad614285 Codechange: use std::string_view for FS2OTTD and OTTD2FS 2025-04-29 22:33:32 +02:00
Rubidium ef71ce0a9d Codechange: return std::string_view for Textbuf::GetText() 2025-04-29 22:15:49 +02:00
Rubidium 261e09a549 Codechange: remove char* from base driver code 2025-04-29 21:09:18 +02:00
frosch d030d17bd6 Codechange: Do not use a mutable global to return calculated VarAction2 results. 2025-04-29 20:35:46 +02:00
frosch e90b68d504 Codechange: Pass SpriteGroup as reference to ResolveReal. 2025-04-29 20:35:46 +02:00
frosch 7c946d97da Codefix: Build with OPTION_DEDICATED=OFF and CMAKE_DISABLE_PRECOMPILE_HEADERS=ON. 2025-04-29 20:26:23 +02:00
frosch afe3dfb3a4 Codechange: Use format instead of to_string. 2025-04-29 20:26:23 +02:00
frosch fda93b6f35 Codechange: Add format_append as short-hand to format_to + back_inserter. 2025-04-29 20:26:23 +02:00
frosch 98481ecc01 Codechange: Replace strtol, strtoll, stroul and strtoull with ParseInteger. 2025-04-29 20:14:56 +02:00
frosch cdafc50c94 Codechange: Replace atoi and atoll with ParseInteger. 2025-04-29 20:14:56 +02:00
frosch 3973199879 Change: ParseInteger now checks for trailing junk chars. 2025-04-29 20:14:56 +02:00
frosch 79b2202f2e Codechange: Use StringConsumer for parsing more strings. 2025-04-29 20:14:56 +02:00
frosch e7d758c82a Codechange: Replace sscanf with StringConsumer. 2025-04-29 20:14:56 +02:00
frosch 8027e31f47 Codechange: Remove virtual functions SpriteGroup::GetResult and GetNumResults. They are only implemented in and called via ResultSpriteGroup. 2025-04-29 10:35:10 +02:00
frosch 010b944173 Codechange: Move SpriteGroup cast from callers into Resolve. 2025-04-29 10:35:10 +02:00
Rubidium af25eecc15 Codechange: use const for std::string_view where appropriate 2025-04-29 10:15:18 +02:00
Rubidium 78250c3bba Codechange: remove const char* overloads when there are std::string_view and std::string& overloads 2025-04-29 10:14:53 +02:00
Peter Nelson a5578166bb Codechange: Pass Script Info by reference. 2025-04-28 23:08:20 +01:00
Peter Nelson 341cdbc16b Codechange: Pass Script engine by reference. 2025-04-28 23:08:20 +01:00
Peter Nelson 72ca962b84 Codechange: Pass ScriptInstance by reference. 2025-04-28 23:08:20 +01:00
Peter Nelson 13fcc0900e Change: Use enum/bitset to track which script configuration items are defined. (#14150)
Removes magic numbers, and simplifies compatibility. It is no longer necessary to provide values which won't be used.
2025-04-28 23:07:57 +01:00
Rubidium b20b56d5fc Codechange: store revision information in C++ style strings 2025-04-28 23:48:32 +02:00
Rubidium 8b1c1cc33d Codechange: provide 'sv' (string_view) literals globally 2025-04-28 23:39:33 +02:00
Rubidium be53bd320d Codechange: replace char* from settingsgen 2025-04-28 23:27:46 +02:00
frosch 47b5ca6115 Fix: [NewGRF] Computed VarAction2 callback results were not always properly masked to 15 bit results. 2025-04-28 23:25:31 +02:00
frosch d90f6f01cc Codechange: CALLBACK_FAILED is an internal constant, do not use it as numeric value in VA2 computations. 2025-04-28 23:25:31 +02:00
frosch 30b1eb6e5f Fix: [NewGRF] The result of Action123 evaluation affected rerandomisation in a weird corner case. (#14139)
Rerandomisation does not care about the Resolve result.
But we skipped it, in case of 'invalid SpriteGroup reference'.
2025-04-28 23:24:42 +02:00
frosch b281c5616e Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite. 2025-04-28 22:20:54 +02:00
frosch 7b08170ac8 Codechange: Replace a magic value with a maybe less magical constant. 2025-04-28 22:20:54 +02:00
Rubidium 360670626b Codechange: replace char* with std::string_view 2025-04-28 21:31:12 +02:00
Rubidium 9107c3f6c6 Codechange: add std::string_view variant of FileHandle::Open 2025-04-28 21:31:12 +02:00
Peter Nelson 2c4897c2cd Codechange: Use EnumBitSet for HouseZones. (#14137) 2025-04-28 20:27:43 +01:00
frosch f5a9eae8b1 Fix: [NewGRF] AI station construction callback did not work for stations with ID >= 0x100. 2025-04-28 20:50:13 +02:00
frosch e2084bbdcd Codechange: Replace out parameters with result tuples. 2025-04-28 20:50:13 +02:00
frosch 0c6426cb2d Fix: Out-of-bounds read, if NewGRF stations provided no spritesets. 2025-04-28 20:49:20 +02:00
frosch 0f1ef96ca1 Codechange: Road stops do not use RealSpriteGroup, ResolveReal is never called. 2025-04-28 20:49:20 +02:00
Rubidium 9116f96e2e Codechange: replace char * with std::string_view 2025-04-28 17:53:18 +02:00
Rubidium c6ea0ce961 Codechange: use std::span for transferring data in network code 2025-04-28 17:53:18 +02:00
frosch b7e7f08f78 Codechange: Simplify usage of GRFFileProps by adding some common helper methods. 2025-04-28 13:44:46 +02:00
frosch 46494c6d44 Codechange: Rename GRFFileProps to SubstituteGRFFileProps. 2025-04-28 13:44:46 +02:00
Richard Wheeler 298e02d593 Fix: List Ctrl+Click behaviour for vehicle details tooltip (#14127)
Also change mention of "road vehicle" to "vehicle", in line with vehicle order, refit, reverse, etc. tooltips. Fixes #14128
2025-04-28 07:00:18 +01:00
translators 68ba2735ea Update: Translations from eints
swedish: 109 changes by Brickblock1
spanish (mexican): 1 change by absay
english (us): 1 change by 2TallTyler
2025-04-28 04:46:30 +00:00
Rubidium 794ba1f5da Fix 29ceaf0a8: checking std::optional against nullptr caused crash 2025-04-27 21:10:12 +02:00
Rubidium 49ef3eee13 Codechange: replace char* with std::string_view 2025-04-27 20:08:02 +02:00
frosch e1859df1c0 Codechange: Use enums as keys for the spritegroups in FixedGRFFileProps. 2025-04-27 19:50:51 +02:00
frosch 05504ec463 Codechange: Use SingleGRFFileProps, if the feature has no spritegroup keys. 2025-04-27 19:50:51 +02:00
frosch 41a20e512d Codechange: Use proper enum type to index sprite groups in VariableGRFFileProps. 2025-04-27 19:50:51 +02:00
frosch 893aa0fb91 Codechange: Add an explicit enum member for the default spritegroup of badges. 2025-04-27 19:50:51 +02:00
Rubidium 29ceaf0a84 Codechange: use std::string_view over const char * 2025-04-27 18:04:04 +02:00
Rubidium c7056866a3 Codechange: remove manual param count; in all cases strlen(params) == nparams 2025-04-27 17:57:53 +02:00
Rubidium 781187b8a6 Codechange: replace C-style strings with std::string_view related to strings functions 2025-04-27 17:57:42 +02:00
Rubidium 4e3e3d5be6 Codechange: introduce transparent hash lookup for strings 2025-04-27 17:57:42 +02:00
Peter Nelson 7bbf380931 Fix #14125, 828e808444: NewGRF sounds were not loaded. (#14130)
NewGRF Action 11 should be handled in both INIT and ACTIVATION stages for sounds to be loaded.

Additionally the Action 0 feature test failed due to offsets involved.
2025-04-27 15:20:38 +00:00
Rubidium b9667ec3d1 Codechange: use std::string_view for scripts 2025-04-27 17:00:25 +02:00
translators 864fe29028 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 1 change by KogentaSan
galician: 66 changes by pvillaverde
chinese (simplified): 1 change by WenSimEHRP
korean: 72 changes by telk5093
greek: 1 change by gh658804
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
portuguese: 1 change by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-04-27 04:44:13 +00:00
Peter Nelson 5a7893b730 Fix #14104, 67a0fcc: Don't base timetable timing decisions on client settings. (#14105)
Client settings different between clients so the resultant timings may be different.

Partially reverts 67a0fcc.
2025-04-26 22:39:01 +01:00
Peter Nelson b87ce9c845 Change: Draw info headers as shade of window colour instead of pixel colour. (#14123)
Use the normal or lightest colour gradient to pick a suitable colour, instead of an arbitrary pixel colour.

(Except for the NewGRF window's info panel, this happens to be the same colour.)
2025-04-26 22:38:24 +01:00
frosch 55fad9c78a Add: Limit height of settings description, and add scrollbar. (#14102) 2025-04-26 22:34:18 +02:00
frosch d85f6dccc5 Fix 5575379: Crash with default airports. (#14120) 2025-04-26 22:29:01 +02:00
frosch f62f728187 Codechange: Move usage of ResolverObjects to newgrf_xxx.cpp (#14116) 2025-04-26 20:53:50 +02:00
frosch be39a05327 Fix: Road vehicle blocking and train collissions used slightly inconsistent distance thresholds. 2025-04-26 19:32:59 +02:00
frosch 3a70d1e2f7 Codechange: Pass the max-distance as parameter to VehiclesNearTileXY. 2025-04-26 19:32:59 +02:00
frosch 2df1233f1f Codechange: Clamp the search area to valid values for the hash bucket selection.
The bucket selection uses a truncating division instead of a flooring division, so it does not work for negative positions.
Anyhow, there are no negative tile coordinates, so just clamp the search area.
2025-04-26 19:32:59 +02:00
frosch 0f76ba122c Codefix: VehiclesNearTileXY yielded all vehicles with matching hashes, even if they are far away. 2025-04-26 19:32:59 +02:00
frosch c14e4a6db1 Codefix: Rect::Contains did not consider the bottom/right edges as inside. 2025-04-26 19:32:59 +02:00
Rubidium 3235ec4cf8 Codefix: checking unsigned int >= 0 is pointless, check before subtraction 2025-04-26 18:31:36 +02:00
frosch ce2155ab27 Codechange: Remove unused FindVehicleOnPosXY/HasVehicleOnPosXY. 2025-04-26 16:54:56 +02:00
frosch 98ac75e74f Codechange: Replace FindVehicleOnPosXY/HasVehicleOnPosXY with VehiclesNearTileXY/HasVehicleNearTileXY. 2025-04-26 16:54:56 +02:00
frosch 9f1c04c0e1 Codechange: Add VehiclesNearTileXY and HasVehicleNearTileXY to iterate over/check for ground vehicles near a tile coordinate. 2025-04-26 16:54:56 +02:00
frosch ac3ed9f3ad Codechange: Deduplicate and simplify tile hash arithmetic. 2025-04-26 16:54:56 +02:00
Rubidium b4d4d730a5 Codechange: use std::string_view for town name generation 2025-04-26 16:30:30 +02:00
Rubidium 30f381acee Codechange: use std::string_view for NetworkAddress 2025-04-26 16:30:16 +02:00
Rubidium e1db09a41f Codechange: use std::string_view for NewsTypeData 2025-04-26 16:30:16 +02:00
Rubidium 42f0aa24f6 Codechange: use std::string_view for connection/URI strings 2025-04-26 16:30:16 +02:00
Rubidium a5812a45f8 Codechange: use std::string view for URI and std::move for data 2025-04-26 16:30:16 +02:00
Rubidium d1a7d30572 Codechange: use std::string_view for some settings functions 2025-04-26 16:30:16 +02:00
Rubidium 4476ce804d Codechange: use std::string_view for GetNextParameterString 2025-04-26 16:30:16 +02:00
frosch 398524e49a Add: [NewGRF] Provide random bits in var10 of house callback 1C 'construction stage changed'. (#14095) 2025-04-26 15:58:44 +02:00
frosch 55753795bf Fix: [NewGRF] Cargo-types for airport-tile animation-triggers were not properly translated. (#14092) 2025-04-26 15:58:30 +02:00
frosch 1ea1dbd19e Add: [NewGRF] Station/roadstop animation-triggers 'tile loop' (bit 7) and 'path reservation' (bit 8). (#14080) 2025-04-26 14:44:55 +02:00
frosch d3ae6bc9a8 Fix: [NewGRF] For animation-triggers which do not supply a cargo-type in var18, the var18 bits should remain empty. (#14091) 2025-04-26 14:44:07 +02:00
frosch 0d9074769d Change: [NewGRF] Animation-trigger 'construction stage changed' of houses and industries now also triggers at construction start. (#14089) 2025-04-26 14:42:49 +02:00
Rubidium 365eed533d Codechange: use std::string_view for console commands 2025-04-26 14:15:10 +02:00
Rubidium f04cf54939 Codechange: make IConsoleCmdExec use C++ strings internally 2025-04-26 14:15:10 +02:00
Loïc Guilloux 28d0e6dfc0 Change: [Script] Reject scripts using negative version (#14096) 2025-04-26 14:02:36 +02:00
Peter Nelson 4a5db57f7b Fix #14107: Mark the company value in the company view window dirty when it changes. (#14112) 2025-04-26 11:56:11 +00:00
Peter Nelson dfd9fbf873 Codechange: Defer refreshing company finance windows. (#14111)
During each game tick every cargo payment will issue an Invalidate of the status bar and company finance window. While this doesn't paint the window yet, it does need to search for open windows, and then mark a area of dirty blocks, which is done for every Invalidate.

Instead, set a bit in a CompanyMask, and test these bits once after the game tick is complete.

This reduces the amount of dirtying, and allows more specific widgets to be dirtied instead of the whole window.
2025-04-26 10:50:51 +00:00
Peter Nelson a1f086e60c Fix #14107: Invalidate all shared vehicle windows when changing group. (#14110)
Previously only windows of the first vehicle were invalidated.
2025-04-26 10:49:41 +00:00
translators bb1d561369 Update: Translations from eints
chinese (traditional): 9 changes by KogentaSan
english (us): 66 changes by 2TallTyler
greek: 65 changes by gh658804
russian: 77 changes by Ln-Wolf
dutch: 66 changes by Afoklala
portuguese: 65 changes by jcteotonio
polish: 68 changes by pAter-exe
2025-04-26 04:44:12 +00:00
Rubidium 08ce16018b Codechange: make start-ai console command parsing work with std::string_view 2025-04-25 19:04:22 +02:00
Rubidium ccbf7f4a46 Codechange: validate the given seed 2025-04-25 19:04:22 +02:00
Rubidium 86039a5b69 Codechange: make SetDebugString use C++-style strings and function types 2025-04-25 19:04:22 +02:00
Rubidium 498a0f1c1b Codechange: use C++ strings over C-strings 2025-04-25 19:04:22 +02:00
frosch 4a09860c53 Fix: Focus settings filter box (only) when the tab becomes active. (#14100) 2025-04-25 12:04:26 +02:00
frosch f554d799d7 Change: [NewGRF] Provide shared random bits in multi-tile animation-triggers of airport tiles and objects, just like for other features. (#14090) 2025-04-25 10:01:01 +02:00
Peter Nelson 8b927220c7 Change: Move Game Options toggles to before label, add Off/On text. (#14097) 2025-04-25 07:49:33 +01:00
translators e61762a805 Update: Translations from eints
english (au): 65 changes by krysclarke
norwegian (bokmal): 67 changes by eriksorngard
chinese (traditional): 67 changes by KogentaSan
spanish (mexican): 66 changes by absay
chinese (simplified): 91 changes by WenSimEHRP
finnish: 65 changes by hpiirai
french: 61 changes by ottdfevr
portuguese (brazilian): 65 changes by pasantoro
2025-04-25 04:46:37 +00:00
Peter Nelson 87b5b0ffa3 Fix 2b80812922: Map size column in server list may be too wide. (#14094)
Incorrect change from SetDParamMaxValue to GetParamMaxValue.
2025-04-24 21:05:31 +01:00
Rubidium 2087bca87d Codechange: replace atoi with ParseInteger in console commands 2025-04-24 18:10:01 +02:00
Rubidium ddc0d6ead3 Codechange: use string comparision for ConExec's second parameter 2025-04-24 18:10:01 +02:00
Richard Wheeler a01d47b333 Doc: Correct baseset obg file MD5 and url documentation (#14086) 2025-04-24 12:24:32 +01:00
frosch 880a947eb3 Fix: [NewGRF] Randomisation-trigger 'path reservation' did not work for waypoints. 2025-04-24 09:19:43 +02:00
frosch bc0eaf9ac4 Codechange: Allow passing waypoints to Trigger(Station|RoadStop)Randomisation. 2025-04-24 09:19:43 +02:00
Peter Nelson c0cd7cafe4 Change: Remove minimum width from advanced settings panel of Game Options window. (#14088)
Previous minimum width of 400 was fairly arbitrary and isn't necessary when
the minimum size is suitably constrained by other widgets in the window.

This allows the window to be narrower for CJK languages.
2025-04-23 23:39:35 +00:00
Peter Nelson 7846f0f4ee Fix a4dc7249ee: Changing language or interface scale could hang. (#14087)
A bit of hysteresis caused by OnResize calling ReInit calling OnResize calling ReInit calling OnResize calling ReInit ...
2025-04-24 00:29:54 +01:00
Peter Nelson 78d3eaf3e2 Change: Slider widget can now be colourful. 2025-04-23 19:07:52 +01:00
Peter Nelson 20738865f0 Change: Use standard mauve/yellow scheme for game options window.
This is the colour scheme used by AI/GS settings, NewGRF settings and (previously) advanced settings.
2025-04-23 19:07:52 +01:00
Peter Nelson 17e7dafa2a Change: Add alternate_colour widget data for boolean button.
Allows boolean button to have different background and button colours.
2025-04-23 19:07:52 +01:00
Peter Nelson 7953a97cbb Change: Adjust section names in Graphics options tab.
"Interface size" and "Graphics" section names do not make much sense any more.
2025-04-23 19:07:52 +01:00
Peter Nelson 77da79a052 Codechange: Remove unnecessary SetMinimalSize from Game Options window. 2025-04-23 19:07:52 +01:00
Peter Nelson a4dc7249ee Change: Merge Game Options and Game Settings together.
Game Settings is now an additional 'Advanced' tab in the Game Options window.
2025-04-23 19:07:52 +01:00
frosch 6f056283f2 Fix: [NewGRF] For roadstop multi-tile-animation-triggers, the upper 16 bits were not the same for all tiles. (#14084) 2025-04-23 19:26:09 +02:00
Loïc Guilloux f8bdc1e612 Fix f5ffd47: Don't skip separator while reading a record (#14083) 2025-04-23 17:30:51 +02:00
Peter Nelson 6d5aee0545 Codechange: Restructure RoadStop Entries to reduce pointers. (#14069)
A RoadStop must own both west and east `Entry`s, but they are allocated separately.

Combine this allocation into one instead.
2025-04-23 08:29:34 +01:00
Peter Nelson 41ed5f9822 Fix c7d6934816: Town view caption lost "(City)" flag. (#14082) 2025-04-23 08:14:08 +01:00
translators d9dc6cb5e4 Update: Translations from eints
english (au): 1 change by krysclarke
chinese (traditional): 7 changes by KogentaSan
chinese (simplified): 201 changes by WenSimEHRP
greek: 1 change by gh658804
hungarian: 9 changes by meskobalazs
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
latvian: 1 change by lexuslatvia
portuguese: 1 change by azulcosta
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-04-23 04:46:38 +00:00
Peter Nelson d028c7f9e2 Codefix: Incorrect type for OnDropdownSelect widget parameter. (#14074) 2025-04-22 22:44:25 +01:00
Rubidium 4149384ebc Codechange: simplify and move GetArgumentInteger 2025-04-22 23:16:15 +02:00
frosch 2bee313642 Codechange: Replace FindVehicleOnPos with 'for' loop. 2025-04-22 22:12:59 +02:00
frosch 06c399b79e Codechange: Replace HasVehicleOnPos and callbacks with HasVehicleOnTile and lambda-predicates. 2025-04-22 22:12:59 +02:00
frosch dacd77b2bd Codechange: Use FindVehicleOnPos instead of HasVehicleOnPos, if there is no stop condition. 2025-04-22 22:12:59 +02:00
frosch fca3103d8c Codechange: Add iterator for vehicles on a tile. 2025-04-22 22:12:59 +02:00
Rubidium 917ef03e97 Codechange: use std::string_view in IConsole settings API 2025-04-22 19:52:37 +02:00
Rubidium b279bc37e7 Codechange: use std::string_view to set string settings 2025-04-22 19:52:37 +02:00
Rubidium fdb8defa64 Codechange: use std::string_view to parse setting values 2025-04-22 19:52:37 +02:00
Peter Nelson 12118b201c Change: Enhance visibility of disabled bool button. (#14071)
Apply masked fill to background as well.
2025-04-22 17:37:30 +01:00
translators 415ac07a08 Update: Translations from eints
chinese (simplified): 32 changes by WenSimEHRP
hungarian: 38 changes by meskobalazs
2025-04-22 04:46:01 +00:00
Peter Nelson 3aa82d5e63 Codechange: Use EnumBitSet for RoadStopStatusFlags. (#14068) 2025-04-21 20:16:23 +01:00
Peter Nelson 81edd1123a Change: Use scaled instead of fixed dimensions for framerate graphs. (#14039) 2025-04-21 20:15:57 +01:00
frosch d7ddea4032 Codechange: Turn AnimationTrigger enums into enum classes. (#14067) 2025-04-21 20:53:31 +02:00
frosch 61a0a520f6 Codechange: Unify random trigger enums and turn them into enum classes. (#14066) 2025-04-21 20:03:34 +02:00
frosch f399b8eb29 Codechange: Unify naming of NewGRF animation callbacks. 2025-04-21 19:06:13 +02:00
frosch 264abfafe6 Codechange: Rename storage of random triggers to include the term 'random'. 2025-04-21 19:06:13 +02:00
frosch 39220a5feb Codechange: Unify naming of NewGRF random trigger functions. 2025-04-21 19:06:13 +02:00
frosch 368d131fb7 Codechange: Use 'construction stage' consistently, instead of 'construction state'. 2025-04-21 19:06:13 +02:00
frosch 98445088b1 Codechange: Move VehicleEnteredDepotThisTick call to a more suitable position. (#14065) 2025-04-21 17:52:03 +02:00
Peter Nelson 7d03cee512 Change: Include dragged train in depot tile length display. (#14060)
In the depot, when dragging a train over another train, the tile length displayed now includes the length of the dragged train.

As the parts are not moved yet, length changes due to callbacks are not taken into account.
2025-04-21 16:37:10 +01:00
frosch 2a62eea005 Codefix: Comment style. (#14064) 2025-04-21 17:25:09 +02:00
Peter Nelson 5b2754fdee Change: Use standard boolean toggle buttons for game options toggles. 2025-04-21 16:23:11 +01:00
Peter Nelson d89753b88d Codechange: Add dedicated widget for boolean toggle buttons. 2025-04-21 16:23:11 +01:00
Peter Nelson e3d2d68bd4 Change: Draw boolean toggle as a slider widget.
This improves usability as the slider position indicates the state instead of a red/green colour change.
2025-04-21 16:23:11 +01:00
Rubidium e3858e81dc Codechange: use std::string_view over const std::string& for finding files 2025-04-21 17:20:00 +02:00
frosch 354ad43edb Codechange: Remove unnecessary string constructions. (#14063) 2025-04-21 16:46:31 +02:00
Peter Nelson e1fdc10227 Fix e114ed357d: Incorrect test of object flags allowed HQ to be removed. (#14062) 2025-04-21 15:45:29 +01:00
Loïc Guilloux 305c892b3a Change: "setting" console command now shows default value (#14061) 2025-04-21 16:00:37 +02:00
Peter Nelson 788845f731 Change: Allow Double-Ctrl+Click on default size box to clear saved size. (#14055) 2025-04-21 14:16:29 +01:00
Peter Nelson 0cf7048a67 Change: Don't select content when toggling its download status. (#14059)
This improves usability when toggling content sorted by status, as the list position no longer jumps to the now (de)selected item, making it easier to (de)select multiple items.
2025-04-21 13:20:52 +01:00
Peter Nelson 9ff2b4991f Change: Add scrollbar to infrastructure window. (#14056)
Company infrastructure window will no longer overflow the screen when lots of rail and road types are present.

To further declutter the list, we now only show a value when the count for that item is non-zero.
2025-04-21 08:46:09 +01:00
translators 5502618ac3 Update: Translations from eints
romanian: 1 change by ALEX11BR
2025-04-21 04:45:21 +00:00
Peter Nelson e9a92b8795 Fix: Odd drawing and crash if scrollbar is not tall enough. (#14052)
Under certain conditions the scrollbar "tab" could be too large for the scrollbar, and cause issues.

Caused by an off-by-one in height calculation.
2025-04-20 23:23:52 +01:00
frosch 0efbb3a7a7 Doc: PR template referenced non-existing label. (#14050) 2025-04-20 23:02:33 +02:00
frosch 689f55a0ea Fix #14044: Negative string parameters from GS were rendered as zero. (#14049)
String parameters are always stored as uint64_t. Negative values are sign-extended to int64_t and then casted to uint64_t.
The same applies to encoded strings. But ScriptText encoded them as int64_t.

Co-authored-by: rubidium42 <rubidium42@users.noreply.github.com>
2025-04-20 23:01:49 +02:00
Rubidium 4e14f0ac3f Codechange: pass network tokens as std::string_view or with move semantics where appropriate 2025-04-20 22:43:24 +02:00
Rubidium c13956a58a Codechange: use std::string_view for connection strings 2025-04-20 22:43:24 +02:00
Rubidium 31433882a4 Codechange: use std::string_view for passing NetworkError strings 2025-04-20 22:43:24 +02:00
frosch 8aa2f6b8a6 Codefix: StringConsumer integer parsing failed for the most negative value, which has no positive equivalent. (#14048) 2025-04-20 22:20:53 +02:00
Peter Nelson fc45bb5a2b Codechange: Replace bitstuffed VehicleEnterTileStatus. (#14027)
VehicleEnterTileStatus was an bitset-style enum, but bitstuffed with a StationID. However the StationID part was only used by trains, and only in two locations.

Instead, return just the enum bitset. The two places which require the StationID just call GetStationIndex() directly.
2025-04-20 21:10:02 +01:00
frosch cb113cfed0 Codefix: Add missing header includes. 2025-04-20 22:06:18 +02:00
frosch 461b73e21b Codefix: stdafx.h and safeguards.h should be the first and last include in every source file, and not appear in any header file. 2025-04-20 22:06:18 +02:00
frosch 54de376c55 Codechange: Make the squirrel-exporter skip ctor lists. 2025-04-20 21:07:12 +02:00
frosch 6256b55671 Codechange: Make the squirrel-exporter skip function bodies. 2025-04-20 21:07:12 +02:00
Rubidium 26de3404a4 Codechange: use std::string_view for sending chat messages 2025-04-20 13:31:41 +02:00
Rubidium bb259b8e77 Codechange: use std::string_view for sending a remote console command (result) 2025-04-20 13:31:41 +02:00
Rubidium d99edf2bbc Codechange: use std::string_view for kicking/banning 2025-04-20 13:31:41 +02:00
Rubidium a0246bc8a7 Codechange: use std::string_view over std::string for NetworkTextMessage 2025-04-20 13:31:41 +02:00
Rubidium a0e4dab771 Codechange: use std::string_view for NetworkAddress::IsInNetmask of std::string 2025-04-20 13:31:41 +02:00
frosch ff2da0fc73 Codechange: Remove CircularTileSearch. 2025-04-20 12:50:45 +02:00
frosch b956af631e Codechange: Replace CircularTileSearch with SpiralTileSequence. 2025-04-20 12:50:45 +02:00
frosch 0dada5a750 Codechange: Add SpiralTileSequence to iterate over a tile area the same ways as CircularTileSearch. 2025-04-20 12:50:45 +02:00
frosch b9bd7b2cfe Codechange: Confusion of 'radius' and 'diameter' in variable names and comments. 2025-04-20 12:50:45 +02:00
Peter Nelson e43e4327a7 Fix: Incorrect string display for autoreplace wagon removal status. (#14038) 2025-04-20 10:44:37 +01:00
translators ee81313254 Update: Translations from eints
welsh: 1 change by Ansbaradigeidfran
vietnamese: 2 changes by KhoiCanDev
2025-04-20 04:43:37 +00:00
Peter Nelson 2b92d76e9d Fix e49150f9ca: House picker crashes if selection is not available. (#14030)
This occurs because the extra invalidation in OnInit() also happens on construction, and too early.

Solution is to validate all instead of just position when invalidating in OnInit().
2025-04-19 15:04:18 +01:00
translators d248f45d67 Update: Translations from eints
vietnamese: 7 changes by KhoiCanDev
2025-04-19 04:44:03 +00:00
frosch 43ea6c9b88 Codechange: Turn AyStar into an actual class with virtual methods instead of function pointers. 2025-04-19 00:24:15 +02:00
frosch 97ead8e241 Codechange: Remove unused options from AyStar. 2025-04-19 00:24:15 +02:00
frosch 53899c3c21 Codechange: Replace vehicle viewport hash macros with functions. 2025-04-18 23:41:37 +02:00
frosch cde350dc01 Codechange: Replace macros GENERAL_SPRITE_COLOUR and COMPANY_SPRITE_COLOUR with functions GetColourPalette and GetCompanyPalette. 2025-04-18 23:41:37 +02:00
frosch c2c5dae760 Codechange: Turn GREY_SCALE macro into constexpr function. 2025-04-18 23:41:37 +02:00
frosch 8f335a84cf Codechange: Turn GetCustom(Vehicle|Rotor)(Sprite|Icon) macros into functions. 2025-04-18 23:41:37 +02:00
frosch 8f8e997575 Codechange: Replace local macro with lambda. 2025-04-18 23:41:37 +02:00
frosch 68016031cf Codechange: Turn macros GetCompanyHQSize and IncreaseCompanyHQSize into functions. 2025-04-18 23:41:37 +02:00
frosch 0eb6964311 Codechange: Change ScreenshotCallback into a std::function, so there is no need for void* user data. 2025-04-18 22:43:41 +02:00
frosch c09e825e0b Codechange: Change SetDateCallback into a std::function, so there is no need for void* user data. 2025-04-18 22:43:41 +02:00
frosch 0d4588688f Codechange: Manage script event queue using smart pointers. 2025-04-18 19:47:28 +02:00
frosch b9f4ef3d78 Codechange: Move ScriptStorage constructor into source file, so private members can have partially incomplete types. 2025-04-18 19:47:28 +02:00
frosch af14809697 Codechange: Add filename and line number to errors/warnings of the squirrel-exporters. (#14031) 2025-04-18 19:43:32 +02:00
frosch 50252cb5df Codechange: Ini(Load|Save)WindowSettings expect a WindowDesc*, no void*. (#14029) 2025-04-18 18:44:58 +02:00
Peter Nelson 394adb654e Codechange: Move GUI parts of badges to a separate file. (#14023) 2025-04-18 17:20:31 +01:00
Peter Nelson 67d6089f39 Change: Don't replace stripped control codes with '?' for scripts. (#14028) 2025-04-18 17:20:08 +01:00
frosch 45917dbaa3 Codechange: Remove unused macro strncasecmp. 2025-04-18 17:16:48 +02:00
frosch 84e175ce63 Codechange: Determine array length using 'std::size' instead of using a separate constant. 2025-04-18 17:16:48 +02:00
frosch 7cbf4f5560 Codechange: Expand the single usage of the macro CLRBITS. 2025-04-18 17:16:48 +02:00
frosch d97936e77a Codechange: Replace ALIGN macro with C++11 alignas specifier. 2025-04-18 17:16:48 +02:00
frosch f82e172610 Codechange: Expand and remove DEF_CONSOLE_CMD and DEF_CONSOLE_HOOK macros. 2025-04-18 17:16:48 +02:00
frosch 42deccc4f5 Codechange: Merge (IsOn|Toggle)(Snow|Desert) into (IsOn|Toggle)SnowOrDesert. 2025-04-18 16:33:26 +02:00
frosch 252376ce3e Codechange: Rename DrawRoadAsSnowDesert to DrawRoadAsSnowOrDesert to be consistent with other functions. 2025-04-18 16:33:26 +02:00
frosch 26db4ccf09 Codechange: Turn bit-stuffed FiosType enum into a struct. (#14019) 2025-04-18 15:20:55 +02:00
frosch b862d4937f Codechange: Turn custom vehicle spritenums into enum, and use them consistently. (#14022) 2025-04-18 15:19:28 +02:00
Peter Nelson 2c59838acb Codechange: (re)set multiple bitset flags in one call. (#14017) 2025-04-18 14:07:57 +01:00
frosch 31e716449d Codechange: Change StationNameInformation to not use macros. (#14020) 2025-04-18 15:06:46 +02:00
frosch 5aed046d11 Fix: [NewGRF] Strange things happened, when using the synchronised tile loop animation trigger for houses. (#14011) 2025-04-17 12:15:49 +02:00
translators 421f202539 Update: Translations from eints
luxembourgish: 103 changes by phreeze83
latvian: 1 change by lexuslatvia
2025-04-17 04:45:26 +00:00
Peter Nelson 1f83ea41fc Fix: [NewGRF] PrepareLayout worked on a copy of the data resulting in bad sprite layouts. (#14013) 2025-04-16 21:27:36 +00:00
Peter Nelson 378ea52ac6 Codechange: Use EnumBitSet for CzechChooseFlags. 2025-04-16 19:44:28 +01:00
Peter Nelson ea0817390f Codechange: Use EnumBitSet for CzechAllowFlags. 2025-04-16 19:44:28 +01:00
Peter Nelson 6ea10edef8 Codechange: Use std::unique_ptrs for handling station cargo display. (#14009)
Replaces manual management of raw pointers.
2025-04-16 19:43:45 +01:00
Peter Nelson a281ac4674 Codefix: Information for NewGRF specs remained duplicated after loading.
After loading airports+tiles, industries+tiles, houses and objects, their specs are copied from the NewGRF's loading storage to the final global storage.

Instead, move the specs to the their new storage, and clear the NewGRF's storage once done. (Stations and RoadStops are different, and the NewGRF's storage is the final storage location.)
2025-04-16 19:43:07 +01:00
Peter Nelson f9ab492e64 Codechange: Pass HouseSpec by reference to IsHouseSpecValid(). 2025-04-16 19:43:07 +01:00
translators b57f3262ec Update: Translations from eints
spanish: 101 changes by MontyMontana
2025-04-16 04:44:48 +00:00
Peter Nelson fa0814e257 Codefix: Codestyle consistency fixes. (#14008) 2025-04-15 20:57:13 +00:00
frosch 03ed59a004 Codechange: Turn AnimationStatus into an enum class. 2025-04-15 20:42:44 +02:00
frosch 47f0f4dd9e Fix: [NewGRF] Animation speed properties of houses and stations had wrong default. 2025-04-15 20:42:44 +02:00
frosch 301b209b87 Fix: [NewGRF] Roadstop animation/randomisation was not triggered on vehicle arrival. (#14003) 2025-04-15 14:53:29 +02:00
translators 5fad689782 Update: Translations from eints
norwegian (bokmal): 1 change by eriksorngard
2025-04-15 04:44:48 +00:00
Peter Nelson 5008568dfc Codechange: Rename CenterBounds to CentreBounds and move to geometry header. (#14002) 2025-04-14 23:55:40 +01:00
Michael Lutz fc20ce301a Doc: Missing changelog entry for 15.0-beta2. (#14001) 2025-04-14 18:50:02 +00:00
frosch d2c9828b4c Codechange: Move IsUtf8Part to only file using it. 2025-04-14 18:56:23 +02:00
frosch 588fedb5db Codechange: Remove unused Utf8Consume, Utf8Decode, Utf8EncodedCharLen. 2025-04-14 18:56:23 +02:00
frosch bf8a241f69 Codechange: Parse translation files using StringConsumer. 2025-04-14 18:10:14 +02:00
frosch b27fd83ff1 Codechange: Parse translation strings using StringConsumer. 2025-04-14 18:10:14 +02:00
frosch b81a35ea89 Codechange: Use StringConsumer and Builder in StrMakeValid and StrValid. 2025-04-14 18:07:23 +02:00
frosch dc21fae18e Codechange: Add InPlaceReplacement to couple StringConsumer and Builder on the same buffer. 2025-04-14 18:07:23 +02:00
frosch f5ffd4789b Codechange: Use StringConsumer in FormatString. 2025-04-14 16:57:41 +02:00
frosch 15a17d832f Codechange: Use StringConsumer in HandleNewGRFStringControlCodes. 2025-04-14 16:57:41 +02:00
frosch 98efd3c96e Codefix #13872: Use StringConsumer in TranslateTTDPatchCodes. 2025-04-14 16:57:41 +02:00
John Taylor 069edc1a4b Fix #13954: Plotting graphs with limited data to the right. (#13956) 2025-04-14 16:57:07 +02:00
translators 3dacf46870 Update: Translations from eints
vietnamese: 7 changes by KhoiCanDev
2025-04-14 04:44:46 +00:00
Peter Nelson d48bc18721 Codechange: Rename badge_class to class_index and badge_classes to gui_classes internally. (#13995)
These names are already used in some places, so this brings a bit of consistency.
2025-04-13 21:06:09 +01:00
frosch 131b7c7122 Codechange: Replace Utf8Decode usages with StringConsumer. 2025-04-13 21:59:10 +02:00
frosch 9bcd3feb17 Codechange: Make SQFile a buffered reader, based on StringConsumer. 2025-04-13 21:59:10 +02:00
frosch 3964d053b5 Codechange: Replace BufState with StringConsumer. 2025-04-13 21:59:10 +02:00
frosch 96eee0e8e4 Codechange: Base ByteReader on StringConsumer. 2025-04-13 21:59:10 +02:00
frosch 800d6e339d Codechange: Add StringConsumer. 2025-04-13 21:59:10 +02:00
Peter Nelson 4721a1f93e Fix: Don't display badges if the class has no name. (#13994)
Unnamed badges are intended to be for internal-use, not for player information.

Additionally if there is no name to the class, then is causes problems when user configuration comes.
2025-04-13 18:00:41 +01:00
1624 changed files with 104752 additions and 78053 deletions
-1
View File
@@ -50,7 +50,6 @@ Describe here
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.
* The bug fix is important enough to be backported? (label: 'backport requested')
* This PR touches english.txt or translations? Check the [guidelines](https://github.com/OpenTTD/OpenTTD/blob/master/docs/eints.md)
* This PR affects the save game format? (label 'savegame upgrade')
* This PR affects the GS/AI API? (label 'needs review: Script API')
* ai_changelog.hpp, game_changelog.hpp need updating.
* The compatibility wrappers (compat_*.nut) need updating.
+2
View File
@@ -10,3 +10,5 @@ query-filters:
- cpp/irregular-enum-init
# Our GUI code tends to use switches for OnClick handlers, DrawWidget, and UpdateWidgetSize. Sometimes GUIs just don't have many elements, but we want to keep consistency.
- cpp/trivial-switch
# Our (GUI) code tends to use long switches.
- cpp/long-switch
+2
View File
@@ -8,3 +8,5 @@ updates:
actions:
patterns:
- "*"
commit-message:
prefix: "Upgrade: "
+85
View File
@@ -0,0 +1,85 @@
"""
Script to scan the OpenTTD source-tree for doxygen @file annotations.
Checks whether they exist, are recognised by doxygen and match coding style.
"""
import os
import sys
END_OF_SENTENCE = [".", "!", "?"]
SOURCE_FILE_EXTENSION = ["cpp", "c", "hpp", "h", "mm", "m", "cc"]
TEMPLATE_FILE_EXTENSION = ["preamble", "in"]
REPO_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
EXCLUDED_FILES = [
os.path.join(REPO_DIR, "src", "script", "api", "squirrel_export.sq.hpp.in"),
os.path.join(REPO_DIR, "src", "script", "api", "script_includes.hpp.in"),
]
def read_files_list_from_file(file_path):
with open(file_path, "r") as f:
while line := f.readline():
yield line[:-1]
def list_files_walk(start_path="."):
for root, dirs, files in os.walk(start_path):
for file in files:
yield os.path.join(root, file)
def check_descriptions(files):
errors = []
for path in files:
if os.path.abspath(path) in EXCLUDED_FILES:
continue
if path.find("3rdparty") != -1 or path.find("lang") != -1:
continue
if not os.path.isfile(path):
continue
name = path[path.rfind("/") + 1 :]
while True:
extension = name[name.rfind('.') + 1 :]
if extension not in TEMPLATE_FILE_EXTENSION:
break
name = name[0 : -len(extension) - 1]
if extension not in SOURCE_FILE_EXTENSION:
continue
with open(path, "r") as f:
content = f.read()
ann = content.find(f"@file {name} ")
reason = f'Should be of the form "/** @file {name} Brief description of the file here. */"'
if ann == -1:
if content.find("@file") == -1:
errors.append(f'File "{path}" does not provide description. {reason}')
continue
else:
end = content.find("\n", ann)
start = content.rfind("\n", 0, ann) + 1
if content[start : ann] == "/** " and content[end - 3 : end] == " */" and content[end - 4] in END_OF_SENTENCE:
continue
elif content[start : ann] == " * ":
if content[start - 4 : start - 1] == "/**" and content[end - 1] in END_OF_SENTENCE and content[end + 1 : end + 4] != " */":
continue
reason = f"Should be of the form:\n/**\n * @file {name} Brief description of the file here.\n * Detailed description of the file here.\n */"
errors.append(f'Description of file "{path}" does not match coding style. {reason}')
return errors
def main():
if len(sys.argv) == 1:
files = list_files_walk(os.path.join(REPO_DIR, "src"))
else:
files = read_files_list_from_file(sys.argv[1])
errors = check_descriptions(files)
if errors:
print("\n".join(errors))
sys.exit(1)
print("OK")
if __name__ == "__main__":
main()
+26
View File
@@ -0,0 +1,26 @@
name: Install Doxygen
runs:
using: composite
steps:
- name: Install Doxygen
run: |
echo "::group::Downloading"
# Download currently (at the time of creation this action) latest version of Doxygen
# because version in ubuntu repository (1.9.8) is outdated and buggy.
wget -O doxygen.tar.gz "https://github.com/doxygen/doxygen/releases/download/Release_1_17_0/doxygen-1.17.0.linux.bin.tar.gz"
echo "::endgroup::"
echo "::group::Unpacking"
tar -xzf doxygen.tar.gz
rm doxygen.tar.gz
echo "::endgroup::"
echo "::group::Installing"
cd doxygen*
sudo make install
echo "::endgroup::"
cd ..
rm -r doxygen*
shell: bash
+28
View File
@@ -0,0 +1,28 @@
""" Script that sorts warnings generated by doxygen to maintain consistent order. """
import sys
def read_by_line(file_path):
with open(file_path, "r") as f:
while line := f.readline():
yield line[:-1]
def main():
if len(sys.argv) != 3:
print("Wrong number of arguments provided, expected two.")
print("Usage: python3 sort_doxygen_warnings.py [input_file] [output_file]")
sys.exit(1)
warnings = []
for line in read_by_line(sys.argv[1]):
if "warning:" in line or "error:" in line:
warnings.append(line)
continue
# Doxygen warnings can span multiple lines, keep these lines together.
warnings[-1] = f"{warnings[-1]}\n{line}"
warnings = sorted(set(warnings))
with open(sys.argv[2], "w") as out:
out.write("\n".join(warnings))
out.write("\n")
print("Doxygen warnings sorted successfully.")
if __name__ == "__main__":
main()
+1 -1
View File
@@ -158,7 +158,7 @@ def scan_source_files(path, strings_found):
# Most files we can just open, but some use magic, that requires the
# G++ preprocessor before we can make sense out of it.
if new_path == "src/table/cargo_const.h":
p = subprocess.run(["g++", "-E", new_path], stdout=subprocess.PIPE)
p = subprocess.run(["g++", "-E", "-DCHECK_UNUSED_STRINGS", new_path], stdout=subprocess.PIPE)
output = p.stdout.decode()
else:
with open(new_path) as fp:
+1 -1
View File
@@ -105,4 +105,4 @@ jobs:
steps:
- name: Check annotations
uses: OpenTTD/actions/annotation-check@v5
uses: OpenTTD/actions/annotation-check@v6
+4 -11
View File
@@ -14,30 +14,23 @@ jobs:
container:
# If you change this version, change the numbers in the cache step,
# .github/workflows/preview-build.yml (2x) and os/emscripten/Dockerfile too.
image: emscripten/emsdk:3.1.57
image: emscripten/emsdk:6.0.1
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Fix dubious ownership
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Update to modern GCC
run: |
apt-get update
apt-get install -y gcc-12 g++-12
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
- name: Setup cache
uses: actions/cache@v4
uses: actions/cache@v6
with:
# If you change this version, change the numbers in the image configuration step,
# .github/workflows/preview-build.yml (2x) and os/emscripten/Dockerfile too.
path: /emsdk/upstream/emscripten/cache
key: 3.1.57-${{ runner.os }}
key: 6.0.1-${{ runner.os }}
- name: Add liblzma support
run: |
+5 -14
View File
@@ -30,20 +30,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg
${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
run: |
@@ -74,7 +65,7 @@ jobs:
# We only use breakpad from vcpkg, as its CMake files
# are a bit special. So the Ubuntu's variant doesn't work.
${{ runner.temp }}/vcpkg/vcpkg install breakpad
${{ steps.vcpkg.outputs.vcpkg }} install breakpad
echo "::endgroup::"
env:
+5 -14
View File
@@ -32,20 +32,11 @@ jobs:
xcode-version: latest-stable
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg
${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install OpenGFX
run: |
@@ -74,7 +65,7 @@ jobs:
cmake .. \
-DCMAKE_OSX_ARCHITECTURES=${{ inputs.full_arch }} \
-DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-osx \
-DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkg-cmake }} \
${{ inputs.extra-cmake-parameters }} \
# EOF
echo "::endgroup::"
+11 -10
View File
@@ -21,7 +21,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
@@ -31,15 +31,16 @@ jobs:
install: >-
git
make
mingw-w64-${{ inputs.arch }}-cmake
mingw-w64-${{ inputs.arch }}-gcc
mingw-w64-${{ inputs.arch }}-lzo2
mingw-w64-${{ inputs.arch }}-libpng
mingw-w64-${{ inputs.arch }}-lld
mingw-w64-${{ inputs.arch }}-ninja
mingw-w64-${{ inputs.arch }}-libogg
mingw-w64-${{ inputs.arch }}-opus
mingw-w64-${{ inputs.arch }}-opusfile
pacboy: >-
cmake:p
gcc:p
lzo2:p
libpng:p
lld:p
ninja:p
libogg:p
opus:p
opusfile:p
- name: Install OpenGFX
shell: bash
+2 -4
View File
@@ -31,10 +31,8 @@ jobs:
fail-fast: false
matrix:
include:
- msystem: MINGW64
- msystem: UCRT64
arch: x86_64
- msystem: MINGW32
arch: i686
name: MinGW (${{ matrix.arch }})
@@ -57,4 +55,4 @@ jobs:
steps:
- name: Check annotations
uses: OpenTTD/actions/annotation-check@v5
uses: OpenTTD/actions/annotation-check@v6
+5 -14
View File
@@ -18,20 +18,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg
${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install OpenGFX
shell: bash
@@ -69,7 +60,7 @@ jobs:
cmake .. \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DCMAKE_TOOLCHAIN_FILE="${{ steps.vcpkg.outputs.vcpkg-cmake }}" \
# EOF
echo "::endgroup::"
+9 -17
View File
@@ -21,23 +21,15 @@ jobs:
actions: read
contents: read
security-events: write
packages: read
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg
${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
run: |
@@ -67,7 +59,7 @@ jobs:
# We only use breakpad from vcpkg, as its CMake files
# are a bit special. So the Ubuntu's variant doesn't work.
${{ runner.temp }}/vcpkg/vcpkg install breakpad
${{ steps.vcpkg.outputs.vcpkg }} install breakpad
echo "::endgroup::"
env:
@@ -83,7 +75,7 @@ jobs:
echo "::endgroup::"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: cpp
config-file: ./.github/codeql/codeql-config.yml
@@ -99,7 +91,7 @@ jobs:
echo "::endgroup::"
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: /language:cpp
upload: False
@@ -117,6 +109,6 @@ jobs:
output: sarif-results/cpp.sarif
- name: Upload results
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: sarif-results/cpp.sarif
+2 -2
View File
@@ -14,12 +14,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 4
- name: Get pull-request commits
uses: OpenTTD/actions/checkout-pull-request@v5
uses: OpenTTD/actions/checkout-pull-request@v6
- name: Check commits
uses: OpenTTD/OpenTTD-git-hooks@main
+88
View File
@@ -0,0 +1,88 @@
name: Docs checker
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
docs-checker:
name: New doxygen warnings checker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: 4
- name: Get pull-request commits
uses: OpenTTD/actions/checkout-pull-request@v6
- name: Install Doxygen
uses: ./.github/install-doxygen
- name: Build docs for PR
run: |
mkdir build
echo "::group::CMake"
cmake -S . -B build -DOPTION_DOCS_ONLY=ON -DOPTION_LINE_IN_DOXYGEN_WARNINGS=OFF -DOPTION_DOXYGEN_GS_WARN_FILE="Warnings.GS" -DOPTION_DOXYGEN_AI_WARN_FILE="Warnings.AI" -DOPTION_DOXYGEN_WARN_FILE="Warnings.source"
echo "::endgroup::"
echo "::group::Build Source"
cmake --build build --target docs_source
python3 .github/sort_doxygen_warnings.py build/Warnings.source doxygen_warnings.PR
echo "::endgroup::"
echo "::group::Build AI"
cmake --build build --target docs_ai
python3 .github/sort_doxygen_warnings.py build/Warnings.AI doxygen_AI_warnings.PR
echo "::endgroup::"
echo "::group::Build GS"
cmake --build build --target docs_game
python3 .github/sort_doxygen_warnings.py build/Warnings.GS doxygen_GS_warnings.PR
echo "::endgroup::"
rm -r build
- name: Build docs for base branch
run: |
git checkout HEAD^
mkdir build
echo "::group::CMake"
cmake -S . -B build -DOPTION_DOCS_ONLY=ON -DOPTION_LINE_IN_DOXYGEN_WARNINGS=OFF -DOPTION_DOXYGEN_GS_WARN_FILE="Warnings.GS" -DOPTION_DOXYGEN_AI_WARN_FILE="Warnings.AI" -DOPTION_DOXYGEN_WARN_FILE="Warnings.source"
echo "::endgroup::"
echo "::group::Build Source"
cmake --build build --target docs_source
python3 .github/sort_doxygen_warnings.py build/Warnings.source doxygen_warnings.base
echo "::endgroup::"
echo "::group::Build AI"
cmake --build build --target docs_ai
python3 .github/sort_doxygen_warnings.py build/Warnings.AI doxygen_AI_warnings.base
echo "::endgroup::"
echo "::group::Build GS"
cmake --build build --target docs_game
python3 .github/sort_doxygen_warnings.py build/Warnings.GS doxygen_GS_warnings.base
echo "::endgroup::"
rm -r build
- name: Compare doxygen warnings and errors
run: |
unset FAIL
diff doxygen_warnings.base doxygen_warnings.PR | grep '^>' && FAIL=1
diff doxygen_AI_warnings.base doxygen_AI_warnings.PR | grep '^>' && FAIL=1
diff doxygen_GS_warnings.base doxygen_GS_warnings.PR | grep '^>' && FAIL=1
if [ $FAIL ]; then
exit 1;
fi
+29
View File
@@ -0,0 +1,29 @@
name: File descriptions
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
file-descriptions:
name: File descriptions
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: 4
- name: Get pull-request commits
uses: OpenTTD/actions/checkout-pull-request@v6
- name: Check descriptions of source files
run: |
git diff-tree --no-commit-id --name-only -r HEAD HEAD^ > modified_files.txt
cat modified_files.txt
set -ex
python3 .github/file-descriptions.py modified_files.txt
+13 -33
View File
@@ -2,31 +2,20 @@ name: Preview build
on:
workflow_call:
secrets:
PREVIEW_CLOUDFLARE_API_TOKEN:
description: API token to upload a preview to Cloudflare Pages
required: true
PREVIEW_CLOUDFLARE_ACCOUNT_ID:
description: Account ID to upload a preview to Cloudflare Pages
required: true
jobs:
preview:
name: Build preview
environment:
name: preview
url: https://preview.openttd.org/pr${{ github.event.pull_request.number }}/
runs-on: ubuntu-latest
container:
# If you change this version, change the numbers in the cache step,
# .github/workflows/ci-emscripten.yml (2x) and os/emscripten/Dockerfile too.
image: emscripten/emsdk:3.1.57
image: emscripten/emsdk:6.0.1
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
@@ -35,20 +24,13 @@ jobs:
git config --global --add safe.directory ${GITHUB_WORKSPACE}
git checkout -b pr${{ github.event.pull_request.number }}
- name: Update to modern GCC
run: |
apt-get update
apt-get install -y gcc-12 g++-12
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
- name: Setup cache
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: /emsdk/upstream/emscripten/cache
# If you change this version, change the numbers in the image configuration step,
# .github/workflows/ci-emscripten.yml (2x) and os/emscripten/Dockerfile too.
key: 3.1.57-${{ runner.os }}
key: 6.0.1-${{ runner.os }}
- name: Add liblzma support
run: |
@@ -97,16 +79,14 @@ jobs:
cp build/openttd.js public/
cp build/openttd.wasm public/
# Ensure we use the latest version of npm; the one we get with current
# emscripten doesn't allow running "npx wrangler" as root.
# Current emscripten can't install npm>=10.0.0 because node is too old.
npm install -g npm@9
mkdir pr
echo ${{ github.event.pull_request.number }} > ./pr/number
- name: Publish preview
uses: cloudflare/pages-action@v1
- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
apiToken: ${{ secrets.PREVIEW_CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ vars.PREVIEW_CLOUDFLARE_PROJECT_NAME }}
directory: public
branch: pr${{ github.event.pull_request.number }}
name: pr${{ github.event.pull_request.number }}
path: |
public
pr
retention-days: 1
+59
View File
@@ -0,0 +1,59 @@
name: Preview publish
on:
workflow_run:
workflows:
- Preview
types:
- completed
jobs:
preview:
name: Publish preview
runs-on: ubuntu-latest
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
steps:
- name: Create deployment
id: deployment
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/${{ github.repository }}/deployments \
-d '{"ref":"${{ github.event.workflow_run.head_sha }}","environment":"preview","required_contexts":[]}' \
| jq --raw-output0 '"url=\(.statuses_url)"' >> $GITHUB_OUTPUT
- name: Download artifacts
uses: actions/download-artifact@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{github.event.workflow_run.id }}
- name: Get PR number
id: pr
run: |
echo "number=$(cat pr/number)" >> $GITHUB_OUTPUT
- name: Publish preview
uses: cloudflare/wrangler-action@v4
with:
apiToken: ${{ secrets.PREVIEW_CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy public --project-name=${{ vars.PREVIEW_CLOUDFLARE_PROJECT_NAME }} --branch pr${{ steps.pr.outputs.number }}
- name: Update deployment
if: always()
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2026-03-10" \
${{ steps.deployment.outputs.url }} \
-d '{"state":"${{ job.status }}","log_url":"${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}","environment_url":"https://preview.openttd.org/pr${{ steps.pr.outputs.number }}/","auto_inactive":false}'
+1 -1
View File
@@ -1,7 +1,7 @@
name: Preview
on:
pull_request_target:
pull_request:
types:
- labeled
- synchronize
+4 -15
View File
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
@@ -23,19 +23,8 @@ jobs:
run: |
tar -xf source.tar.gz --strip-components=1
- name: Install dependencies
run: |
echo "::group::Update apt"
sudo apt-get update
echo "::endgroup::"
echo "::group::Install dependencies"
sudo apt-get install -y --no-install-recommends \
doxygen \
# EOF
echo "::endgroup::"
env:
DEBIAN_FRONTEND: noninteractive
- name: Install Doxygen
uses: ./.github/install-doxygen
- name: Build
run: |
@@ -78,7 +67,7 @@ jobs:
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-docs
path: build/bundles/*.tar.xz
+14 -22
View File
@@ -21,7 +21,7 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
@@ -35,22 +35,16 @@ jobs:
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install dependencies
run: |
echo "::group::Install system dependencies"
# perl-IPC-Cmd, wget, and zip are needed to run vcpkg.
# autoconf-archive is needed to build ICU.
# perl-Time-Piece is needed to build OpenSSL.
yum install -y \
autoconf-archive \
perl-IPC-Cmd \
perl-Time-Piece \
wget \
zip \
# EOF
@@ -89,6 +83,7 @@ jobs:
yum install -y \
alsa-lib-devel \
pulseaudio-libs-devel \
pipewire-devel \
# EOF
echo "::endgroup::"
@@ -113,20 +108,17 @@ jobs:
# EOF
echo "::endgroup::"
# We use vcpkg for our dependencies, to get more up-to-date version.
echo "::group::Install vcpkg and dependencies"
git clone https://github.com/microsoft/vcpkg /vcpkg
(
cd /vcpkg
./bootstrap-vcpkg.sh -disableMetrics
)
echo "::group::Install breakpad dependencies"
cargo install --locked dump_syms
echo "::endgroup::"
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
with:
vcpkg-location: /vcpkg
mono-install-command: 'yum install -y mono-complete'
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
@@ -137,7 +129,7 @@ jobs:
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkg-cmake }} \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
-DOPTION_PACKAGE_DEPENDENCIES=ON \
@@ -168,14 +160,14 @@ jobs:
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-linux-generic
path: build/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: symbols-linux-generic
path: build/symbols
+9 -18
View File
@@ -23,7 +23,7 @@ jobs:
xcode-version: latest-stable
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
@@ -37,18 +37,9 @@ jobs:
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}/vcpkg
${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
env:
@@ -86,7 +77,7 @@ jobs:
echo "::endgroup::"
- name: Import code signing certificates
uses: Apple-Actions/import-codesign-certs@v3
uses: Apple-Actions/import-codesign-certs@v7
with:
# The certificates in a PKCS12 file encoded as a base64 string
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
@@ -104,7 +95,7 @@ jobs:
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DVCPKG_TARGET_TRIPLET=arm64-osx \
-DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkg-cmake }} \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
@@ -125,7 +116,7 @@ jobs:
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DVCPKG_TARGET_TRIPLET=x64-osx \
-DCMAKE_TOOLCHAIN_FILE=${{ runner.temp }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_TOOLCHAIN_FILE=${{ steps.vcpkg.outputs.vcpkg-cmake }} \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
@@ -212,14 +203,14 @@ jobs:
mv _CPack_Packages/*/Bundle/openttd-*.zip bundles/
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-macos-universal
path: build-x64/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: symbols-macos-universal
path: build-x64/symbols
+5 -5
View File
@@ -30,14 +30,14 @@ jobs:
steps:
- name: Checkout (Release)
if: github.event_name == 'release'
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# We generate a changelog; for this we need the full git log.
fetch-depth: 0
- name: Checkout (Manual)
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
ref: ${{ github.event.inputs.ref }}
# We generate a changelog; for this we need the full git log.
@@ -45,7 +45,7 @@ jobs:
- name: Checkout (Trigger)
if: github.event_name == 'repository_dispatch'
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
ref: ${{ github.event.client_payload.ref }}
# We generate a changelog; for this we need the full git log.
@@ -202,14 +202,14 @@ jobs:
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-source
path: build/bundles/*
retention-days: 5
- name: Store source (for other jobs)
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: internal-source
path: source.tar.gz
+14 -14
View File
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
@@ -25,17 +25,17 @@ jobs:
tar -xf source.tar.gz --strip-components=1
- name: Download x86 build
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x86
- name: Download x64 build
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x64
- name: Download arm64 build
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-arm64
@@ -74,16 +74,16 @@ jobs:
mkdir -p builds/common-binaries/baseset
cd builds/common-binaries/baseset
echo "::group::Download OpenGFX"
curl -L https://cdn.openttd.org/opengfx-releases/7.1/opengfx-7.1-all.zip -o opengfx-all.zip
echo "::group::Download OpenGFX2"
curl -L https://cdn.openttd.org/opengfx2_classic-releases/0.8/opengfx2_classic-0.8-all.zip -o opengfx2_classic.zip
echo "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip opengfx-all.zip
tar xf opengfx-*.tar
echo "::group::Unpack OpenGFX2"
unzip opengfx2_classic.zip
tar xf OpenGFX2_Classic-0.8.tar
echo "::endgroup::"
rm -f opengfx-all.zip opengfx-*.tar
rm -f opengfx2_classic.zip OpenGFX2_Classic-0.8.tar
- name: Install OpenMSX
shell: bash
@@ -124,7 +124,7 @@ jobs:
run: |
cd builds
REM We need to provide a signed .appx to the Windows Store, so generate a certificate with password 'password'
REM We need to provide a signed .msix to the Windows Store, so generate a certificate with password 'password'
call ..\os\windows\winstore\generate-key.bat "CN=78024DA8-4BE4-4C77-B12E-547BBF7359D2" password cert.pfx
- name: Generate assets
@@ -176,16 +176,16 @@ jobs:
REM Build and sign the package
makeappx build /v /f PackagingLayout.xml /op output\ /bv %OTTD_VERSION% /pv %OTTD_VERSION% /ca
SignTool sign /fd sha256 /a /f cert.pfx /p password "output\OpenTTD.appxbundle"
SignTool sign /fd sha256 /a /f cert.pfx /p password "output\OpenTTD.msixbundle"
REM Move resulting files to bundles folder
mkdir bundles
mkdir bundles\internal
move cert.pfx bundles\internal\openttd-${{ inputs.version }}-windows-store.pfx
move output\OpenTTD.appxbundle bundles\internal\openttd-${{ inputs.version }}-windows-store.appxbundle
move output\OpenTTD.msixbundle bundles\internal\openttd-${{ inputs.version }}-windows-store.msixbundle
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-windows-store
path: builds/bundles
+9 -18
View File
@@ -30,7 +30,7 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
@@ -45,24 +45,15 @@ jobs:
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
- name: Install vcpkg
run: |
git clone https://github.com/microsoft/vcpkg ${{ runner.temp }}\vcpkg
${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat -disableMetrics
- name: Setup vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
shell: bash
run: |
echo "::group::Install choco dependencies"
choco install pandoc
choco install pandoc nsis
echo "::endgroup::"
echo "::group::Install breakpad dependencies"
@@ -111,7 +102,7 @@ jobs:
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DCMAKE_TOOLCHAIN_FILE="${{ steps.vcpkg.outputs.vcpkg-cmake }}" \
-DOPTION_USE_NSIS=ON \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
@@ -141,7 +132,7 @@ jobs:
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="${{ runner.temp }}\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DCMAKE_TOOLCHAIN_FILE="${{ steps.vcpkg.outputs.vcpkg-cmake }}" \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
@@ -202,14 +193,14 @@ jobs:
AZURE_CODESIGN_PROFILE_NAME: ${{ secrets.AZURE_CODESIGN_PROFILE_NAME }}
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: openttd-windows-${{ matrix.arch }}
path: build/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: symbols-windows-${{ matrix.arch }}
path: build/symbols
+15
View File
@@ -153,3 +153,18 @@ jobs:
with:
version: ${{ needs.source.outputs.version }}
upload-windows-store:
name: Upload (Windows Store)
needs:
- upload
# Only upload final release builds to Windows Store; "-beta" or "-RC" tags should be ignored
if: needs.source.outputs.is_tag == 'true' && !contains(needs.source.outputs.version, '-')
uses: ./.github/workflows/upload-windows-store.yml
secrets: inherit
with:
version: ${{ needs.source.outputs.version }}
trigger_type: ${{ needs.source.outputs.trigger_type }}
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Check for finding script functions that require company/deity mode enforcement/checks
run: |
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Check for unused strings
run: |
+6 -6
View File
@@ -21,7 +21,7 @@ jobs:
steps:
- name: Download all bundles
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
- name: Calculate checksums
run: |
@@ -70,14 +70,14 @@ jobs:
done
- name: Store bundles
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: cdn-bundles
path: bundles/*
retention-days: 5
- name: Store breakpad symbols
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: cdn-symbols
path: symbols/*
@@ -88,7 +88,7 @@ jobs:
- prepare
name: Publish bundles
uses: OpenTTD/actions/.github/workflows/rw-cdn-upload.yml@v5
uses: OpenTTD/actions/.github/workflows/rw-cdn-upload.yml@v6
secrets:
CDN_SIGNING_KEY: ${{ secrets.CDN_SIGNING_KEY }}
DEPLOYMENT_APP_ID: ${{ secrets.DEPLOYMENT_APP_ID }}
@@ -103,7 +103,7 @@ jobs:
- prepare
name: Publish symbols
uses: OpenTTD/actions/.github/workflows/rw-symbols-upload.yml@v5
uses: OpenTTD/actions/.github/workflows/rw-symbols-upload.yml@v6
secrets:
SYMBOLS_SIGNING_KEY: ${{ secrets.SYMBOLS_SIGNING_KEY }}
with:
@@ -130,7 +130,7 @@ jobs:
installation_retrieval_payload: "OpenTTD/workflows"
- name: Trigger 'Publish Docs'
uses: peter-evans/repository-dispatch@v3
uses: peter-evans/repository-dispatch@v4
with:
token: ${{ steps.generate_token.outputs.token }}
repository: OpenTTD/workflows
+17 -18
View File
@@ -15,40 +15,39 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
path: internal-source
- name: Download bundle (Windows x86)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x86
path: openttd-windows-x86
- name: Download bundle (Windows x64)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x64
path: openttd-windows-x64
- name: Download bundle (MacOS)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-macos-universal
path: openttd-macos-universal
- name: Download bundle (Linux)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-linux-generic
path: openttd-linux-generic
- name: Install GOG Galaxy Build Creator
run: |
wget https://cdn.gog.com/open/galaxy/pipeline/build_creator/gnu-linux/GOGGalaxyBuildCreator-1.4.0.AppImage
7z x GOGGalaxyBuildCreator-1.4.0.AppImage
chmod +x ./app/GOGGalaxyPipelineBuilder
wget https://cdn.gog.com/open/galaxy/pipeline/10.6.7.17/gnu-linux/GOGGalaxyPipelineBuilder
chmod +x ./GOGGalaxyPipelineBuilder
- name: Install OpenGFX
shell: bash
@@ -56,16 +55,16 @@ jobs:
mkdir -p gog/opengfx/baseset
cd gog/opengfx/baseset
echo "::group::Download OpenGFX"
curl -L https://cdn.openttd.org/opengfx-releases/7.1/opengfx-7.1-all.zip -o opengfx-all.zip
echo "::group::Download OpenGFX2"
curl -L https://cdn.openttd.org/opengfx2_classic-releases/0.8/opengfx2_classic-0.8-all.zip -o opengfx2_classic.zip
echo "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip opengfx-all.zip
tar xf opengfx-*.tar
echo "::group::Unpack OpenGFX2"
unzip opengfx2_classic.zip
tar xf OpenGFX2_Classic-0.8.tar
echo "::endgroup::"
rm -f opengfx-all.zip opengfx-*.tar
rm -f opengfx2_classic.zip OpenGFX2_Classic-0.8.tar
- name: Install OpenMSX
shell: bash
@@ -77,7 +76,7 @@ jobs:
curl -L https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip -o openmsx-all.zip
echo "::endgroup::"
echo "::group::Unpack OpenGFX"
echo "::group::Unpack OpenMSX"
unzip openmsx-all.zip
tar xf openmsx-*.tar
echo "::endgroup::"
@@ -145,8 +144,8 @@ jobs:
echo "::endgroup::"
echo "::group::Upload to GOG"
../app/GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing windows.json
../app/GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing macos.json
../app/GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing linux.json
../GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing windows.json
../GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing macos.json
../GOGGalaxyPipelineBuilder build-game --username "${{ secrets.GOG_USERNAME }}" --password "${{ secrets.GOG_PASSWORD }}" --branch Testing linux.json
echo "::endgroup::"
)
+5 -5
View File
@@ -18,31 +18,31 @@ jobs:
steps:
- name: Download source
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: internal-source
path: internal-source
- name: Download bundle (Windows x86)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x86
path: openttd-windows-x86
- name: Download bundle (Windows x64)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-windows-x64
path: openttd-windows-x64
- name: Download bundle (MacOS)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-macos-universal
path: openttd-macos-universal
- name: Download bundle (Linux)
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: openttd-linux-generic
path: openttd-linux-generic
@@ -0,0 +1,44 @@
name: Upload (Windows Store)
on:
workflow_call:
inputs:
version:
required: true
type: string
trigger_type:
required: true
type: string
jobs:
upload:
name: Upload (Windows Store)
runs-on: windows-latest
steps:
- name: Download bundle (Windows Store)
uses: actions/download-artifact@v8
with:
name: openttd-windows-store
path: openttd-windows-store
- name: Configure Microsoft Store CLI
uses: microsoft/microsoft-store-apppublisher@v1.3
- name: Reconfigure store credentials
run: msstore reconfigure `
--tenantId ${{ secrets.AZURE_TENANT_ID }} `
--sellerId ${{ secrets.WINSTORE_SELLER_ID }} `
--clientId ${{ secrets.AZURE_WINSTORE_APPLICATION_CLIENT_ID }} `
--clientSecret ${{ secrets.AZURE_WINSTORE_APPLICATION_SECRET }}
- name: Publish msix package
shell: pwsh
run: |
$bundle = Get-ChildItem openttd-windows-store/internal/openttd-*.msixbundle | Select-Object -First 1
if (-not $bundle) {
throw "No msixbundle found"
}
msstore publish $bundle.FullName -id 9NCJG5RVRR1C -v
+9 -5
View File
@@ -5,7 +5,7 @@ if(NOT BINARY_NAME)
endif()
project(${BINARY_NAME}
VERSION 15.0
VERSION 16.0
LANGUAGES CXX
)
@@ -75,6 +75,10 @@ add_custom_target(find_version
-DREV_MAJOR=${PROJECT_VERSION_MAJOR}
-DREV_MINOR=${PROJECT_VERSION_MINOR}
-DWINDOWS=${WIN32}
-DDOXYGEN_WARN_FORMAT_LINE=${DOXYGEN_WARN_FORMAT_LINE}
-DDOXYGEN_WARN_FILE=${DOXYGEN_WARN_FILE}
-DDOXYGEN_GS_WARN_FILE=${DOXYGEN_GS_WARN_FILE}
-DDOXYGEN_AI_WARN_FILE=${DOXYGEN_AI_WARN_FILE}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/FindVersion.cmake"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS ${GENERATED_SOURCE_FILES}
@@ -185,7 +189,7 @@ if(UNIX AND NOT APPLE AND NOT OPTION_DEDICATED)
if(NOT SDL2_FOUND AND NOT ALLEGRO_FOUND)
message(FATAL_ERROR "SDL2 or Allegro is required for this platform")
endif()
if(HARFBUZZ_FOUND AND NOT ICU_i18n_FOUND)
if(HARFBUZZ_FOUND AND NOT ICU_I18N_FOUND)
message(WARNING "HarfBuzz depends on ICU i18n to function; HarfBuzz will be disabled")
endif()
if(NOT HARFBUZZ_FOUND)
@@ -323,8 +327,8 @@ if(NOT OPTION_DEDICATED)
link_package(FREETYPE TARGET Freetype::Freetype)
link_package(Fontconfig TARGET Fontconfig::Fontconfig)
link_package(Harfbuzz TARGET harfbuzz::harfbuzz)
link_package(ICU_i18n)
link_package(ICU_uc)
link_package(ICU_I18N TARGET ICU::i18n)
link_package(ICU_UC TARGET ICU::uc)
link_package(OpusFile TARGET OpusFile::opusfile)
if(SDL2_FOUND AND OPENGL_FOUND AND UNIX)
@@ -366,7 +370,7 @@ if(EMSCRIPTEN)
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
# Export functions to Javascript.
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXPORTED_RUNTIME_METHODS='[\"cwrap\", \"HEAPU8\"]'")
# Preload all the files we generate during build.
# As we do not compile with FreeType / FontConfig, we also have no way to
+23
View File
@@ -196,6 +196,29 @@ These include:
You may also want the guide to [compiling OpenTTD](./COMPILING.md).
## Use of AI
OpenTTD is a labour of love, created by people.
Please refrain from submitting issues or pull requests that have been generated by an LLM or other fully-automated tools.
Any submission that is in violation of this policy will be closed, and the submitter may be blocked from this repository without warning.
If you submit an issue, you need to understand what your issue description is saying.
You need to be able to answer questions about your bug report or feature request.
Using an AI tool to _proofread_ your issue/comment text is acceptable. Using an AI tool to _write_ your issue/comment text is not.
If you submit a pull request, you need to understand what every line of code you've changed does.
If you can't explain why your PR is doing something, then do not submit it.
Using an AI tool to generate entire lines of code is unacceptable.
The rationale behind this policy is that automated contributions are a waste of the maintainers' time.
Humans spend their time and brainpower reviewing every submission.
Issues or pull requests generated by automation tools create an imbalance of effort between the submitter and the reviewer.
Nobody learns anything when a maintainer reviews code written by an LLM.
Additionally, AI-generated code conflicts with this project's license (GPL v2), since you cannot truly release code for use if you didn't author it yourself.
## Project goals
### What are the goals of the official branch?
+2 -3
View File
@@ -6,7 +6,7 @@ GNU General Public License
_Version 2, June 1991_
_Copyright © 1989, 1991 Free Software Foundation, Inc.,_
_51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA_
_[https://fsf.org/](https://fsf.org/)_
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -304,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
with this program. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
Also add information on how to contact you by electronic and paper mail.
+20 -16
View File
@@ -1,7 +1,7 @@
# This file is part of OpenTTD.
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
# Doxyfile 1.9.4
@@ -45,7 +45,9 @@ PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 2
ALIASES =
ALIASES = important="@attention" # @important is available in newer versions of doxygen.
ALIASES += split_group{1}="@}^^@{^^@ingroup \1^^" \
split_group{3;}="^^@defgroup \1_\2 \3^^@ingroup \1^^@{^^@}^^@}^^@{^^@ingroup \1_\2^^"
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
@@ -59,7 +61,7 @@ BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
DISTRIBUTE_GROUP_DOC = YES
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
@@ -118,11 +120,12 @@ WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO
WARN_NO_PARAMDOC = YES
WARN_IF_UNDOC_ENUM_VAL = YES
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LINE_FORMAT = "at line $line of file $file"
WARN_LOGFILE =
WARN_FORMAT = "$file:$${DOXYGEN_WARN_FORMAT_LINE}: $text"
WARN_LINE_FORMAT = "at line $${DOXYGEN_WARN_FORMAT_LINE} of file $file"
WARN_LOGFILE = ${DOXYGEN_WARN_FILE}
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
@@ -134,12 +137,15 @@ FILE_PATTERNS = *.c \
*.cpp \
*.c++ \
*.h \
*.hpp
*.hpp \
*.mm \
*.m
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */3rdparty \
*/script/api
*/script/api \
*/tests
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
@@ -185,7 +191,6 @@ HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = NO
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100
@@ -221,7 +226,6 @@ EXT_LINKS_IN_WINDOW = NO
OBFUSCATE_EMAILS = YES
HTML_FORMULA_FORMAT = png
FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
FORMULA_MACROFILE =
USE_MATHJAX = NO
MATHJAX_VERSION = MathJax_2
@@ -256,7 +260,6 @@ USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
@@ -317,10 +320,14 @@ PREDEFINED = WITH_ZLIB \
WITH_HARFBUZZ \
WITH_ICU_I18N \
UNICODE \
DOXYGEN_API \
_UNICODE \
_GNU_SOURCE \
CDECL= \
CALLBACK= \
APIENTRY= \
FINAL=
EXPAND_AS_DEFINED =
EXPAND_AS_DEFINED = DEFINE_POOL_METHOD
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
@@ -337,8 +344,6 @@ DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
@@ -366,7 +371,6 @@ PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
+2 -14
View File
@@ -37,12 +37,10 @@ Both 'stable' and 'nightly' versions are available for download:
OpenTTD is also available for free on [Steam](https://store.steampowered.com/app/1536610/OpenTTD/), [GOG.com](https://www.gog.com/game/openttd), and the [Microsoft Store](https://www.microsoft.com/p/openttd-official/9ncjg5rvrr1c). On some platforms OpenTTD will be available via your OS package manager or a similar service.
## 1.2) OpenTTD gameplay manual
OpenTTD has a [community-maintained wiki](https://wiki.openttd.org/), including a gameplay manual and tips.
## 1.3) Supported platforms
OpenTTD has been ported to several platforms and operating systems.
@@ -56,6 +54,7 @@ The currently supported platforms are:
Other platforms may also work (in particular various BSD systems), but we don't actively test or maintain these.
### 1.3.1) Legacy support
Platforms, languages and compilers change.
We'll keep support going on old platforms as long as someone is interested in supporting them, except where it means the project can't move forward to keep up with language and compiler features.
@@ -72,7 +71,6 @@ For some platforms these will be downloaded during the installation process if r
For some platforms, you will need to refer to [the installation guide](https://wiki.openttd.org/en/Manual/Installation).
### 1.4.1) Free graphics and sound files
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
@@ -85,7 +83,6 @@ OpenMSX for music can be found at:
Please follow the readme of these packages about the installation procedure.
The Windows installer can optionally download and install these packages.
### 1.4.2) Original Transport Tycoon Deluxe graphics and sound files
If you want to play with the original Transport Tycoon Deluxe data files you have to copy the data files from the CD-ROM into the baseset/ directory.
@@ -100,7 +97,6 @@ You need to copy the following files:
- trgir.grf or TRGI.GRF
- trgtr.grf or TRGT.GRF
### 1.4.3) Original Transport Tycoon Deluxe music
If you want the Transport Tycoon Deluxe music, copy the appropriate files from the original game into the baseset folder.
@@ -108,7 +104,6 @@ If you want the Transport Tycoon Deluxe music, copy the appropriate files from t
- TTD for DOS: The GM.CAT file
- Transport Tycoon Original: The GM.CAT file, but rename it to GM-TTO.CAT
## 1.5) Add-on content / mods
OpenTTD features multiple types of add-on content, which modify gameplay in different ways.
@@ -117,7 +112,6 @@ Most types of add-on content can be downloaded within OpenTTD via the 'Check Onl
Add-on content can also be installed manually, but that's more complicated; the [OpenTTD wiki](https://wiki.openttd.org/) may offer help with that, or the [OpenTTD directory structure guide](./docs/directory_structure.md).
### 1.5.1) Social Integration
OpenTTD has the ability to load plugins to integrate with Social Platforms like Steam, Discord, etc.
@@ -126,7 +120,6 @@ To enable such integration, the plugin for the specific platform has to be downl
See [OpenTTD's website](https://www.openttd.org), under Downloads, for what plugins are available.
### 1.6) OpenTTD directories
OpenTTD uses its own directory structure to store game data, add-on content etc.
@@ -137,7 +130,6 @@ For more information, see the [directory structure guide](./docs/directory_struc
If you want to compile OpenTTD from source, instructions can be found in [COMPILING.md](./COMPILING.md).
## 2.0) Contact and Community
'Official' channels
@@ -160,12 +152,10 @@ You can play OpenTTD with others, either cooperatively or competitively.
See the [multiplayer documentation](./docs/multiplayer.md) for more details.
### 2.2) Contributing to OpenTTD
We welcome contributors to OpenTTD. More information for contributors can be found in [CONTRIBUTING.md](./CONTRIBUTING.md)
### 2.3) Reporting bugs
Good bug reports are very helpful. We have a [guide to reporting bugs](./CONTRIBUTING.md#bug-reports) to help with this.
@@ -173,12 +163,10 @@ Good bug reports are very helpful. We have a [guide to reporting bugs](./CONTRI
Desyncs in multiplayer are complex to debug and report (some software development skils are required).
Instructions can be found in [debugging and reporting desyncs](./docs/debugging_desyncs.md).
### 2.4) Translating
OpenTTD is translated into many languages. Translations are added and updated via the [online translation tool](https://translator.openttd.org).
## 3.0) Licensing
OpenTTD is licensed under the GNU General Public License version 2.0.
@@ -215,6 +203,6 @@ See `src/3rdparty/openttd_social_integration_api/LICENSE` for the complete licen
The atomic datatype support detection in `cmake/3rdparty/llvm/CheckAtomic.cmake` is licensed under the Apache 2.0 license.
See `cmake/3rdparty/llvm/LICENSE.txt` for the complete license text.
## 4.0 Credits
## 4.0) Credits
See [CREDITS.md](./CREDITS.md)
+1
View File
@@ -15,6 +15,7 @@ set(AI_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_12.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_13.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_14.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_15.nut
)
foreach(AI_COMPAT_SOURCE_FILE IN LISTS AI_COMPAT_SOURCE_FILES)
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.0 to 0.7. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.1 to 1.0. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.2 to 1.1. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.11 to 1.10. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 12 to 1.11. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.3 to 1.2. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.4 to 1.3. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.5 to 1.4. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.6 to 1.5. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.7 to 1.6. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.8 to 1.7. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.9 to 1.8. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.10 to 1.9. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 13 to 12. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 14 to 13. */
+9 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 15 to 14. */
@@ -36,3 +36,11 @@ AITown.FoundTown <- function(tile, size, city, layout, name) { return AITown.Fou
AIVehicle.SetNameCompat14 <- AIVehicle.SetName;
AIVehicle.SetName <- function(id, name) { return AIVehicle.SetNameCompat14(id, AICompat14.Text(name)); }
AIObject.constructorCompat14 <- AIObject.constructor;
foreach(name, object in CompatScriptRootTable) {
if (type(object) != "class") continue;
if (!object.rawin("constructor")) continue;
if (object.constructor != AIObject.constructorCompat14) continue;
object.constructor <- function() : (name) { AILog.Error("'" + name + "' is not instantiable"); }
}
@@ -2,8 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */
${SQUIRREL_EXPORT}
/* This file contains code to downgrade the API from 16 to 15. */
+1
View File
@@ -12,6 +12,7 @@ set(GS_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_12.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_13.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_14.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_15.nut
)
foreach(GS_COMPAT_SOURCE_FILE IN LISTS GS_COMPAT_SOURCE_FILES)
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.11 to 1.10. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 12 to 1.11. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.3 to 1.2. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.4 to 1.3. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.5 to 1.4 */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.6 to 1.5. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.7 to 1.6. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.8 to 1.7. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.9 to 1.8. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 1.10 to 1.9. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 13 to 12. */
+1 -1
View File
@@ -2,7 +2,7 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 14 to 13. */
+12 -1
View File
@@ -2,13 +2,16 @@
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 15 to 14. */
GSBridge.GetBridgeID <- GSBridge.GetBridgeType;
/* Emulate old GSText parameter padding behaviour */
GSText.SCRIPT_TEXT_MAX_PARAMETERS <- 20;
class GSCompat14 {
function Text(text)
{
@@ -78,3 +81,11 @@ GSTown.FoundTown <- function(tile, size, city, layout, name) { return GSTown.Fou
GSVehicle.SetNameCompat14 <- GSVehicle.SetName;
GSVehicle.SetName <- function(id, name) { return GSVehicle.SetNameCompat14(id, GSCompat14.Text(name)); }
GSObject.constructorCompat14 <- GSObject.constructor;
foreach(name, object in CompatScriptRootTable) {
if (type(object) != "class") continue;
if (!object.rawin("constructor")) continue;
if (object.constructor != GSObject.constructorCompat14) continue;
object.constructor <- function() : (name) { GSLog.Error("'" + name + "' is not instantiable"); }
}
+140
View File
@@ -0,0 +1,140 @@
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
*/
/* This file contains code to downgrade the API from 16 to 15. */
/*
* These window/widget related enumerations have never been stable, but breaking anything using them
* is a really big ask when restructuring code. If in the future things are removed from the underlying
* enumerations, feel free to remove them from this compatibility script.
*/
GSWindow.WN_GAME_OPTIONS_AI <- GSWindow.GameOptionsWindowNumber.AI;
GSWindow.WN_GAME_OPTIONS_GS <- GSWindow.GameOptionsWindowNumber.GS;
GSWindow.WN_GAME_OPTIONS_ABOUT <- GSWindow.GameOptionsWindowNumber.About;
GSWindow.WN_GAME_OPTIONS_NEWGRF_STATE <- GSWindow.GameOptionsWindowNumber.NewGRFState;
GSWindow.WN_GAME_OPTIONS_GAME_OPTIONS <- GSWindow.GameOptionsWindowNumber.GameOptions;
GSWindow.WN_GAME_OPTIONS_GAME_SETTINGS <- GSWindow.GameOptionsWindowNumber.GameOptions;
GSWindow.WN_QUERY_STRING <- GSWindow.QueryStringWindowNumber.Default;
GSWindow.WN_QUERY_STRING_SIGN <- GSWindow.QueryStringWindowNumber.Sign;
GSWindow.WN_CONFIRM_POPUP_QUERY <- GSWindow.ConfirmPopupQueryWindowNumber.Default;
GSWindow.WN_CONFIRM_POPUP_QUERY_BOOTSTRAP <- GSWindow.ConfirmPopupQueryWindowNumber.Bootstrap;
GSWindow.WN_NETWORK_WINDOW_GAME <- GSWindow.NetworkWindowNumber.Game;
GSWindow.WN_NETWORK_WINDOW_CONTENT_LIST <- GSWindow.NetworkWindowNumber.ContentList;
GSWindow.WN_NETWORK_WINDOW_START <- GSWindow.NetworkWindowNumber.StartServer;
GSWindow.WN_NETWORK_STATUS_WINDOW_JOIN <- GSWindow.NetworkStatusWindowNumber.Join;
GSWindow.WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD <- GSWindow.NetworkStatusWindowNumber.ContentDownload;
GSWindow.WC_NONE <- GSWindow.WindowClass.None;
GSWindow.WC_MAIN_WINDOW <- GSWindow.WindowClass.MainWindow;
GSWindow.WC_MAIN_TOOLBAR <- GSWindow.WindowClass.MainToolbar;
GSWindow.WC_STATUS_BAR <- GSWindow.WindowClass.Statusbar;
GSWindow.WC_BUILD_TOOLBAR <- GSWindow.WindowClass.BuildToolbar;
GSWindow.WC_SCEN_BUILD_TOOLBAR <- GSWindow.WindowClass.ScenarioBuildToolbar;
GSWindow.WC_BUILD_TREES <- GSWindow.WindowClass.BuildTrees;
GSWindow.WC_TRANSPARENCY_TOOLBAR <- GSWindow.WindowClass.TransparencyToolbar;
GSWindow.WC_BUILD_SIGNAL <- GSWindow.WindowClass.BuildSignal;
GSWindow.WC_SMALLMAP <- GSWindow.WindowClass.SmallMap;
GSWindow.WC_ERRMSG <- GSWindow.WindowClass.ErrorMessage;
GSWindow.WC_TOOLTIPS <- GSWindow.WindowClass.ToolTips;
GSWindow.WC_QUERY_STRING <- GSWindow.WindowClass.QueryString;
GSWindow.WC_CONFIRM_POPUP_QUERY <- GSWindow.WindowClass.ConfirmPopupQuery;
GSWindow.WC_GOAL_QUESTION <- GSWindow.WindowClass.GoalQuestion;
GSWindow.WC_SAVELOAD <- GSWindow.WindowClass.SaveLoad;
GSWindow.WC_LAND_INFO <- GSWindow.WindowClass.LandInfo;
GSWindow.WC_DROPDOWN_MENU <- GSWindow.WindowClass.DropdownMenu;
GSWindow.WC_OSK <- GSWindow.WindowClass.OnScreenKeyboard;
GSWindow.WC_SET_DATE <- GSWindow.WindowClass.SetDate;
GSWindow.WC_SCRIPT_SETTINGS <- GSWindow.WindowClass.ScriptSettings;
GSWindow.WC_GRF_PARAMETERS <- GSWindow.WindowClass.NewGRFParameters;
GSWindow.WC_TEXTFILE <- GSWindow.WindowClass.Textfile;
GSWindow.WC_TOWN_AUTHORITY <- GSWindow.WindowClass.TownAuthority;
GSWindow.WC_VEHICLE_DETAILS <- GSWindow.WindowClass.VehicleDetails;
GSWindow.WC_VEHICLE_REFIT <- GSWindow.WindowClass.VehicleRefit;
GSWindow.WC_VEHICLE_ORDERS <- GSWindow.WindowClass.VehicleOrders;
GSWindow.WC_REPLACE_VEHICLE <- GSWindow.WindowClass.ReplaceVehicle;
GSWindow.WC_VEHICLE_TIMETABLE <- GSWindow.WindowClass.VehicleTimetable;
GSWindow.WC_COMPANY_COLOUR <- GSWindow.WindowClass.CompanyLivery;
GSWindow.WC_COMPANY_MANAGER_FACE <- GSWindow.WindowClass.CompanyManagerFace;
GSWindow.WC_SELECT_STATION <- GSWindow.WindowClass.JoinStation;
GSWindow.WC_NEWS_WINDOW <- GSWindow.WindowClass.News;
GSWindow.WC_TOWN_DIRECTORY <- GSWindow.WindowClass.TownDirectory;
GSWindow.WC_SUBSIDIES_LIST <- GSWindow.WindowClass.SubsidyList;
GSWindow.WC_INDUSTRY_DIRECTORY <- GSWindow.WindowClass.IndustryDirectory;
GSWindow.WC_MESSAGE_HISTORY <- GSWindow.WindowClass.MessageHistory;
GSWindow.WC_SIGN_LIST <- GSWindow.WindowClass.SignList;
GSWindow.WC_SCRIPT_LIST <- GSWindow.WindowClass.ScriptList;
GSWindow.WC_GOALS_LIST <- GSWindow.WindowClass.GoalList;
GSWindow.WC_STORY_BOOK <- GSWindow.WindowClass.StoryBook;
GSWindow.WC_STATION_LIST <- GSWindow.WindowClass.StationList;
GSWindow.WC_TRAINS_LIST <- GSWindow.WindowClass.TrainList;
GSWindow.WC_ROADVEH_LIST <- GSWindow.WindowClass.RoadVehicleList;
GSWindow.WC_SHIPS_LIST <- GSWindow.WindowClass.ShipList;
GSWindow.WC_AIRCRAFT_LIST <- GSWindow.WindowClass.AircraftList;
GSWindow.WC_TOWN_VIEW <- GSWindow.WindowClass.TownView;
GSWindow.WC_VEHICLE_VIEW <- GSWindow.WindowClass.VehicleView;
GSWindow.WC_STATION_VIEW <- GSWindow.WindowClass.StationView;
GSWindow.WC_VEHICLE_DEPOT <- GSWindow.WindowClass.VehicleDepot;
GSWindow.WC_WAYPOINT_VIEW <- GSWindow.WindowClass.WaypointView;
GSWindow.WC_INDUSTRY_VIEW <- GSWindow.WindowClass.IndustryView;
GSWindow.WC_COMPANY <- GSWindow.WindowClass.Company;
GSWindow.WC_BUILD_OBJECT <- GSWindow.WindowClass.BuildObject;
GSWindow.WC_BUILD_HOUSE <- GSWindow.WindowClass.BuildHouse;
GSWindow.WC_BUILD_VEHICLE <- GSWindow.WindowClass.BuildVehicle;
GSWindow.WC_BUILD_BRIDGE <- GSWindow.WindowClass.BuildBridge;
GSWindow.WC_BUILD_STATION <- GSWindow.WindowClass.BuildStation;
GSWindow.WC_BUS_STATION <- GSWindow.WindowClass.BuildBusStation;
GSWindow.WC_TRUCK_STATION <- GSWindow.WindowClass.BuildTruckStation;
GSWindow.WC_BUILD_DEPOT <- GSWindow.WindowClass.BuildDepot;
GSWindow.WC_BUILD_WAYPOINT <- GSWindow.WindowClass.BuildWaypoint;
GSWindow.WC_FOUND_TOWN <- GSWindow.WindowClass.FoundTown;
GSWindow.WC_BUILD_INDUSTRY <- GSWindow.WindowClass.BuildIndustry;
GSWindow.WC_SELECT_GAME <- GSWindow.WindowClass.SelectGame;
GSWindow.WC_SCEN_LAND_GEN <- GSWindow.WindowClass.ScenarioGenerateLandscape;
GSWindow.WC_GENERATE_LANDSCAPE <- GSWindow.WindowClass.GenerateLandscape;
GSWindow.WC_MODAL_PROGRESS <- GSWindow.WindowClass.ModalProgress;
GSWindow.WC_NETWORK_WINDOW <- GSWindow.WindowClass.Network;
GSWindow.WC_CLIENT_LIST <- GSWindow.WindowClass.NetworkClientList;
GSWindow.WC_NETWORK_STATUS_WINDOW <- GSWindow.WindowClass.NetworkStatus;
GSWindow.WC_NETWORK_ASK_RELAY <- GSWindow.WindowClass.NetworkAskRelay;
GSWindow.WC_NETWORK_ASK_SURVEY <- GSWindow.WindowClass.NetworkAskSurvey;
GSWindow.WC_SEND_NETWORK_MSG <- GSWindow.WindowClass.NetworkChat;
GSWindow.WC_INDUSTRY_CARGOES <- GSWindow.WindowClass.IndustryCargoes;
GSWindow.WC_GRAPH_LEGEND <- GSWindow.WindowClass.GraphLegend;
GSWindow.WC_FINANCES <- GSWindow.WindowClass.Finances;
GSWindow.WC_INCOME_GRAPH <- GSWindow.WindowClass.IncomeGraph;
GSWindow.WC_OPERATING_PROFIT <- GSWindow.WindowClass.OperatingProfitGraph;
GSWindow.WC_DELIVERED_CARGO <- GSWindow.WindowClass.DeliveredCargoGraph;
GSWindow.WC_PERFORMANCE_HISTORY <- GSWindow.WindowClass.PerformanceGraph;
GSWindow.WC_COMPANY_VALUE <- GSWindow.WindowClass.CompanyValueGraph;
GSWindow.WC_COMPANY_LEAGUE <- GSWindow.WindowClass.CompanyLeague;
GSWindow.WC_PAYMENT_RATES <- GSWindow.WindowClass.CargoPaymentRatesGraph;
GSWindow.WC_PERFORMANCE_DETAIL <- GSWindow.WindowClass.PerformanceDetail;
GSWindow.WC_INDUSTRY_PRODUCTION <- GSWindow.WindowClass.IndustryProductionGraph;
GSWindow.WC_TOWN_CARGO_GRAPH <- GSWindow.WindowClass.TownCargoGraph;
GSWindow.WC_COMPANY_INFRASTRUCTURE <- GSWindow.WindowClass.CompanyInfrastructure;
GSWindow.WC_BUY_COMPANY <- GSWindow.WindowClass.BuyCompany;
GSWindow.WC_ENGINE_PREVIEW <- GSWindow.WindowClass.EnginePreview;
GSWindow.WC_MUSIC_WINDOW <- GSWindow.WindowClass.Music;
GSWindow.WC_MUSIC_TRACK_SELECTION <- GSWindow.WindowClass.MusicTrackSelection;
GSWindow.WC_GAME_OPTIONS <- GSWindow.WindowClass.GameOptions;
GSWindow.WC_CUSTOM_CURRENCY <- GSWindow.WindowClass.CustomCurrenty;
GSWindow.WC_CHEATS <- GSWindow.WindowClass.Cheat;
GSWindow.WC_EXTRA_VIEWPORT <- GSWindow.WindowClass.ExtraViewport;
GSWindow.WC_CONSOLE <- GSWindow.WindowClass.Console;
GSWindow.WC_BOOTSTRAP <- GSWindow.WindowClass.Bootstrap;
GSWindow.WC_HIGHSCORE <- GSWindow.WindowClass.Highscore;
GSWindow.WC_ENDSCREEN <- GSWindow.WindowClass.Endscreen;
GSWindow.WC_SCRIPT_DEBUG <- GSWindow.WindowClass.ScriptDebug;
GSWindow.WC_NEWGRF_INSPECT <- GSWindow.WindowClass.NewGRFInspect;
GSWindow.WC_SPRITE_ALIGNER <- GSWindow.WindowClass.SpriteAligner;
GSWindow.WC_LINKGRAPH_LEGEND <- GSWindow.WindowClass.LinkGraphLegend;
GSWindow.WC_SAVE_PRESET <- GSWindow.WindowClass.SavePreset;
GSWindow.WC_FRAMERATE_DISPLAY <- GSWindow.WindowClass.FramerateDisplay;
GSWindow.WC_FRAMETIME_GRAPH <- GSWindow.WindowClass.FrametimeGraph;
GSWindow.WC_SCREENSHOT <- GSWindow.WindowClass.Screenshot;
GSWindow.WC_HELPWIN <- GSWindow.WindowClass.Help;
GSWindow.WC_INVALID <- GSWindow.WindowClass.Invalid;
+448
View File
@@ -1,5 +1,452 @@
## 16.x
### 16.0-beta2 (2026-07-12)
- Feature: Allow bridges over depots (#15836)
- Feature: Increase maximum number of vehicles per type to 10,000 (#15810)
- Feature: Add and remove whole classes to picker collections (#15808)
- Feature: Station list can be filtered by name (#15772)
- Change: Use "bridge ... too low" message for bridgeable objects (#15838)
- Fix: Use meaningful tooltips for graph range toggle buttons (#15842)
- Fix #15826: Exclude allow any/all options for AI companies (#15834)
- Fix #7992: Fix for catenary road and tram catenary sprites not being drawn on bridges (#15811)
- Fix #15784: Crash due to incorrect road build toolbar when switching road tram types (#15789)
- Fix: [NewGRF] Make 'signals on traffic side' consistent with explicit settings (#15661)
- Fix: [Win32] Explicitly initialize COM in Win32 video driver (#15553)
### 16.0-beta1 (2026-06-25)
- Feature: Add default road and tram selection (#15585)
- Feature: Trains with an engine on the rear can drive backwards when reversing (#15379)
- Feature: Add worldgen setting for average height of terrain (#14989)
- Feature: Add text filter to dropdown lists (#14842)
- Feature: User-defined collections of saved items in the picker window (#14813)
- Feature: Configurable sign text colors in scenario editor (#14743)
- Feature: Allow placing an area of 1x1 houses in scenario editor (#14708)
- Feature: Scale cargo payment aging rate (#14635)
- Feature: Support automatic detection of data from Atari's Transport Tycoon Deluxe re-release (#15483)
- Add: [NewGRF] Implement custom waypoint layouts by callback 24 (#15616)
- Add: List 'Place object' in landscaping dropdown (#15609)
- Add: Setting to disable aircraft range limit (#15433)
- Add: Show maximum reliability in vehicle info (#15401)
- Add: Lower the Send To Depot button when a vehicle is on its way to one (#15397)
- Add: Setting to disallow train magic flip, and reverse at reduced speed (#15391)
- Add: [NewGRF] Variable for when a train is driving backwards (#15379)
- Add: [NewGRF] Flag to allow unpowered wagon to lead train when backing up (#15379)
- Add: [NewGRF] Station flag to divide cargo by area instead of perimeter (#15253)
- Add: Company allow-list can be set to allow anyone (#15204)
- Add: Record history of cargo delivered to towns (#15184)
- Add: Show additional vehicle details based on sort criteria (#15158)
- Add: Setting to control minimum distance between towns (#14893)
- Change: Selecting Rail/Roadtype updates build toolbar instead of closing and reopening (#15589)
- Change: Default setting to review orders excludes stopped vehicles (#15565)
- Change: Most used rail type takes ownership into account (#15489)
- Change: Test font for eligibility before adding as fallback (#15412)
- Change: Clarify max age shown in vehicle info window (#15403)
- Change: Show "Delete All" in order window delete button when applicable (#15370)
- Change: Make continuation error messages consistent (#15328)
- Change: Distinguish between 'Flat land required' and 'Land sloped in wrong direction' for building depots (#15327)
- Change: Allow subsidies with CargoDist (#15189)
- Change: Removing river tiles reduces local authority rating (#15180)
- Change: Protect rivers from removal when terraforming (#15176)
- Change: [Script] Reformat callstack output (#15171)
- Change: Apply slightly more padding to image-text buttons (#15077)
- Change: [NewGRF] Display rail and road type speed limit text in yellow (#15076)
- Change: Make smallmap show infinite water, if enabled (#15041)
- Change: Add support for next/previous/first/last rail/road/tram type hotkeys (#15028)
- Change: Allow rocks on desert tiles (#14979)
- Change: [Script] Include Array/PriorityQueye/ScriptList contents in script memory allocation total (#14954)
- Change: [Script] Various ScriptList methods are now suspendable (#14943, #14762)
- Change: Improve generation of coasts at map edges (#14868)
- Change: Show only selected badge in badge filter dropdown buttons (#14855)
- Change: River springs must be surrounded by hills (#14845)
- Change: Vehicles loading at stations don't lose reliability (#14841)
- Change: Generate lighthouses along coasts and near towns (#14828)
- Change: Transmitter object only spawns after original base year (#14786)
- Change: Share one window for engine preview pop ups (#14703)
- Fix: [NewGRF] Town name language incorrectly decoded (#15691)
- Fix #15606: Undefined behaviour may cause buttons to be invisible (#15686)
- Fix #14975: Show correct tile for tunnel error message (#15660)
- Fix: [NewGRF] Incorrect language IDs passed to TranslateTTDPatchCodes (#15655)
- Fix: Scenario editor random industry generation (#15626)
- Fix: [NewGRF] Ignore blocked waypoint tiles (#15620)
- Fix: [NewGRF] Pylons and no-wires flags were ignored for waypoint tiles (#15619)
- Fix: Dedicated server signal handling for SIGTERM/SIGINT/SIGQUIT (#15607)
- Fix: [NewGRF] Potential out-of-bounds read when performing GRM (#15600)
- Fix: Badge offsets not ignored when determining width (#15588)
- Fix: Account for NewGRF's global train width when drawing dual-head engines (#15587)
- Fix: Station list facility buttons do not produce click sound (#15569)
- Fix #15495: Fix incorrectly built default waypoints (#15562)
- Fix #15495: Unable to build bridge over default waypoints (#15562)
- Fix #15235: Make GameScripts obey town road construction setting (#15559)
- Fix: Crash when loading crash save with no viewport coordinates (#15550)
- Fix #15520: Fix viewport snap back on stop following vehicle (#15520) (#15531)
- Fix: Buttons for choosing engine in preview window show for single engine (#15514)
- Fix #15511: Vehicle passed to commands must be a company buildable type (#15512)
- Fix #15497: [Script] ScriptController::Break not pausing in TestMode (#15498)
- Fix: Coordinate transformation for JSON town placement when anticlockwise (#15490)
- Fix: NewGRF debug handler for towns in wrong place since badges (#15467)
- Fix: Object id overrides were not reset between games (#15465)
- Fix: Debug saveload errors were clobbered (#15452)
- Fix: Refresh client list when client renames (#15439)
- Fix #15428: [Fluidsynth] Treat configured synth.gain as maximum instead of hardcoded value (#15429)
- Fix: Refresh string width cache for all loaded fonts (#15427)
- Fix: Typo in Hungarian town name suffix ("kak" -> "lak") (#15421)
- Fix: [NewGRF] Variable 0x69 has not been added for waypoints (#15396)
- Fix: Dropdown text filter could interfere with hotkeys after closing (#15395)
- Fix: Rejecting or accepting engine preview incorrectly closed preview window (#15378)
- Fix #15318: Nonsensical error message when trying to send aircraft to hangar with no usable airports (#15334)
- Fix #15234: Null pointer dereference opening sign edit window when sign 0 does not exist (#15236)
- Fix: [GS] Docs are missing or do not match the code (#15230)
- Fix: Off by one and redundant logic in snowy road checks (#15214)
- Fix #15137: Roads built on steep slopes at the minimum snow level height have inconsistent snowiness (#15190)
- Fix: Station view window fold/unfold not refreshing scrollbar (#15187)
- Fix: Use consistent description for invalid orders (#15177)
- Fix: [Script] Give GetPrimary/SecondaryLiveryColour preconditions (#15169)
- Fix: Cocoa video driver did not register (#15145)
- Fix: MacOS version detection was broken (#15145)
- Fix #13600: Make terraform click+draggable in scenario editor (#15135)
- Fix: [Script] Map some error strings to existing errors (#15113)
- Fix: Allow to build buoys at (0x0) (#14983)
- Fix #14610: Do not treat aircraft with only depot orders as having valid orders (#14961)
- Fix #12937: Allow the computer to go to sleep while the game is paused (#14948)
- Fix: Company query popups do not update in multiplayer (#14947)
- Fix #14892: Potential crash when logging fonts for survey (#14896)
- Fix #14827: Store random trigger information per-tile (#14830)
## 15.x
### 15.3 (2026-04-04)
- Fix: Conditional orders could require a maximum reliability over 100% (#15409)
- Fix: Improve appearance of toolbars and main menu images/text with some non-default base sets (#15402)
- Fix: [Script] IsBuildableRectangle for a 0x0 tile should return false (#15357)
- Fix: Desync caused by train crashes (#15338)
- Fix: Incorrect scroll bar capacity for train details window total cargo tab (#15329)
- Fix #15310: Crash caused by a helicopter running out of fuel near map edge (#15311)
### 15.2 (2026-02-18)
- Fix: Crashed zeppelin not blocking runway (#15281)
- Fix #15269: Crash when building drive-through stop on unowned one-way road (#15270)
- Fix #15247: Crash when handling invalid sprite in OpenGL cursor sprite system (#15248)
- Fix #15105: Czech townname generation causing crashes (#15231)
- Fix: Incorrect ground type test when placing towns (#15217)
- Fix: Town supplied cargo history incorrectly clamped to 16 bit values (#15183)
- Fix #15085: Crash when GUI scale changes before video driver is fully initialised (#15175)
- Fix: Articulated road vehicle following with immediately sequential u-turns (#15170)
- Fix #15166: Foundations missing adjacent to NewGRF objects without foundation (#15168)
- Fix #14035: [Fluidsynth] Read settings from config files if available (#15044)
- Fix #15263: Badge filter toggles no longer worked (#14972)
### 15.1 (2026-01-24)
- Fix #15088: When building a new train, the refit button state may be incorrect (#15162)
- Fix #15160: Incorrect company names displayed in load game window (#15161)
- Fix #15153: Wrong tile used to get bridge reservation overlay (#15154)
- Fix #15116: Old cargo/industry sets without cargo translation table broken (#15150)
- Fix: Possible crash converting company liveries in older savegames/scenarios (#15148)
- Fix: Allow infinite water to be (de)selected when loading heightmap (#15146)
- Fix: Tile suitability test for farm field no longer handled snow tiles (#15134)
- Fix #15131: Trees no longer spread on partially snowy tiles (#15133)
- Fix: Change tooltips to match change from checkboxes to switches (#15123)
- Fix: [Script] Potential out of bounds array/string slice indexes (#15106)
- Fix: [Script] Potential out of bounds indexed string access (#15106)
- Fix: [Script] Check if array sort function modified array (#15106)
- Fix #15069: World generation map edges GUI starts in an invalid state (#15082)
- Fix #15079: Incorrect dates shown on town cargo history graph (#15080)
- Fix #15067: Mark NewGRF settings as modified after moving by drag & drop (#15068)
- Fix: Incorrect error message for aqueducts reaching northern map borders (#14974)
- Fix: Standardize wording of GRF/NewGRF (#15059)
- Fix #15046: Crash on loading game due to invalid group parents (#15049)
- Fix: Disable_elrails handling with engines that use both RAIL and ELRL (#15045)
- Fix: [Fluidsynth] Read settings from system and user config files if available (#15044)
- Fix #15039: Name and version can disappear from content list (#15040)
- Fix #15026: Remove incorrect info from base sounds tooltip (#15029)
- Fix: [Script] Improve reporting of invalid GetAPIVersion return (#15015)
- Fix: [Script] Undefined behaviour after calling SwapList during iteration (#14805)
### 15.0 (2026-01-01)
- Fix: Small ufos would loop over vehicles in depots forever (#15008)
- Fix #14982: Can't place buoys under bridges (#15007)
- Fix #15004: Crashes when dropdown is held open during endgame screen (#15006)
- Fix: Further improve town spawning near water (#15002)
- Fix: Use correct 'minutes per year' setting for old savegames (#14995)
- Fix: Rare crash dividing by 0 when drawing a line (#14994)
- Fix #14992: Respect non-stop order setting when adding waypoint orders (#14993)
### 15.0-RC4 (2025-12-26)
- Fix: Incorrect text colour in fund industry window (#14987)
- Fix: Towns failed to find spawn locations near water (#14988)
- Fix: Don't draw bridge deck rail sprites for default bridges (#14985)
- Fix: "(Invalid parameter)" in error message when trying to remove another player's object (#14981)
- Fix #14978: Don't clear water tiles after removing buoys (#14980)
- Fix #14973: Composed strings are incorrect colour (#14976)
- Fix: Badge filter toggles no longer worked (#14972)
- Fix #12465: Click/tooltip alignment of industry chain cargo lines (#14963)
- Fix #14951: Possible incorrect data in industry production graphs (#14962)
- Fix #14958: Crash when opening station window (#14959)
- Fix #14938: Don't allow cacti to die off (#14956)
- Fix: Don't allow joining a company after it was taken over (#14955)
- Fix #14949: Crash when moving station sign in a network game (#14950)
- Fix #14945: Hang when deleting implicit orders during vehicle loading (#14946)
### 15.0-RC3 (2025-12-20)
- Fix #14932: [NewGRF] Increase internal badge index size to avoid overflowing BadgeIDs (#14933)
- Fix: Crash related to object picker recolours in Scenario Editor (#14929)
- Fix #14921: Crash during station autorefit if station doesn't accept current cargo type (#14924)
- Fix #14917: Crash when opening house picker with no houses available (#14920)
- Fix #14916: Duration of error message window could be too short (#14919)
- Fix #14915: Crash due to divide-by-zero of industry probabilities (#14918)
- Fix: Script configs were cleared by intro game (#14910)
- Fix: [NewGRF] Automatically push/pop colours when formatting a sub-string (#14006)
### 15.0-RC2 (2025-12-13)
- Fix #14677: Desync due to using newgame time settings to validate savegame time settings (#14904)
- Fix: Graph label allocated size could be too small (#14901)
- Fix #14891: Minimum sprite zoomlevel could break in some cases showing placeholder sprites instead (#14894)
- Fix #14889: [FluidSynth] Don't try to load a soundfont that doesn't exist (#14890)
- Revert: Dynamic font loading changes removed (#14903)
### 15.0-RC1 (2025-12-07)
- Feature: Automatically load extra fonts for missing glyphs (#13303, #14856)
- Feature: Rivers can end in wetlands if unable to reach sea (#14784, #14846)
- Feature: Signs, waypoint and station names may be moved (#14744)
- Feature: House placer mode to replace existing houses (#14469)
- Feature: Draw infinite water when all borders are water (#13289)
- Add: [NewGRF] Allow badges to be excluded from badge name list (#14818)
- Add: [Script] ScriptTile::IsHouseTile (#14806)
- Add: Game units for height (#14615)
- Add: Show height difference in bridge is too low error message (#14614)
- Add: Include build cost in rail/road dropdowns (#14599)
- Add: Show all railtypes in the build vehicle and engine preview dialogs (#14357)
- Add: [Script] Function to get all rail types of an rail engine (#14357)
- Add: [NewGRF] Train property to set multiple track types for an engine (#14357)
- Add: [Script] Auto-convert ObjectType bool to integer when setting values for items in lists via [] (#14308)
- Change: Ensure generated towns have enough room (#14803)
- Change: Eliminate small seas instead of ending rivers there (#14797)
- Change: Clamp terraform toolbar to main toolbar (#14725)
- Change: Make groups window group list aware of interface scaling (#14679)
- Change: Prefer normal/medium weight font in FontConfig fallback detection (#14672)
- Change: Support interface scaling in network client list buttons (#14659)
- Change: Record and show multiple errors for each NewGRF (#14658)
- Change: Replace the "(City)" identifier in the town directory with the city icon (#14634)
- Change: Determine automatic interface scale by window size (#14627)
- Change: Apply interface scale to window snap distance (#14625)
- Change: Ask for confirmation before deleting a savegame / scenario / heightmap (#14621)
- Change: Add lock penalty to ship pathfinder (#14603)
- Change: Allow bridges over locks & docks (#14595, #14594)
- Change: Removed disable_node_optimization YAPF setting (#14578)
- Change: Provide road and rail overlay sprites for bridge decks (#14557)
- Change: Scale number of towns/industries by amount of land tiles (#10063)
- Fix #14802: Close NewGRF inspection window when overbuilding with default station/waypoint (#14859)
- Fix #14839: Do not set stacked widget height, which might not be shown (#14858)
- Fix: Incorrect background colour in badge configuration list (#14850)
- Fix #14844: Use company colour remap for badges in picker window (#14849)
- Fix: Drop down scrolling broken for mixed-height items (#14840)
- Fix #8062: (Try to) ensure enough room for profit in vehicle group window (#14835)
- Fix #9071: Don't consider tram tracks when growing towns (#14833)
- Fix: Saved default houses had incorrect class and index information (#14812)
- Fix #14756: Invalidate nested focus before widget container is cleared (#14809)
- Fix #14800: Incorrect register processing in GetCustomStationRelocation (#14801)
- Fix #14755: Remove clicked type selection when not visible (#14796)
- Fix: Incorrect parsing of var 6x parameter in NewGRF debug window (#14789)
- Fix: Improve lighthouse spawn conditions (#14785)
- Fix #14777: authorized_key add/remove console commands did not apply to correct list (#14778)
- Fix: Incorrect spacing for badges in dropdown lists (#14768)
- Fix: Unconfigured badge classes should be visible in column 0 by default (#14766)
- Fix #14763: Crash if NewGRF currency separator is not valid (#14764)
- Fix #14701: Company colour remap for sprites in badge filter dropdowns (#14732)
- Fix: Do not pre-fill industry production history for unused production slots (#14730)
- Fix: Depot-related crash when loading old savegames (#14729)
- Fix #14721, #14723: Inconsistent behaviour when skipping signals (#14724)
- Fix: Miscalculated cargo penalty for poor station rating (#14712)
- Fix: Crash when user enters a blank line in the console (#14711)
- Fix: Console command dump_info should not reverse non-ASCII label (#14697)
- Fix: Incorrect parameter order for CmdSetCompanyManagerFace (#14695)
- Fix: Bootstrap ignored default OpenTTD truetype fonts (#14684)
- Fix: League Table layout broken with RTL languages (#14667)
- Fix #14549: Changing interface scale could underflow viewport zoom (#14655)
- Fix: Incorrect row height in network server list (#14653)
- Fix: Doubled beep sounds when clicking toolbar buttons (#14642)
- Fix: Wrong button type for town menu in scenario editor toolbar (#14641)
- Fix #14631: Waypoint customs spec not allocated properly on initial construction (#14633)
- Fix: Variant cycle detection in FinaliseEngineArray (#14629)
- Fix #14620: Use full file path when deleting files (#14623)
- Fix: [Script] Return rail types as list instead of bitmask (#14617)
- Fix #14604: Clearing tiles to build objects did not update town ratings (#14616)
- Fix: Bridge height check for waypoints didn't include axis in layout (#14609)
- Fix #14607: Bridge-over-station discrepancy depending on build order (#14608)
- Fix: Don't add spacing in rail/road type dropdowns if no badges are present (#14598)
- Fix: [Script] Incorrect infrastructure cost for road/tram tiles (#14596)
- Fix #14588: Show error when unable to clone partly-cleared crashed train (#14591)
- Fix #14586: Empty station tile layouts incorrectly substituted with default layouts (#14587)
- Fix #14584: Crash due to drawing non-existent orders of new vehicle (#14585)
- Fix #14572: Incorrect playlist entry was removed if there are duplicates (#14583)
- Fix: Wrong row may be selected in music playlists (#14581)
- Fix #14569: Ensure music playlist window is large enough (#14570)
- Fix #14278: [Script] Memory allocation limit did not work and could result in a crash (#14568)
- Fix: Road stop properties 0x13/0x14 were not skipped properly (#14567)
- Fix #13922: Ensure music track number widget is wide enough for track number (#14566)
- Fix: Badge filters were only applied to trains (#14565)
- Fix: [NewGRF] Industry acceptance/production when not contiguous range from 0 (#14555)
- Fix #14240: Remember previous GUI scale when toggling auto-detect (#14380)
- Remove: Rail type cost from replace vehicle window (#14748)
### 15.0-beta3 (2025-08-31)
- Feature: Identify cities in the main viewport by appending an icon to their names (#14504)
- Feature: Allow stations and roadstops under bridges (#14477)
- Feature: Separate ships travelling in opposite direction (#14493)
- Feature: Town and Industry cargo history graphs (#14321, #14461)
- Feature: New company face definition system and UI (#14319)
- Feature: Rework intro screen menu (#14220, #14233)
- Feature: Scrollbar for infrastructure window (#14056)
- Feature: Double-Ctrl+Click on default size box to clear saved size (#14055)
- Feature: Configure badges in build vehicle and picker windows (#13993, #14021)
- Feature: Player configuration of badge display (#13993, #14021)
- Feature: Merge Game Options and Game Settings together (#13242, #14088)
- Feature: Option to disable activate-on-release behaviour of toolbar dropdown buttons (#10938)
- Add: Maori (New Zealand) language (#14540)
- Add: Vietnamese Dong currency (#14474)
- Add: Buttons to change picker preview image height (#14373)
- Add: Show and sort online content version in list (#14355)
- Add: Allow separate expansion of town buildings and roads in scenario editor (#14341)
- Add: Hover on graph legend to highlight line (#14314)
- Add: [Script] Ability to clone ScriptList objects (#14305)
- Add: [NewGRF] All callbacks returning D0xx strings, have now the option to return any string id via register 0x100 (#14224)
- Add: [BaseSet] Allow basesets to set minor and patch versions in obg/obs/obm files (#14169)
- Add: "Many random towns" button in scenario editor now prompts for the number of towns, with defaults based on new game settings (#14158)
- Add: [NewGRF] Special value 0x7FFE for VarAction2 results specifying 'return calculated result' (#14149)
- Add: [NewGRF] Special value 0x7FFF for Action2 references specifying explicit 'callback/sprite-resolving failed' (#14149)
- Add: [NewGRF] Add purchase list Action3 CID for houses, industries, industry tiles, airports and airport tiles (#14121)
- Add: [NewGRF] Provide random bits in var10 of house callback 1C 'construction stage changed' (#14095)
- Add: [NewGRF] Station/roadstop animation-triggers 'tile loop' (bit 7) and 'path reservation' (bit 8) (#14080)
- Add: [Script] ScriptVehicleList_Waypoint (#13456)
- Change: Update OpenTTD TTF fonts to v0.8 (#14546)
- Change: Hide bridge pillars if obstructed by tile below (#14517)
- Change: Reduce visual height of default rail waypoints (#14503)
- Change: Improve sprite ellipsis appearance (#14404)
- Change: [Script] Don't allow scripts to instantiate ScriptEvent (#14276)
- Change: [Script] ScriptVehicleList_Station accepts an optional VehicleType parameter (#14260)
- Change: Remove Apply button from NewGRF config window when unneeded (#14254)
- Change: [NewGRF] Increase the textstack for all callbacks to 16 registers (#14224)
- Change: Remove button to toggle showing advanced signal types (#14219)
- Change: [Script] Remove the limit of 20 parameters to a Text string (#14193)
- Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite (#14143)
- Change: Remove extra close buttons from some windows (#14124)
- Change: Limit height of settings description, and add scrollbar (#14102)
- Change: [NewGRF] Provide shared random bits in multi-tile animation-triggers of airport tiles and objects, just like for other features (#14090)
- Change: [NewGRF] Animation-trigger 'construction stage changed' of houses and industries now also triggers at construction start (#14089)
- Change: "setting" console command now shows default value (#14061)
- Change: Include dragged train in depot tile length display (#14060)
- Change: Don't select content when toggling its download status (#14059)
- Change: Draw boolean settings toggles as a slider widget (#14051, #14071)
- Change: Don't replace stripped control codes with '?' for scripts (#14028)
- Change: [Script] Move GSStation::GetOwner to GSBaseStation::GetOwner (#13406)
- Fix #14561: Vehicle effects were missing for vehicle on bridge (#14563)
- Fix #14553: Parameter configuration of pre-action 14 NewGRFs did not work (#14554)
- Fix: File/directory titles not updated if language is changed (#14542)
- Fix: Missing space after old file type identifier (#14541)
- Fix: Account for both text and icon size in station waiting cargo display (#14535)
- Fix: Crash when buying out company with groups (#14534)
- Fix #10222: Off by one drawing lines of certain widths (#14520, #14522, #14523)
- Fix: [Script] Invalid title on GSGoal.Question windows (#14519)
- Fix: 'Map edges' GUI buttons shouldn't initialize with water on northeast edge (#14514)
- Fix #14415: Update survey option text when changing setting (#14487)
- Fix #14480: Music player playlist buttons are clickable but non-operational in intro menu (#14482)
- Fix: Missing button beeps (#14470)
- Fix #14464: Invalid string parameter in scenario editor when unable to build industry (#14465)
- Fix: [Linkgraph] Use correct station ID when erasing flows (#14459)
- Fix: Vehicle liveries did not update when switching company (#14456)
- Fix: Engine preview window could have the wrong size (#14455)
- Fix #8167: No error sub-message when trying to clear protected buildings (#14444)
- Fix #14433: [NewGRF] Road tile for drive-through stops was not drawn (#14434)
- Fix: [Win32] Build failure with newer Windows SDK version due to WinRT changes (#14432)
- Fix #14396: Industry production graph showed zero when data was unavailable (#14416)
- Fix #14385: Crash in industry view due to incorrect string parameter calculations (#14413)
- Fix #14360: Stop reusing strings for Low/Medium/High setting values to improve translations (#14409)
- Fix #14377: Make house picker window remember house protection state when closed (#14406)
- Fix #14375: When loading config, validate timekeeping mode and minutes per year (#14405)
- Fix: Include sort button width in content list header minimal size (#14402)
- Fix: Don't draw truncation ellipsis if it's too wide (#14401)
- Fix: Don't include ellipsis width in RTL truncation offset (#14400)
- Fix: Buildings with non-zero subtile offsets broken in house picker (#14390)
- Fix #12900: Could not use join station with new non-square stations (#14378)
- Fix: Allow object picker to resize if there are no classes (#14372)
- Fix #14081: Only allow "rm" & "del" console commands to remove savegames (#14371)
- Fix: Train path reservations on different railtypes could join leading to train crashes (#14366)
- Fix #14356: Incorrect sprite group chosen for stations and road stops (#14359)
- Fix: Wrong error message about script Save() returned value (#14334)
- Fix: Hidden-by-facility station signs were not ignored when handling clicks (#14326)
- Fix: [Script] SQOpsLimiter had no effect for native valuator/filter (#14322)
- Fix: Crash if loading compatibility scripts fails (#14318)
- Fix #14277: Aircraft could land when a zeppelin was on the runway (#14317)
- Fix: Drag drop line position when dragging NewGRF from file to active panel (#14316)
- Fix: Upgrade button in NewGRF window no longer worked (#14315)
- Fix: [NewGRF] Clear rail vehicle flipped flag if reverse probability callback returns false (#14281)
- Fix: [Script] Conversion from ScriptEvent to ScriptEventCompanyTown subclasses (#14274)
- Fix: Empty first parameter of EncodedString was skipped (#14273)
- Fix #14271: Crash due to incorrect parameter index in string (#14272)
- Fix: Restore the behaviour when entering numbers in query windows: clamp integers out of range to the maximum valid value (#14268)
- Fix: Replacing a dropdown list could reposition it partially off-screen (#14261)
- Fix: Click+Dragging of selected order was not possible (#14259)
- Fix #14256: Company finance windows not updated when paused (#14258)
- Fix: Incorrect tile colour in smallmap for snowy clear tiles in vegetation mode (#14257)
- Fix #14241: Invalid string parameters in subsidies list window (#14243)
- Fix #13854: 40bpp-anim blitter recolouring failed for 32bpp pixels without mask channel (#14242)
- Fix #14234: Crash due to broken invalid string parameter handling (#14235, #14236)
- Fix: Closing the Game Options window closes all textfile windows (#14210)
- Fix: Zoom-scroll extra viewports only if the mouse cursor is over the viewport (#14209)
- Fix: Changing monospace font didn't refresh the monospace width cache, causing wrapping issues (#14185)
- Fix: Crash/Undefined behaviour in station view window (#14183)
- Fix: Handle tab characters when loading GS strings from savegame (#14180)
- Fix: [Script] Access to enum/consts defined outside of main.nut (#14176)
- Fix: Small order list arrow was wrong direction for RTL text (#14174)
- Fix #14170: Missing spaces for timetabled order strings (#14172)
- Fix #14166: Loan was no longer invalidated when refreshing finance window (#14168)
- Fix #14098: Ability to play MIDI tracks over 7 minutes long (#14144)
- Fix: [NewGRF] AI station construction callback did not work for stations with ID >= 0x100 (#14142)
- Fix: Out-of-bounds read, if NewGRF stations provided no spritesets (#14140)
- Fix: [NewGRF] The result of Action123 evaluation affected rerandomisation in a weird corner case (#14139)
- Fix: [NewGRF] Computed VarAction2 callback results were not always properly masked to 15 bit results (#14138)
- Fix #14125: NewGRF sounds were not loaded (#14130)
- Fix: List Ctrl+Click behaviour for vehicle details tooltip (#14127)
- Fix: Road vehicle blocking and train collisions used slightly inconsistent distance thresholds (#14114)
- Fix #14107: Mark the company value in the company view window dirty when it changes (#14112)
- Fix #14107: Invalidate all shared vehicle windows when changing group (#14110)
- Fix #14104: Don't base timetable timing decisions on client settings (#14105)
- Fix: Focus settings filter box (only) when the tab becomes active (#14100)
- Fix: [Script] Reject scripts using negative version (#14096)
- Fix: Map size column in server list could be too wide (#14094)
- Fix: [NewGRF] Cargo-types for airport-tile animation-triggers were not properly translated (#14092)
- Fix: [NewGRF] For animation-triggers which do not supply a cargo-type in var18, the var18 bits should remain empty (#14091)
- Fix: Changing language or interface scale could hang (#14087)
- Fix: [NewGRF] For roadstop multi-tile-animation-triggers, the upper 16 bits were not the same for all tiles (#14084)
- Fix: Town view caption lost "(City)" flag (#14082)
- Fix: [NewGRF] Randomisation-trigger 'path reservation' did not work for waypoints (#14076)
- Fix: Incorrect test of object flags allowed HQ to be removed (#14062)
- Fix: Odd drawing and crash if scrollbar is not tall enough (#14052)
- Fix: Incorrect string display for autoreplace wagon removal status (#14038)
- Fix: House picker crashes if selection is not available (#14030)
- Fix: [NewGRF] PrepareLayout worked on a copy of the data resulting in bad sprite layouts (#14013)
- Fix: [NewGRF] Strange things happened, when using the synchronised tile loop animation trigger for houses (#14011)
- Fix: [NewGRF] Animation speed properties of houses and stations had wrong default (#14005)
- Fix: [NewGRF] Roadstop animation/randomisation was not triggered on vehicle arrival (#14003)
- Fix: Don't display badges if the class has no name (#13994)
- Fix #13954: Plotting graphs with limited data to the right (#13956)
- Fix #13307: Return non-zero value when there is a mistake in command-line arguments (#13547)
- Fix: [Script] Make ScriptOrder functions aware of road waypoints (#13419)
- Fix: Scale graph gridlines and axes with GUI scale (#12131)
- Fix: Original graphics' tycoon-of-the-century sprite assumes a black background (#11679, #14545)
### 15.0-beta2 (2025-04-13)
- Feature: Snow-covered rocks are now visible (#13627)
@@ -20,6 +467,7 @@
- Add: Ukrainian Hryvnia currency (#12877)
- Add: Convert 32bpp-only sprites to 8bpp when needed (#11602)
- Change: [Script] Start GS (but don't run it) when generating world in scenario editor (#13961)
- Change: [Script] Add vehicle owner to crash event (#13878)
- Change: Make tree placement at world generation look more organic (#13515)
- Change: [MacOS] Put the icon in a rounded rectangle (#13446)
- Change: [Script] GetWaypointID to return the StationID of any waypoint (#13407)
-27
View File
@@ -56,11 +56,6 @@ macro(compile_flags)
# This flag disables the broken optimisation to work around the bug
add_compile_options(/d2ssa-rse-)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(
-Wno-multichar
)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
add_compile_options(
-W
@@ -78,9 +73,6 @@ macro(compile_flags)
-Wnon-virtual-dtor
-Wsuggest-override
# We use 'ABCD' multichar for SaveLoad chunks identifiers
-Wno-multichar
# Prevent optimisation supposing enums are in a range specified by the standard
# For details, see http://gcc.gnu.org/PR43680 and PR#5246.
-fno-strict-enums
@@ -100,9 +92,6 @@ macro(compile_flags)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-flifetime-dse=1" LIFETIME_DSE_FOUND)
add_compile_options(
# GCC 4.2+ automatically assumes that signed overflows do
# not occur in signed arithmetics, whereas we are not
@@ -110,10 +99,6 @@ macro(compile_flags)
# about its own optimized code in some places.
"-fno-strict-overflow"
# -flifetime-dse=2 (default since GCC 6) doesn't play
# well with our custom pool item allocator
"$<$<BOOL:${LIFETIME_DSE_FOUND}>:-flifetime-dse=1>"
# We have a fight between clang wanting std::move() and gcc not wanting it
# and of course they both warn when the other compiler is happy
"-Wno-redundant-move"
@@ -133,18 +118,6 @@ macro(compile_flags)
endif()
endif()
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
add_compile_options(
-Wall
# warning #873: function ... ::operator new ... has no corresponding operator delete ...
-wd873
# warning #1292: unknown attribute "fallthrough"
-wd1292
# warning #1899: multicharacter character literal (potential portability problem)
-wd1899
# warning #2160: anonymous union qualifier is ignored
-wd2160
)
else()
message(FATAL_ERROR "No warning flags are set for this compiler yet; please consider creating a Pull Request to add support for this compiler.")
endif()
+6 -2
View File
@@ -5,12 +5,12 @@
#
# create_regression(file1 ...)
#
macro(create_regression)
macro(create_regression SCRIPT_FOLDER)
set(REGRESSION_SOURCE_FILES ${ARGN})
foreach(REGRESSION_SOURCE_FILE IN LISTS REGRESSION_SOURCE_FILES)
string(REPLACE "${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}")
string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/ai/" "${REGRESSION_SOURCE_FILE_NAME}")
string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/${SCRIPT_FOLDER}/" "${REGRESSION_SOURCE_FILE_NAME}")
add_custom_command(OUTPUT ${REGRESSION_BINARY_FILE}
COMMAND ${CMAKE_COMMAND} -E copy
@@ -38,6 +38,7 @@ macro(create_regression)
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-DSCRIPT_FOLDER=${SCRIPT_FOLDER}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
DEPENDS openttd regression_${REGRESSION_TEST_NAME}_files
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
@@ -50,9 +51,12 @@ macro(create_regression)
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-DSCRIPT_FOLDER=${SCRIPT_FOLDER}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
set_property(TEST regression_${REGRESSION_TEST_NAME} PROPERTY RUN_SERIAL TRUE)
add_dependencies(regression regression_${REGRESSION_TEST_NAME})
endmacro()
-69
View File
@@ -1,69 +0,0 @@
# CMake provides a FindICU module since version 3.7.
# But it doesn't use pkgconfig, doesn't set expected variables,
# And it returns incomplete dependencies if only some modules are searched.
#[=======================================================================[.rst:
FindICU
-------
Finds components of the ICU library.
Accepted components are: uc, i18n, le, lx, io, data
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``ICU_FOUND``
True if components of ICU library are found.
``ICU_VERSION``
The version of the ICU library which was found.
``ICU_<c>_FOUND``
True if the system has the <c> component of ICU library.
``ICU_<c>_INCLUDE_DIRS``
Include directories needed to use the <c> component of ICU library.
``ICU_<c>_LIBRARIES``
Libraries needed to link to the <c> component of ICU library.
#]=======================================================================]
find_package(PkgConfig QUIET)
set(ICU_KNOWN_COMPONENTS "uc" "i18n" "le" "lx" "io" "data")
foreach(MOD_NAME IN LISTS ICU_FIND_COMPONENTS)
if(NOT MOD_NAME IN_LIST ICU_KNOWN_COMPONENTS)
message(FATAL_ERROR "Unknown ICU component: ${MOD_NAME}")
endif()
pkg_check_modules(PC_ICU_${MOD_NAME} QUIET icu-${MOD_NAME})
# Check the libraries returned by pkg-config really exist.
unset(PC_LIBRARIES)
foreach(LIBRARY IN LISTS PC_ICU_${MOD_NAME}_LIBRARIES)
unset(PC_LIBRARY CACHE)
find_library(PC_LIBRARY NAMES ${LIBRARY})
if(NOT PC_LIBRARY)
unset(PC_ICU_${MOD_NAME}_FOUND)
endif()
list(APPEND PC_LIBRARIES ${PC_LIBRARY})
endforeach()
unset(PC_LIBRARY CACHE)
if(${PC_ICU_${MOD_NAME}_FOUND})
set(ICU_COMPONENT_FOUND TRUE)
set(ICU_${MOD_NAME}_FOUND TRUE)
set(ICU_${MOD_NAME}_LIBRARIES ${PC_LIBRARIES})
set(ICU_${MOD_NAME}_INCLUDE_DIRS ${PC_ICU_${MOD_NAME}_INCLUDE_DIRS})
set(ICU_VERSION ${PC_ICU_${MOD_NAME}_VERSION})
endif()
endforeach()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ICU
FOUND_VAR ICU_FOUND
REQUIRED_VARS ICU_COMPONENT_FOUND
VERSION_VAR ICU_VERSION
HANDLE_COMPONENTS
)
+50 -31
View File
@@ -190,44 +190,63 @@ elseif(UNIX)
set(CPACK_GENERATOR "TXZ")
set(PLATFORM "unknown")
else()
find_program(LSB_RELEASE_EXEC lsb_release)
execute_process(COMMAND ${LSB_RELEASE_EXEC} -is
OUTPUT_VARIABLE LSB_RELEASE_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(LSB_RELEASE_ID)
if(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian" OR LSB_RELEASE_ID STREQUAL "Linuxmint")
execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs
OUTPUT_VARIABLE LSB_RELEASE_CODENAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TOLOWER "${LSB_RELEASE_ID}-${LSB_RELEASE_CODENAME}" PLATFORM)
if(EXISTS "/etc/os-release")
file(STRINGS "/etc/os-release" OS_RELEASE_LIKE_CONTENTS REGEX "^ID_LIKE=")
if (OS_RELEASE_LIKE_CONTENTS)
string(REGEX MATCH "ID_LIKE=\\\"?([^\\\"]+)" _ ${OS_RELEASE_LIKE_CONTENTS})
string(REGEX MATCHALL "([^ ]+)" DISTRO_LIKE_IDS ${CMAKE_MATCH_1})
endif()
if (DISTRO_LIKE_IDS)
set(DISTRO_IDS ${DISTRO_LIKE_IDS})
else()
file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=")
string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS})
set(DISTRO_IDS ${CMAKE_MATCH_1})
endif()
if("arch" IN_LIST DISTRO_IDS)
set(PLATFORM "arch")
set(CPACK_GENERATOR "TXZ")
elseif("fedora" IN_LIST DISTRO_IDS OR "rhel" IN_LIST DISTRO_IDS)
set(PLATFORM "fedora")
set(CPACK_GENERATOR "RPM")
include(PackageRPM)
elseif("debian" IN_LIST DISTRO_IDS OR "ubuntu" IN_LIST DISTRO_IDS OR "linuxmint" IN_LIST DISTRO_IDS)
file(STRINGS "/etc/os-release" OS_RELEASE_CODENAME REGEX "^VERSION_CODENAME=")
string(REGEX MATCH "VERSION_CODENAME=(.*)" _ ${OS_RELEASE_CODENAME})
set(RELEASE_CODENAME ${CMAKE_MATCH_1})
string(TOLOWER "${DISTRO_ID}-${RELEASE_CODENAME}" PLATFORM)
set(CPACK_GENERATOR "DEB")
include(PackageDeb)
elseif(LSB_RELEASE_ID STREQUAL "Fedora")
set(PLATFORM "fedora")
set(CPACK_GENERATOR "RPM")
include(PackageRPM)
else()
set(UNSUPPORTED_PLATFORM_NAME "LSB-based Linux distribution '${LSB_RELEASE_ID}'")
endif()
elseif(EXISTS "/etc/os-release")
file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=")
string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS})
set(DISTRO_ID ${CMAKE_MATCH_1})
if(DISTRO_ID STREQUAL "arch")
set(PLATFORM "arch")
set(CPACK_GENERATOR "TXZ")
elseif(DISTRO_ID STREQUAL "fedora" OR DISTRO_ID STREQUAL "rhel")
set(PLATFORM "fedora")
set(CPACK_GENERATOR "RPM")
include(PackageRPM)
else()
set(UNSUPPORTED_PLATFORM_NAME "Linux distribution '${DISTRO_ID}' from /etc/os-release")
endif()
else()
set(UNSUPPORTED_PLATFORM_NAME "Linux distribution")
find_program(LSB_RELEASE_EXEC lsb_release)
execute_process(COMMAND ${LSB_RELEASE_EXEC} -is
OUTPUT_VARIABLE LSB_RELEASE_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(LSB_RELEASE_ID)
if(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian" OR LSB_RELEASE_ID STREQUAL "Linuxmint")
execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs
OUTPUT_VARIABLE LSB_RELEASE_CODENAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TOLOWER "${LSB_RELEASE_ID}-${LSB_RELEASE_CODENAME}" PLATFORM)
set(CPACK_GENERATOR "DEB")
include(PackageDeb)
elseif(LSB_RELEASE_ID STREQUAL "Fedora")
set(PLATFORM "fedora")
set(CPACK_GENERATOR "RPM")
include(PackageRPM)
else()
set(UNSUPPORTED_PLATFORM_NAME "LSB-based Linux distribution '${LSB_RELEASE_ID}'")
endif()
else()
set(UNSUPPORTED_PLATFORM_NAME "Linux distribution")
endif()
endif()
if(NOT PLATFORM)
+20
View File
@@ -61,12 +61,32 @@ function(set_options)
option(OPTION_TOOLS_ONLY "Build only tools target" OFF)
option(OPTION_DOCS_ONLY "Build only docs target" OFF)
option(OPTION_ALLOW_INVALID_SIGNATURE "Allow loading of content with invalid signatures" OFF)
option(OPTION_LINE_IN_DOXYGEN_WARNINGS "Print line number in doxygen warnings" ON)
if (OPTION_DOCS_ONLY)
set(OPTION_TOOLS_ONLY ON PARENT_SCOPE)
endif()
if (OPTION_LINE_IN_DOXYGEN_WARNINGS)
set(DOXYGEN_WARN_FORMAT_LINE "line" PARENT_SCOPE)
endif()
option(OPTION_SURVEY_KEY "Survey-key to use for the opt-in survey (empty if you have none)" "")
option(OPTION_DOXYGEN_WARN_FILE "File to write doxygen warnings into (if empty warnings are written to standard error)" "")
option(OPTION_DOXYGEN_GS_WARN_FILE "File to write doxygen warnings from game script docs into (if empty warnings are written to standard error)" "")
option(OPTION_DOXYGEN_AI_WARN_FILE "File to write doxygen warnings from AI docs into (if empty warnings are written to standard error)" "")
if(OPTION_DOXYGEN_WARN_FILE)
set(DOXYGEN_WARN_FILE ${CMAKE_BINARY_DIR}/${OPTION_DOXYGEN_WARN_FILE} PARENT_SCOPE)
endif()
if(OPTION_DOXYGEN_GS_WARN_FILE)
set(DOXYGEN_GS_WARN_FILE ${CMAKE_BINARY_DIR}/${OPTION_DOXYGEN_GS_WARN_FILE} PARENT_SCOPE)
endif()
if(OPTION_DOXYGEN_AI_WARN_FILE)
set(DOXYGEN_AI_WARN_FILE ${CMAKE_BINARY_DIR}/${OPTION_DOXYGEN_AI_WARN_FILE} PARENT_SCOPE)
endif()
endfunction()
# Show the values of the generic options.
+3
View File
@@ -135,6 +135,9 @@ if(GENERATE_OTTDREV)
message(STATUS "Generating .ottdrev")
file(WRITE ${CMAKE_SOURCE_DIR}/.ottdrev "${REV_VERSION}\t${REV_ISODATE}\t${REV_MODIFIED}\t${REV_HASH}\t${REV_ISTAG}\t${REV_ISSTABLETAG}\n")
else()
if(REV_ISSTABLETAG AND NOT (REV_VERSION STREQUAL "${REV_MAJOR}.${REV_MINOR}"))
message(FATAL_ERROR "Tag (${REV_VERSION}) doesn't match internal version (${REV_MAJOR}.${REV_MINOR})")
endif()
message(STATUS "Generating rev.cpp")
configure_file("${CMAKE_SOURCE_DIR}/src/rev.cpp.in"
"${FIND_VERSION_BINARY_DIR}/rev.cpp")
+23 -13
View File
@@ -25,6 +25,13 @@ endif()
file(STRINGS ${GENERATE_SOURCE_FILE} ENUM_LINES REGEX "@enum")
function(remove_invalid_links VARIABLE)
string(REGEX REPLACE "#([A-Za-z0-9_]*Widgets)" "@hash \\1" VARIABLE "${VARIABLE}")
string(REPLACE "#" "" VARIABLE "${VARIABLE}")
string(REPLACE "@hash " "#" VARIABLE "${VARIABLE}")
set(NO_INVALID_LINKS ${VARIABLE} PARENT_SCOPE)
endfunction()
foreach(ENUM IN LISTS ENUM_LINES)
string(REGEX REPLACE "^( )// @enum ([^ ]+) ([^ ]+)@([^ ]+)@" "\\4" PLACE_HOLDER "${ENUM}")
set(ADD_INDENT "${CMAKE_MATCH_1}")
@@ -49,14 +56,17 @@ foreach(ENUM IN LISTS ENUM_LINES)
# Remember possible doxygen comment before enum declaration
if((NOT ACTIVE) AND "${LINE}" MATCHES "/\\*\\*")
set(COMMENT "${ADD_INDENT}${LINE}")
remove_invalid_links("${LINE}")
set(COMMENT "${ADD_INDENT}${NO_INVALID_LINKS}")
set(ACTIVE_COMMENT 1)
elseif(ACTIVE_COMMENT EQUAL 1)
string(APPEND COMMENT "\n${ADD_INDENT}${LINE}")
remove_invalid_links("${LINE}")
string(APPEND COMMENT "\n${ADD_INDENT}${NO_INVALID_LINKS}")
endif()
# Check for enum match
if("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN}( *: *[^ ]*)? *\{")
if("${LINE}" MATCHES "^ *enum *(class)? *(${ENUM_PATTERN})( *: *[^ ]*)? *\{")
set(ENUM_NAME "${CMAKE_MATCH_2}")
# REGEX REPLACE does a REGEX MATCHALL and fails if an empty string is matched
string(REGEX MATCH "[^ ]*" RESULT "${LINE}")
string(REPLACE "${RESULT}" "" RM_INDENT "${LINE}")
@@ -100,23 +110,23 @@ foreach(ENUM IN LISTS ENUM_LINES)
endforeach()
if(CMAKE_MATCH_3)
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = ::${CMAKE_MATCH_2},${SPACES}${CMAKE_MATCH_3}")
# CMAKE_MATCH_3 contains inline comment.
remove_invalid_links("${CMAKE_MATCH_3}")
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = to_underlying(::${ENUM_NAME}::${CMAKE_MATCH_2}),${SPACES}${NO_INVALID_LINKS}")
else()
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = ::${CMAKE_MATCH_2},")
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = to_underlying(::${ENUM_NAME}::${CMAKE_MATCH_2}),")
endif()
elseif("${LINE}" STREQUAL "")
string(APPEND ${PLACE_HOLDER} "\n")
elseif("${LINE}" MATCHES "^ *\};")
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${LINE}\n")
unset(ACTIVE)
else()
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${LINE}")
# Line is not an enum member, so it might be a comment.
remove_invalid_links("${LINE}")
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${NO_INVALID_LINKS}")
endif()
endif()
if("${LINE}" MATCHES "^ *\};")
if(ACTIVE)
string(APPEND ${PLACE_HOLDER} "\n")
endif()
unset(ACTIVE)
endif()
endforeach()
endforeach()
endforeach()
+20 -4
View File
@@ -7,11 +7,14 @@ cmake_minimum_required(VERSION 3.17)
if(NOT REGRESSION_TEST)
message(FATAL_ERROR "Script needs REGRESSION_TEST defined (tip: use -DREGRESSION_TEST=..)")
endif()
if(NOT SCRIPT_FOLDER)
message(FATAL_ERROR "Script needs SCRIPT_FOLDER defined (tip: use -DSCRIPT_FOLDER=..)")
endif()
if(NOT OPENTTD_EXECUTABLE)
message(FATAL_ERROR "Script needs OPENTTD_EXECUTABLE defined (tip: use -DOPENTTD_EXECUTABLE=..)")
endif()
if(NOT EXISTS ai/${REGRESSION_TEST}/test.sav)
if(NOT EXISTS ${SCRIPT_FOLDER}/${REGRESSION_TEST}/test.sav)
message(FATAL_ERROR "Regression test ${REGRESSION_TEST} does not exist (tip: check regression folder for the correct spelling)")
endif()
@@ -25,11 +28,17 @@ if(EDITBIN_EXECUTABLE)
execute_process(COMMAND ${EDITBIN_EXECUTABLE} /nologo /subsystem:console ${OPENTTD_EXECUTABLE})
endif()
# Remove previous crash files
file(GLOB CRASH_FILES "regression/crash*")
if(CRASH_FILES)
file(REMOVE ${CRASH_FILES})
endif()
# Run the regression test
execute_process(COMMAND ${OPENTTD_EXECUTABLE}
-x
-c regression/regression.cfg
-g ai/${REGRESSION_TEST}/test.sav
-g ${SCRIPT_FOLDER}/${REGRESSION_TEST}/test.sav
-snull
-mnull
-vnull:ticks=30000
@@ -40,6 +49,13 @@ execute_process(COMMAND ${OPENTTD_EXECUTABLE}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Detect any crash
file(GLOB CRASH_FILES "regression/crash*.log")
if (CRASH_FILES)
file(READ ${CRASH_FILES} CRASH_LOG)
message(FATAL_ERROR "OpenTTD crashed: ${CRASH_LOG}")
endif()
if(REGRESSION_OUTPUT)
message(FATAL_ERROR "Unexpected output: ${REGRESSION_OUTPUT}")
endif()
@@ -64,7 +80,7 @@ string(REGEX REPLACE "\\\[script:[0-9]\\\]" "" REGRESSION_RESULT "${REGRESSION_R
# Convert the output to a format that is expected (and more readable) by result.txt
string(REPLACE "dbg: " "ERROR: " REGRESSION_RESULT "${REGRESSION_RESULT}")
string(REPLACE "ERROR: [1] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
string(REGEX REPLACE "ERROR: \\\[18?\\\] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
string(REPLACE "[P] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
string(REPLACE "[S] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
string(REGEX REPLACE "dbg: ([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}")
@@ -75,7 +91,7 @@ string(REGEX REPLACE "ERROR: [12]([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSI
string(REGEX REPLACE "ERROR: The first([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}")
# Read the expected result
file(READ ai/${REGRESSION_TEST}/result.txt REGRESSION_EXPECTED)
file(READ ${SCRIPT_FOLDER}/${REGRESSION_TEST}/result.txt REGRESSION_EXPECTED)
# Convert the string to a list
string(REPLACE "\n" ";" REGRESSION_RESULT "${REGRESSION_RESULT}")
+146 -214
View File
@@ -17,41 +17,48 @@ if(NOT APILC)
endif()
macro(dump_fileheader)
get_filename_component(SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE}" NAME)
string(APPEND SQUIRREL_EXPORT "\n#include \"../${SCRIPT_API_FILE_NAME}\"")
get_filename_component(SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE}" NAME_WE)
string(APPEND SQUIRREL_EXPORT "\n#include \"../${SCRIPT_API_FILE_NAME}.hpp\"")
if(NOT "${APIUC}" STREQUAL "Template")
string(REPLACE "script_" "template_" SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE_NAME}")
string(APPEND SQUIRREL_EXPORT "\n#include \"../template/${SCRIPT_API_FILE_NAME}.sq\"")
string(APPEND SQUIRREL_EXPORT "\n#include \"../template/${SCRIPT_API_FILE_NAME}.sq.hpp\"")
endif()
endmacro()
macro(open_namespace)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
endif()
endmacro()
macro(dump_class_templates NAME)
string(REGEX REPLACE "^Script" "" REALNAME ${NAME})
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<${NAME} *> { static inline ${NAME} *Get(HSQUIRRELVM vm, int index) { return static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<${NAME} &> { static inline ${NAME} &Get(HSQUIRRELVM vm, int index) { return *static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<const ${NAME} *> { static inline const ${NAME} *Get(HSQUIRRELVM vm, int index) { return static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<const ${NAME} &> { static inline const ${NAME} &Get(HSQUIRRELVM vm, int index) { return *static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Param<${NAME} *> { static inline ${NAME} *Get(HSQUIRRELVM vm, int index) { return static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Param<${NAME} &> { static inline ${NAME} &Get(HSQUIRRELVM vm, int index) { return *static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Param<const ${NAME} *> { static inline const ${NAME} *Get(HSQUIRRELVM vm, int index) { return static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Param<const ${NAME} &> { static inline const ${NAME} &Get(HSQUIRRELVM vm, int index) { return *static_cast<${NAME} *>(Squirrel::GetRealInstance(vm, index, \"${REALNAME}\")); } };")
if("${NAME}" STREQUAL "ScriptEvent")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
elseif("${NAME}" STREQUAL "ScriptText")
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<Text *> {")
string(APPEND SQUIRREL_EXPORT "\n static inline Text *Get(HSQUIRRELVM vm, int index) {")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_INSTANCE) {")
string(APPEND SQUIRREL_EXPORT "\n return Param<ScriptText *>::Get(vm, index);")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_STRING) {")
string(APPEND SQUIRREL_EXPORT "\n return new RawText(Param<const std::string &>::Get(vm, index));")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_NULL) {")
string(APPEND SQUIRREL_EXPORT "\n return nullptr;")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n throw sq_throwerror(vm, fmt::format(\"parameter {} has an invalid type ; expected: 'Text'\", index - 1));")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Param<Text *> {")
string(APPEND SQUIRREL_EXPORT "\n\t\tstatic inline Text *Get(HSQUIRRELVM vm, int index) {")
string(APPEND SQUIRREL_EXPORT "\n\t\t\tif (sq_gettype(vm, index) == OT_INSTANCE) {")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t\treturn Param<ScriptText *>::Get(vm, index);")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t}")
string(APPEND SQUIRREL_EXPORT "\n\t\t\tif (sq_gettype(vm, index) == OT_STRING) {")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t\treturn new RawText(Param<const std::string &>::Get(vm, index));")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t}")
string(APPEND SQUIRREL_EXPORT "\n\t\t\tif (sq_gettype(vm, index) == OT_NULL) {")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t\treturn nullptr;")
string(APPEND SQUIRREL_EXPORT "\n\t\t\t}")
string(APPEND SQUIRREL_EXPORT "\n\t\t\tthrow sq_throwerror(vm, fmt::format(\"parameter {} has an invalid type ; expected: 'Text'\", index - 1));")
string(APPEND SQUIRREL_EXPORT "\n\t\t}")
string(APPEND SQUIRREL_EXPORT "\n\t};")
else()
string(APPEND SQUIRREL_EXPORT "\n template <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
string(APPEND SQUIRREL_EXPORT "\n\ttemplate <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
endif()
endmacro()
@@ -66,7 +73,6 @@ macro(reset_reader)
unset(STATIC_METHODS)
unset(CLS)
unset(START_SQUIRREL_DEFINE_ON_NEXT_LINE)
set(CLS_LEVEL 0)
unset(CLS_IN_API)
endmacro()
@@ -75,6 +81,9 @@ reset_reader()
file(STRINGS "${SCRIPT_API_FILE}" SOURCE_LINES)
set(NUM_LINE 0)
set(CLS_LEVEL 0)
set(BRACE_LEVEL 0)
macro(doxygen_check)
if(NOT "${DOXYGEN_SKIP}" STREQUAL "")
message(FATAL_ERROR "${SCRIPT_API_FILE}:${NUM_LINE}: a DOXYGEN_API block was not properly closed")
@@ -110,7 +119,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
continue()
endif()
if("${LINE}" MATCHES "^([ ]*)\\* @api (.*)$")
if("${LINE}" MATCHES "^([\t ]*)\\* @api (.*)$")
set(LINE ${CMAKE_MATCH_2})
# By default, classes are not selected
if(NOT CLS_LEVEL)
@@ -148,22 +157,28 @@ foreach(LINE IN LISTS SOURCE_LINES)
continue()
endif()
# Count braces to skip function bodies
string(REGEX REPLACE "[^{]" "" OPENING_BRACES "${LINE}")
string(LENGTH "${OPENING_BRACES}" OPENING_BRACES)
string(REGEX REPLACE "[^}]" "" CLOSING_BRACES "${LINE}")
string(LENGTH "${CLOSING_BRACES}" CLOSING_BRACES)
math(EXPR BRACE_LEVEL "${BRACE_LEVEL} + ${OPENING_BRACES} - ${CLOSING_BRACES}")
# Ignore forward declarations of classes
if("${LINE}" MATCHES "^( *)class(.*);")
if("${LINE}" MATCHES "^(\t*)class(.*);")
continue()
endif()
# We only want to have public functions exported for now
if("${LINE}" MATCHES "^( *)class (.*) (: public|: protected|: private|:) ([^ ]*)")
if("${LINE}" MATCHES "^(\t*)class (.*) (: public|: protected|: private|:) ([^ ]*)")
if(NOT CLS_LEVEL)
if(NOT DEFINED API_SELECTED)
message(WARNING "Class '${CMAKE_MATCH_2}' has no @api. It won't be published to any API.")
message(WARNING "${SCRIPT_API_FILE}:${NUM_LINE}: Class '${CMAKE_MATCH_2}' has no @api. It won't be published to any API.")
set(API_SELECTED FALSE)
endif()
unset(IS_PUBLIC)
unset(CLS_PARAM_0)
set(CLS_PARAM_1 1)
set(CLS_PARAM_2 "x")
unset(CLS_PARAMS)
set(CLS_TYPES "x")
set(CLS_IN_API ${API_SELECTED})
unset(API_SELECTED)
set(CLS "${CMAKE_MATCH_2}")
@@ -181,25 +196,29 @@ foreach(LINE IN LISTS SOURCE_LINES)
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
continue()
endif()
if("${LINE}" MATCHES "^( *)public")
if("${LINE}" MATCHES "^(\t*)public")
if(CLS_LEVEL EQUAL 1)
set(IS_PUBLIC TRUE)
endif()
continue()
endif()
if("${LINE}" MATCHES "^( *)protected")
if("${LINE}" MATCHES "^(\t*)protected")
if(CLS_LEVEL EQUAL 1)
unset(IS_PUBLIC)
endif()
continue()
endif()
if("${LINE}" MATCHES "^( *)private")
if("${LINE}" MATCHES "^(\t*)private")
if(CLS_LEVEL EQUAL 1)
unset(IS_PUBLIC)
endif()
continue()
endif()
if("${LINE}" MATCHES "^([\t ]*)\\* @suspendable.*$")
set(SUSPENDABLE TRUE)
endif()
# Ignore the comments
if("${LINE}" MATCHES "^#")
continue()
@@ -221,7 +240,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
# We need to make specialized conversions for structs
if("${LINE}" MATCHES "^( *)struct ([^ ]*)")
if("${LINE}" MATCHES "^(\t*)struct ([^ ]*)")
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
# Check if we want to publish this struct
@@ -243,7 +262,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
# We need to make specialized conversions for enums
if("${LINE}" MATCHES "^( *)enum ([^ ]*)")
if("${LINE}" MATCHES "^(\t*)enum *(class)? *([^ ]*)")
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
# Check if we want to publish this enum
@@ -261,15 +280,19 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
set(IN_ENUM TRUE)
list(APPEND ENUMS "${CLS}::${CMAKE_MATCH_2}")
if(CMAKE_MATCH_2 STREQUAL "class")
set(IN_SCOPED_ENUM TRUE)
endif()
list(APPEND ENUMS "${CLS}::${CMAKE_MATCH_3}")
continue()
endif()
# Maybe the end of the class, if so we can start with the Squirrel export pretty soon
if("${LINE}" MATCHES "};")
if(BRACE_LEVEL LESS CLS_LEVEL)
math(EXPR CLS_LEVEL "${CLS_LEVEL} - 1")
if(CLS_LEVEL)
unset(IN_ENUM)
unset(IN_SCOPED_ENUM)
continue()
endif()
@@ -280,7 +303,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
# Empty/white lines. When we may do the Squirrel export, do that export.
if("${LINE}" MATCHES "^([ ]*)$")
if("${LINE}" MATCHES "^([ \t]*)$")
if(NOT START_SQUIRREL_DEFINE_ON_NEXT_LINE)
continue()
endif()
@@ -304,33 +327,17 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(APPEND SQUIRREL_EXPORT "\n")
if("${APIUC}" STREQUAL "Template")
# First check whether we have enums to print
if(DEFINED ENUMS)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
endif()
endif()
# Then check whether we have structs/classes to print
if(DEFINED STRUCTS)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow inner classes/structs to be used as Squirrel parameters */")
open_namespace()
string(APPEND SQUIRREL_EXPORT "\n\t/* Allow inner classes/structs to be used as Squirrel parameters */")
foreach(STRUCT IN LISTS STRUCTS)
dump_class_templates(${STRUCT})
endforeach()
endif()
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
else()
string(APPEND SQUIRREL_EXPORT "\n")
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow ${CLS} to be used as Squirrel parameter */")
open_namespace()
string(APPEND SQUIRREL_EXPORT "\n\t/* Allow ${CLS} to be used as Squirrel parameter */")
dump_class_templates(${CLS})
string(APPEND SQUIRREL_EXPORT "\n} // namespace SQConvert")
@@ -340,193 +347,109 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\ntemplate <> SQInteger PushClassName<${CLS}, ScriptType::${APIUC}>(HSQUIRRELVM vm) { sq_pushstring(vm, \"${API_CLS}\", -1); return 1; }")
string(APPEND SQUIRREL_EXPORT "\ntemplate <> SQInteger PushClassName<${CLS}, ScriptType::${APIUC}>(HSQUIRRELVM vm) { sq_pushstring(vm, \"${API_CLS}\"); return 1; }")
string(APPEND SQUIRREL_EXPORT "\n")
# Then do the registration functions of the class.
string(APPEND SQUIRREL_EXPORT "\nvoid SQ${API_CLS}_Register(Squirrel *engine)")
string(APPEND SQUIRREL_EXPORT "\nvoid SQ${API_CLS}_Register(Squirrel &engine)")
string(APPEND SQUIRREL_EXPORT "\n{")
string(APPEND SQUIRREL_EXPORT "\n DefSQClass<${CLS}, ScriptType::${APIUC}> SQ${API_CLS}(\"${API_CLS}\");")
string(APPEND SQUIRREL_EXPORT "\n\tDefSQClass<${CLS}, ScriptType::${APIUC}> SQ${API_CLS}(\"${API_CLS}\");")
if("${SUPER_CLS}" STREQUAL "Text")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine);")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.PreRegister(engine);")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine, \"${API_SUPER_CLS}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.PreRegister(engine, \"${API_SUPER_CLS}\");")
endif()
if(NOT "${SUPER_CLS}" MATCHES "^ScriptEvent")
if("${CLS_PARAM_2}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.AddSQAdvancedConstructor(engine);")
if((DEFINED CLS_PARAMS OR DEFINED METHODS) AND NOT "${SUPER_CLS}" MATCHES "^ScriptEvent" AND NOT "${CLS}" STREQUAL "ScriptEvent")
if("${CLS_TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.AddSQAdvancedConstructor(engine);")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.AddConstructor<void (${CLS}::*)(${CLS_PARAM_0}), ${CLS_PARAM_1}>(engine, \"${CLS_PARAM_2}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.AddConstructor<void (${CLS}::*)(${CLS_PARAMS})>(engine, \"${CLS_TYPES}\");")
endif()
endif()
string(APPEND SQUIRREL_EXPORT "\n")
# Enum values
set(MLEN 0)
foreach(ENUM_VALUE IN LISTS ENUM_VALUES)
string(LENGTH "${ENUM_VALUE}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
macro(add_scoped_enum_end_if_needed)
if(CURRENT_ENUM_NAME)
unset(CURRENT_ENUM_NAME)
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.AddScopedEnumEnd(engine);\n")
endif()
endforeach()
endmacro()
set(CURRENT_ENUM_NAME 0)
foreach(ENUM_VALUE IN LISTS ENUM_VALUES)
string(LENGTH "${ENUM_VALUE}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQConst(engine, ${CLS}::${ENUM_VALUE},${SPACES}\"${ENUM_VALUE}\");")
if(ENUM_VALUE MATCHES "::")
string(REGEX REPLACE ".*:" "" ENUM_VALUE_NAME "${ENUM_VALUE}")
string(REGEX MATCH "::(.*)::" ENUM_NAME "${ENUM_VALUE}")
set(ENUM_NAME ${CMAKE_MATCH_1})
if(CURRENT_ENUM_NAME STREQUAL ENUM_NAME)
else()
add_scoped_enum_end_if_needed()
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.AddScopedEnumBegin(engine, \"${ENUM_NAME}\");")
set(CURRENT_ENUM_NAME ${ENUM_NAME})
endif()
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQConst(engine, to_underlying(${ENUM_VALUE}), \"${ENUM_VALUE_NAME}\");")
continue()
endif()
add_scoped_enum_end_if_needed()
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQConst(engine, ${CLS}::${ENUM_VALUE}, \"${ENUM_VALUE}\");")
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
add_scoped_enum_end_if_needed()
# Const values
set(MLEN 0)
foreach(CONST_VALUE IN LISTS CONST_VALUES)
string(LENGTH "${CONST_VALUE}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif()
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQConst(engine, ${CLS}::${CONST_VALUE}, \"${CONST_VALUE}\");")
endforeach()
foreach(CONST_VALUE IN LISTS CONST_VALUES)
string(LENGTH "${CONST_VALUE}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQConst(engine, ${CLS}::${CONST_VALUE},${SPACES}\"${CONST_VALUE}\");")
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
# Mapping of OTTD strings to errors
set(MLEN 0)
foreach(ENUM_STRING_TO_ERROR IN LISTS ENUM_STRING_TO_ERRORS)
string(REPLACE ":" ";" ENUM_STRING_TO_ERROR "${ENUM_STRING_TO_ERROR}")
list(GET ENUM_STRING_TO_ERROR 0 ENUM_STRING)
string(LENGTH "${ENUM_STRING}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif()
endforeach()
foreach(ENUM_STRING_TO_ERROR IN LISTS ENUM_STRING_TO_ERRORS)
string(REPLACE ":" ";" ENUM_STRING_TO_ERROR "${ENUM_STRING_TO_ERROR}")
list(GET ENUM_STRING_TO_ERROR 0 ENUM_STRING)
list(GET ENUM_STRING_TO_ERROR 1 ENUM_ERROR)
string(LENGTH "${ENUM_STRING}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
string(APPEND SQUIRREL_EXPORT "\n ScriptError::RegisterErrorMap(${ENUM_STRING},${SPACES}${CLS}::${ENUM_ERROR});")
string(APPEND SQUIRREL_EXPORT "\n\tScriptError::RegisterErrorMap(${ENUM_STRING}, ${CLS}::${ENUM_ERROR});")
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
# Mapping of errors to human 'readable' strings.
set(MLEN 0)
foreach(ENUM_ERROR_TO_STRING IN LISTS ENUM_ERROR_TO_STRINGS)
string(LENGTH "${ENUM_ERROR_TO_STRING}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif()
string(APPEND SQUIRREL_EXPORT "\n\tScriptError::RegisterErrorMapString(${CLS}::${ENUM_ERROR_TO_STRING}, \"${ENUM_ERROR_TO_STRING}\");")
endforeach()
foreach(ENUM_ERROR_TO_STRING IN LISTS ENUM_ERROR_TO_STRINGS)
string(LENGTH "${ENUM_ERROR_TO_STRING}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
string(APPEND SQUIRREL_EXPORT "\n ScriptError::RegisterErrorMapString(${CLS}::${ENUM_ERROR_TO_STRING},${SPACES}\"${ENUM_ERROR_TO_STRING}\");")
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
# Static methods
set(MLEN 0)
foreach(STATIC_METHOD IN LISTS STATIC_METHODS)
string(REPLACE ":" ";" STATIC_METHOD "${STATIC_METHOD}")
list(GET STATIC_METHOD 0 FUNCNAME)
string(LENGTH "${FUNCNAME}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
list(GET STATIC_METHOD 1 TYPES)
list(GET STATIC_METHOD 2 SUSPENDABLE)
if(SUSPENDABLE)
set(SUSPENDABLE ", true")
endif()
endforeach()
foreach(STATIC_METHOD IN LISTS STATIC_METHODS)
string(REPLACE ":" ";" STATIC_METHOD "${STATIC_METHOD}")
list(GET STATIC_METHOD 0 FUNCNAME)
list(GET STATIC_METHOD 1 ARGC)
list(GET STATIC_METHOD 2 TYPES)
string(LENGTH "${FUNCNAME}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
if("${TYPES}" STREQUAL "v")
if(LEN GREATER 8)
math(EXPR LEN "${LEN} - 8")
else()
set(LEN 0)
endif()
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQAdvancedStaticMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQAdvancedStaticMethod(engine, &${CLS}::${FUNCNAME}, \"${FUNCNAME}\"${SUSPENDABLE});")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQStaticMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}${ARGC}, \"${TYPES}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQStaticMethod(engine, &${CLS}::${FUNCNAME}, \"${FUNCNAME}\", \"${TYPES}\"${SUSPENDABLE});")
endif()
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
# Non-static methods
set(MLEN 0)
foreach(METHOD IN LISTS METHODS)
string(REPLACE ":" ";" METHOD "${METHOD}")
list(GET METHOD 0 FUNCNAME)
string(LENGTH "${FUNCNAME}" LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
list(GET METHOD 1 TYPES)
list(GET METHOD 2 SUSPENDABLE)
if(SUSPENDABLE)
set(SUSPENDABLE ", true")
endif()
endforeach()
foreach(METHOD IN LISTS METHODS)
string(REPLACE ":" ";" METHOD "${METHOD}")
list(GET METHOD 0 FUNCNAME)
list(GET METHOD 1 ARGC)
list(GET METHOD 2 TYPES)
string(LENGTH "${FUNCNAME}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
if("${TYPES}" STREQUAL "v")
if(LEN GREATER 8)
math(EXPR LEN "${LEN} - 8")
else()
set(LEN 0)
endif()
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQAdvancedMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQAdvancedMethod(engine, &${CLS}::${FUNCNAME}, \"${FUNCNAME}\"${SUSPENDABLE});")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}${ARGC}, \"${TYPES}\");")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.DefSQMethod(engine, &${CLS}::${FUNCNAME}, \"${FUNCNAME}\", \"${TYPES}\"${SUSPENDABLE});")
endif()
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PostRegister(engine);")
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.PostRegister(engine);")
string(APPEND SQUIRREL_EXPORT "\n}")
reset_reader()
@@ -539,22 +462,31 @@ foreach(LINE IN LISTS SOURCE_LINES)
continue()
endif()
if(NOT BRACE_LEVEL EQUAL CLS_LEVEL)
continue()
endif()
# Add enums
if(IN_ENUM)
string(REGEX MATCH "([^, ]+)" ENUM_VALUE "${LINE}")
list(APPEND ENUM_VALUES "${ENUM_VALUE}")
# Check if this a special error enum
list(GET ENUMS -1 ENUM)
string(REGEX MATCH "([^,\t ]+)" ENUM_VALUE "${LINE}")
if(IN_SCOPED_ENUM)
list(APPEND ENUM_VALUES "${ENUM}::${ENUM_VALUE}")
else()
list(APPEND ENUM_VALUES "${ENUM_VALUE}")
endif()
if("${ENUM}" MATCHES ".*::ErrorMessages")
# syntax:
# enum ErrorMessages {
# ERR_SOME_ERROR, // [STR_ITEM1, STR_ITEM2, ...]
#\tERR_SOME_ERROR,\t// [STR_ITEM1, STR_ITEM2, ...]
# }
# Set the mappings
if("${LINE}" MATCHES "\\[(.*)\\]")
string(REGEX REPLACE "[ ]" "" MAPPINGS "${CMAKE_MATCH_1}")
string(REGEX REPLACE "[ \t]" "" MAPPINGS "${CMAKE_MATCH_1}")
string(REPLACE "," ";" MAPPINGS "${MAPPINGS}")
foreach(MAPPING IN LISTS MAPPINGS)
@@ -568,11 +500,11 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
# Add a const (non-enum) value
if("${LINE}" MATCHES "^[ ]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
if("${LINE}" MATCHES "^[ \t]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
list(APPEND CONST_VALUES "${CMAKE_MATCH_1}")
continue()
endif()
if("${LINE}" MATCHES "^[ ]*static constexpr [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
if("${LINE}" MATCHES "^[ \t]*static constexpr [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
list(APPEND CONST_VALUES "${CMAKE_MATCH_1}")
continue()
endif()
@@ -584,41 +516,43 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
if("${LINE}" MATCHES "~")
if(DEFINED API_SELECTED)
message(WARNING "Destructor for '${CLS}' has @api. Tag ignored.")
message(WARNING "${SCRIPT_API_FILE}:${NUM_LINE}: Destructor for '${CLS}' has @api. Tag ignored.")
unset(API_SELECTED)
endif()
continue()
endif()
unset(IS_STATIC)
if("${LINE}" MATCHES "static")
if("${LINE}" MATCHES "static ")
set(IS_STATIC TRUE)
endif()
string(REGEX REPLACE "(virtual|static|const)[ ]+" "" LINE "${LINE}")
string(REGEX REPLACE "(virtual|static|const)[ \t]+" "" LINE "${LINE}")
string(REGEX REPLACE "{.*" "" LINE "${LINE}")
set(PARAM_S "${LINE}")
string(REGEX REPLACE "\\*" "" LINE "${LINE}")
string(REGEX REPLACE "\\(.*" "" LINE "${LINE}")
string(REGEX REPLACE ".*\\(" "" PARAM_S "${PARAM_S}")
# Parameters start at first "(". Further "(" will appear in ctor lists.
string(REGEX MATCH "\\(.*" PARAM_S "${PARAM_S}")
string(REGEX REPLACE "\\).*" "" PARAM_S "${PARAM_S}")
string(REGEX REPLACE "^\\(" "" PARAM_S "${PARAM_S}")
string(REGEX MATCH "([^ ]+)( ([^ ]+))?" RESULT "${LINE}")
string(REGEX MATCH "([^ \t]+)( ([^ ]+))?" RESULT "${LINE}")
set(FUNCTYPE "${CMAKE_MATCH_1}")
set(FUNCNAME "${CMAKE_MATCH_3}")
if("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
if(DEFINED API_SELECTED)
message(WARNING "Constructor for '${CLS}' has @api. Tag ignored.")
message(WARNING "${SCRIPT_API_FILE}:${NUM_LINE}: Constructor for '${CLS}' has @api. Tag ignored.")
unset(API_SELECTED)
endif()
set(CLS_PARAM_0 "${PARAM_S}")
set(CLS_PARAMS "${PARAM_S}")
if(NOT PARAM_S)
continue()
endif()
elseif(NOT FUNCNAME)
continue()
endif()
endif()
string(REPLACE "," ";" PARAMS "${PARAM_S}")
if(IS_STATIC)
@@ -627,9 +561,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
set(TYPES "x")
endif()
set(LEN 1)
foreach(PARAM IN LISTS PARAMS)
math(EXPR LEN "${LEN} + 1")
string(STRIP "${PARAM}" PARAM)
if("${PARAM}" MATCHES "\\*|&")
if("${PARAM}" MATCHES "^char")
@@ -668,14 +600,14 @@ foreach(LINE IN LISTS SOURCE_LINES)
unset(API_SELECTED)
if("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
set(CLS_PARAM_1 ${LEN})
set(CLS_PARAM_2 "${TYPES}")
set(CLS_TYPES "${TYPES}")
elseif("${FUNCNAME}" MATCHES "^_" AND NOT "${TYPES}" STREQUAL "v")
elseif(IS_STATIC)
list(APPEND STATIC_METHODS "${FUNCNAME}:${LEN}:${TYPES}")
list(APPEND STATIC_METHODS "${FUNCNAME}:${TYPES}:${SUSPENDABLE}")
else()
list(APPEND METHODS "${FUNCNAME}:${LEN}:${TYPES}")
list(APPEND METHODS "${FUNCNAME}:${TYPES}:${SUSPENDABLE}")
endif()
unset(SUSPENDABLE)
continue()
endif()
endforeach()
+2 -2
View File
@@ -19,7 +19,7 @@ endif()
file(READ "${API_FILES}" SCRIPT_API_BINARY_FILES)
foreach(FILE IN LISTS SCRIPT_API_BINARY_FILES)
file(STRINGS "${FILE}" LINES REGEX "^void SQ${APIUC}.*_Register\\(Squirrel \\*engine\\)$")
file(STRINGS "${FILE}" LINES REGEX "^void SQ${APIUC}.*_Register\\(Squirrel &engine\\)$")
if(LINES)
string(REGEX REPLACE ".*api/${APILC}/(.*)" "#include \"\\1\"" FILE "${FILE}")
list(APPEND SQUIRREL_INCLUDES "${FILE}")
@@ -28,7 +28,7 @@ foreach(FILE IN LISTS SCRIPT_API_BINARY_FILES)
continue()
endif()
string(REGEX REPLACE "^.*void " " " LINE "${LINE}")
string(REGEX REPLACE "Squirrel \\*" "" LINE "${LINE}")
string(REGEX REPLACE "Squirrel &" "" LINE "${LINE}")
list(APPEND SQUIRREL_REGISTER "${LINE}")
endforeach()
endif()
+66 -66
View File
@@ -38,7 +38,7 @@ Last updated: 2024-03-26
packets are dropped in favour of a new packet.
This though will be reflected in the protocol version as announced in the
`ADMIN_PACKET_SERVER_PROTOCOL` in section 2.0).
`PacketAdminType::ServerProtocol` in section 2.0).
A reference implementation in Java for a client connecting to the admin interface
can be found at: [http://dev.openttdcoop.org/projects/joan](http://dev.openttdcoop.org/projects/joan)
@@ -49,18 +49,18 @@ Last updated: 2024-03-26
Create a TCP connection to the server on port 3977. The application is
expected to authenticate within 10 seconds.
To authenticate send either an `ADMIN_PACKET_ADMIN_JOIN` or an
`ADMIN_PACKET_ADMIN_JOIN_SECURE` packet.
To authenticate send either an `PacketAdminType::AdminJoin` or an
`PacketAdminType::AdminJoinSecure` packet.
The `ADMIN_PACKET_ADMIN_JOIN` packet sends the password without any
The `PacketAdminType::AdminJoin` packet sends the password without any
encryption or safeguards over the connection, and as such has been disabled
by default.
The `ADMIN_PACKET_ADMIN_JOIN_SECURE` packet initiates a key exchange
The `PacketAdminType::AdminJoinSecure` packet initiates a key exchange
authentication schema which tells te server which methods the client
supports and the server makes a choice. The server will then send an
`ADMIN_PACKET_SERVER_AUTH_REQUEST` packet to which the client has to respond
with an `ADMIN_PACKET_ADMIN_AUTH_RESPONSE` packet.
`PacketAdminType::ServerAuthenticationRequest` packet to which the client has to respond
with an `PacketAdminType::AdminAuthenticationResponse` packet.
The current choices for secure authentication are authorized keys, where
the client has a private key and the server a list of authorized public
@@ -69,41 +69,41 @@ Last updated: 2024-03-26
The server falls back to password authentication when the client's key is
not in the list of authorized keys.
When authentication has succeeded for either of the `JOIN` schemas, the
server will reply with `ADMIN_PACKET_SERVER_PROTOCOL` followed directly
by `ADMIN_PACKET_SERVER_WELCOME`.
When authentication has succeeded for either of the `AdminJoin` schemas, the
server will reply with `PacketAdminType::ServerProtocol` followed directly
by `PacketAdminType::ServerWelcome`.
`ADMIN_PACKET_SERVER_PROTOCOL` contains details about the protocol version.
`PacketAdminType::ServerProtocol` contains details about the protocol version.
It is the job of your application to check this number and decide whether
it will remain connected or not.
Furthermore, this packet holds details on every `AdminUpdateType` and the
supported `AdminFrequencyTypes` (bitwise representation).
`ADMIN_PACKET_SERVER_WELCOME` contains details on the server and the map,
`PacketAdminType::ServerWelcome` contains details on the server and the map,
e.g. if the server is dedicated, its NetworkLanguage, size of the Map, etc.
Once you have received `ADMIN_PACKET_SERVER_WELCOME` you are connected and
Once you have received `PacketAdminType::ServerWelcome` you are connected and
authorized to do your thing.
The server will not provide any game related updates unless you ask for them.
There are four packets the server will none the less send, if applicable:
- ADMIN_PACKET_SERVER_ERROR
- ADMIN_PACKET_SERVER_WELCOME
- ADMIN_PACKET_SERVER_NEWGAME
- ADMIN_PACKET_SERVER_SHUTDOWN
- PacketAdminType::ServerError
- PacketAdminType::ServerWelcome
- PacketAdminType::ServerNewGame
- PacketAdminType::ServerShutdown
However, `ADMIN_PACKET_SERVER_WELCOME` only after a `ADMIN_PACKET_SERVER_NEWGAME`
However, `PacketAdminType::ServerWelcome` only after a `PacketAdminType::ServerNewGame`
## 3.0) Asking for updates
Asking for updates is done with `ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY`.
Asking for updates is done with `PacketAdminType::AdminUpdateFrequency`.
With this packet you define which update you wish to receive at which
frequency.
Note: not every update type supports every frequency. If in doubt, you can
verify against the data received in `ADMIN_PACKET_SERVER_PROTOCOL`.
verify against the data received in `PacketAdminType::ServerProtocol`.
Please note the potential gotcha in the "Certain packet information" section below
when using the `ADMIN_UPDATE_FREQUENCY` packet.
@@ -114,61 +114,61 @@ Last updated: 2024-03-26
Additional debug information can be found with a debug level of `net=3`.
`ADMIN_UPDATE_DATE` results in the server sending:
`AdminUpdateType::Date` results in the server sending:
- ADMIN_PACKET_SERVER_DATE
- PacketAdminType::ServerDate
`ADMIN_UPDATE_CLIENT_INFO` results in the server sending:
`AdminUpdateType::ClientInfo` results in the server sending:
- ADMIN_PACKET_SERVER_CLIENT_JOIN
- ADMIN_PACKET_SERVER_CLIENT_INFO
- ADMIN_PACKET_SERVER_CLIENT_UPDATE
- ADMIN_PACKET_SERVER_CLIENT_QUIT
- ADMIN_PACKET_SERVER_CLIENT_ERROR
- PacketAdminType::ServerClientJoin
- PacketAdminType::ServerClientInfo
- PacketAdminType::ServerClientUpdate
- PacketAdminType::ServerClientQuit
- PacketAdminType::ServerClientError
`ADMIN_UPDATE_COMPANY_INFO` results in the server sending:
`AdminUpdateType::CompanyInfo` results in the server sending:
- ADMIN_PACKET_SERVER_COMPANY_NEW
- ADMIN_PACKET_SERVER_COMPANY_INFO
- ADMIN_PACKET_SERVER_COMPANY_UPDATE
- ADMIN_PACKET_SERVER_COMPANY_REMOVE
- PacketAdminType::ServerCompanyNew
- PacketAdminType::ServerCompanyInfo
- PacketAdminType::ServerCompanyUpdate
- PacketAdminType::ServerCompanyRemove
`ADMIN_UPDATE_COMPANY_ECONOMY` results in the server sending:
`AdminUpdateType::CompanyEconomy` results in the server sending:
- ADMIN_PACKET_SERVER_COMPANY_ECONOMY
- PacketAdminType::ServerCompanyEconomy
`ADMIN_UPDATE_COMPANY_STATS` results in the server sending:
`AdminUpdateType::CompanyStats` results in the server sending:
- ADMIN_PACKET_SERVER_COMPANY_STATS
- PacketAdminType::ServerCompanyStatistics
`ADMIN_UPDATE_CHAT` results in the server sending:
`AdminUpdateType::Chat` results in the server sending:
- ADMIN_PACKET_SERVER_CHAT
- PacketAdminType::ServerChat
`ADMIN_UPDATE_CONSOLE` results in the server sending:
`AdminUpdateType::Console` results in the server sending:
- ADMIN_PACKET_SERVER_CONSOLE
- PacketAdminType::ServerConsole
`ADMIN_UPDATE_CMD_LOGGING` results in the server sending:
`AdminUpdateType::CmdLogging` results in the server sending:
- ADMIN_PACKET_SERVER_CMD_LOGGING
- PacketAdminType::ServerCommandLogging
## 3.1) Polling manually
Certain `AdminUpdateTypes` can also be polled:
- ADMIN_UPDATE_DATE
- ADMIN_UPDATE_CLIENT_INFO
- ADMIN_UPDATE_COMPANY_INFO
- ADMIN_UPDATE_COMPANY_ECONOMY
- ADMIN_UPDATE_COMPANY_STATS
- ADMIN_UPDATE_CMD_NAMES
- AdminUpdateType::Date
- AdminUpdateType::ClientInfo
- AdminUpdateType::CompanyInfo
- AdminUpdateType::CompanyEconomy
- AdminUpdateType::CompanyStats
- AdminUpdateType::CmdNames
Please note the potential gotcha in the "Certain packet information" section below
when using the `ADMIN_POLL` packet.
`ADMIN_UPDATE_CLIENT_INFO` and `ADMIN_UPDATE_COMPANY_INFO` accept an additional
`AdminUpdateType::ClientInfo` and `AdminUpdateType::CompanyInfo` accept an additional
parameter. This parameter is used to specify a certain client or company.
Setting this parameter to `UINT32_MAX (0xFFFFFFFF)` will tell the server you
want to receive updates for all clients or companies.
@@ -181,16 +181,16 @@ Last updated: 2024-03-26
## 4.0) Sending rcon commands
Rcon runs separate from the `ADMIN_UPDATE_CONSOLE` `AdminUpdateType`. Requesting
Rcon runs separate from the `AdminUpdateType::Console` `AdminUpdateType`. Requesting
the execution of a remote console command is done with the packet
`ADMIN_PACKET_ADMIN_RCON`.
`PacketAdminType::AdminRemoteConsoleCommand`.
Note: No additional authentication is required for rcon commands.
The server will reply with one or more `ADMIN_PACKET_SERVER_RCON` packets.
Finally an `ADMIN_PACKET_ADMIN_RCON_END` packet will be sent. Applications
The server will reply with one or more `PacketAdminType::ServerRemoteConsoleCommand` packets.
Finally an `PacketAdminType::AdminRemoteConsoleCommandEnd` packet will be sent. Applications
will not receive the answer twice if they have asked for the `AdminUpdateType`
`ADMIN_UPDATE_CONSOLE`, as the result is not printed on the servers console
`AdminUpdateType::Console`, as the result is not printed on the servers console
(just like clients rcon commands).
Furthermore, sending a `say` command (or any similar command) will not
@@ -199,7 +199,7 @@ Last updated: 2024-03-26
was not sent from the admin network.
Note that when content is queried or updated via rcon, the processing
happens asynchronously. But the `ADMIN_PACKET_ADMIN_RCON_END` packet is sent
happens asynchronously. But the `PacketAdminType::AdminRemoteConsoleCommandEnd` packet is sent
already right after the content is requested as there's no immediate output.
Thus other packages and the output of content rcon command may be sent at
an arbitrary later time, mixing into the output of other console activity,
@@ -208,7 +208,7 @@ Last updated: 2024-03-26
## 5.0) Sending chat
Sending a `ADMIN_PACKET_ADMIN_CHAT` results in chat originating from the server.
Sending a `PacketAdminType::AdminChat` results in chat originating from the server.
Currently four types of chat are supported:
@@ -223,7 +223,7 @@ Last updated: 2024-03-26
## 5.1) Receiving chat
Register `ADMIN_UPDATE_CHAT` at `AdminUpdateFrequency::Automatic` to receive chat.
Register `AdminUpdateType::Chat` at `AdminUpdateFrequency::Automatic` to receive chat.
The application will be able to receive all chat the server can see.
The configuration option `network.server_admin_chat` specifies whether
@@ -233,12 +233,12 @@ Last updated: 2024-03-26
## 6.0) Disconnecting
It is a kind thing to say good bye before leaving. Do this by sending the
`ADMIN_PACKET_ADMIN_QUIT` packet.
`PacketAdminType::AdminQuit` packet.
## 7.0) Certain packet information
`ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY` and `ADMIN_PACKET_ADMIN_POLL`
`PacketAdminType::AdminUpdateFrequency` and `PacketAdminType::AdminPoll`
Potential gotcha: the AdminUpdateType integer type used is a
uint16 for `UPDATE_FREQUENCY`, and a uint8 for `POLL`.
@@ -246,21 +246,21 @@ Last updated: 2024-03-26
It is safe to cast between the two when sending
(i.e cast from a uint8 to a uint16).
All `ADMIN_PACKET_SERVER_*` packets have an enum value greater 100.
All `PacketAdminType::Server*` packets have an enum value greater 100.
`ADMIN_PACKET_SERVER_WELCOME`
`PacketAdminType::ServerWelcome`
Either directly follows `ADMIN_PACKET_SERVER_PROTOCOL` or is sent
Either directly follows `PacketAdminType::ServerProtocol` or is sent
after a new game has been started or a map loaded, i.e. also
after ADMIN_PACKET_SERVER_NEWGAME.
after PacketAdminType::ServerNewGame.
`ADMIN_PACKET_SERVER_CLIENT_JOIN` and `ADMIN_PACKET_SERVER_COMPANY_NEW`
`PacketAdminType::ServerClientJoin` and `PacketAdminType::ServerCompanyNew`
These packets directly follow their respective INFO packets. If you receive
a CLIENT_JOIN / COMPANY_NEW packet without having received the INFO packet
it may be a good idea to POLL for the specific ID.
`ADMIN_PACKET_SERVER_CMD_NAMES` and `ADMIN_PACKET_SERVER_CMD_LOGGING`
`PacketAdminType::ServerCommandNames` and `PacketAdminType::ServerCommandLogging`
Data provided with these packets is not stable and will not be
treated as such. Do not rely on IDs or names to be constant
+11
View File
@@ -38,6 +38,17 @@ your operating system:
It includes the OpenTTD files (grf+lng) and it will work as long as they
are not touched
7. The Atari Transport Tycoon Deluxe directory, if installed (path may vary)
This refers to the `CD` folder within the Transport Tycoon Deluxe
installation folder (2026 Atari re-release). OpenTTD detects the presence
of this folder based upon the contents of the `installpath.ini` file located
in:
- Windows: `%APPDATA%\Atari\Transport Tycoon Deluxe`
- macOS: `~/Library/Application Support/Atari/Transport Tycoon Deluxe`
- Linux: `$XDG_DATA_HOME/Atari/Transport Tycoon Deluxe`
This is used only for the loading of base sets (graphics, sound, music).
Different types of data or extensions go into different subdirectories of the
chosen main OpenTTD directory:
+98 -94
View File
@@ -16,7 +16,7 @@
<a href="landscape_grid.html">Landscape grid</a> page.
</p>
<p>Nine attributes (counting &quot;<span style="font-weight: bold;">type</span>&quot; and
&quot;<span style="font-weight: bold;">height</span>&quot;) hold the information about a tile.<BR>
&quot;<span style="font-weight: bold;">height</span>&quot;) hold the information about a tile.<br>
These attributes are referred to as
&quot;<span style="font-weight: bold;">type</span>",
&quot;<span style="font-weight: bold;">height</span>",
@@ -50,6 +50,7 @@
<tr><td><tt>0A</tt></td><td>Objects</td></tr>
</table>
</li>
<li>
Bits 3..2:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above.</td></tr>
@@ -57,6 +58,7 @@
<tr><td><tt>01</tt></td><td>Axis X (North-East)</td></tr>
<tr><td><tt>02</tt></td><td>Axis Y (South-West)</td></tr>
</table>
</li>
<li>
<a name="tropic_zone"></a>
Bits 1..0:
@@ -69,13 +71,14 @@
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
</li>
</ul>
</li>
<li><span style="font-weight: bold;">m1</span>
<ul>
<li>
<a name="WaterClass"></a>
Bits 6..5:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">The type of water that is on a tile.
<tr bgcolor="#CCCCCC"><td colspan="2">The type of water that is on a tile.</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td align=left>Sea</td></tr>
<tr><td><tt>01</tt></td><td align=left>Canal</td></tr>
<tr><td><tt>02</tt></td><td align=left>River</td></tr>
@@ -87,7 +90,7 @@
<a name="OwnershipInfo"></a>
Bits 4..0:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">The owner of a tile can be either companies (human or AI) or "Game entities".
<tr bgcolor="#CCCCCC"><td colspan="2">The owner of a tile can be either companies (human or AI) or "Game entities".</td></tr>
<tr><td style="width: 5em;"><tt>00..0E</tt></td><td align=left>Normal companies</td></tr>
<tr><td><tt>0F</tt></td><td align=left>a town owns the tile</td></tr>
<tr><td><tt>10</tt></td><td align=left>nobody owns the tile</td></tr>
@@ -152,8 +155,8 @@
<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
<li>m4 bits 4..2: same as 7..5, but for the SE border</li>
<li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt>, <tt>10</tt> and above.<BR>
on wraparound, the tile is updated (for fields, the type of fields in m3 is increased, for other types the tile type in m5 is increased).<BR>
other than <tt>03</tt>, <tt>07</tt>, <tt>0B</tt>, <tt>10</tt> and above.<br>
on wraparound, the tile is updated (for fields, the type of fields in m3 is increased, for other types the tile type in m5 is increased).<br>
For snow and desert, these bits are not used, tile is updated on every periodic processing.</li>
<li>m5 bits 4..2: tile type:
<table>
@@ -390,7 +393,7 @@
</tr>
</table>
</li>
<li>m5 bit 6 set = with signals:<BR>
<li>m5 bit 6 set = with signals:<br>
There are at most 4 signals on a tile. The signals 0..3 belong to the directions:
<table>
<tr>
@@ -562,7 +565,7 @@
<td>
<ul>
<li>m2: Index into the array of towns (owning town for town roads; closest town otherwise, INVALID_TOWN if there is no town or we are creating a town)</li>
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)</li>
<li>m4 bits 5..0: <a href="#RoadType">Roadtype</a></li>
<li>m7 bit 5 set = on snow or desert</li>
<li>m8 bits 11..6: <a href="#TramType">Tramtype</a></li>
@@ -721,6 +724,7 @@
</ul>
</li>
</ul>
</li>
<li>m3 bit 6 : free</li>
<li>m3 bit 5 : The house is protected from the town upgrading it</li>
<li>m3 bits 4..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
@@ -1050,97 +1054,96 @@
<td>
<ul>
<li>m1 bit 7: Ship docking tile status</li>
<li>m1 bits 6..5 : Water class (sea, canal or river)
<li>m1 bits 6..5 : Water class (sea, canal or river)</li>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (for sea, rivers, and coasts normally <tt>11</tt>)</li>
<li>m2: Depot index (for depots only)</li>
<li>m3 bit 0: Non-flooding state</li>
<li>m4: Random data for canal or river tiles</li>
<li>m5 bits 7..4: Water tile type:
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>water, canal or river</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>coast or riverbank</td>
</tr>
<tr>
<td nowrap valign=top><tt>2</tt>&nbsp; </td>
<td>canal lock<br>
<ul>
<li>m5 bits 3..2: Lock part
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>Middle part</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>Lower part</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp; </td>
<td>Upper part</td>
</tr>
</table>
</li>
<li>m5 bits 1..0: Lock direction
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>NE raised</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>SE raised</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp; </td>
<td>SW raised</td>
</tr>
<tr>
<td><tt>3</tt>&nbsp; </td>
<td>NW raised</td>
</tr>
</table>
</li>
</ul>
</td>
</tr>
<tr>
<td nowrap valign=top><tt>3</tt>&nbsp; </td>
<td>depot<br>
<ul>
<li>m5 bit 1: Depot axis
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>X direction (NE-SW)</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>Y direction (NW-SE)</td>
</tr>
</table>
</li>
<li>m5 bit 0: Depot part
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>North part</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>South part</td>
</tr>
</table>
</li>
</ul>
</td>
</tr>
</table>
</li>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>water, canal or river</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>coast or riverbank</td>
</tr>
<tr>
<td nowrap valign=top><tt>2</tt>&nbsp; </td>
<td>canal lock<br>
<ul>
<li>m5 bits 3..2: Lock part
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>Middle part</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>Lower part</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp; </td>
<td>Upper part</td>
</tr>
</table>
</li>
<li>m5 bits 1..0: Lock direction
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>NE raised</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>SE raised</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp; </td>
<td>SW raised</td>
</tr>
<tr>
<td><tt>3</tt>&nbsp; </td>
<td>NW raised</td>
</tr>
</table>
</li>
</ul>
</td>
</tr>
<tr>
<td nowrap valign=top><tt>3</tt>&nbsp; </td>
<td>depot<br>
<ul>
<li>m5 bit 1: Depot axis
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>X direction (NE-SW)</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>Y direction (NW-SE)</td>
</tr>
</table>
</li>
<li>m5 bit 0: Depot part
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>North part</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>South part</td>
</tr>
</table>
</li>
</ul>
</td>
</tr>
</table>
</li>
</ul>
</td>
@@ -1167,7 +1170,7 @@
<ul>
<li>m1 bit 7: clear = under construction
<ul>
<li>m1 bits 6..5 : Water class (sea, canal, river or land)
<li>m1 bits 6..5 : Water class (sea, canal, river or land)</li>
<li>m1 bits 3..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
<li>m1 bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around<br>
the meaning is different for some animated tiles which are never under construction (types <tt>01</tt>, <tt>1E</tt>..<tt>20</tt>, <tt>30</tt>, <tt>58</tt>; see above)</li>
@@ -1323,7 +1326,8 @@
<td nowrap valign=top><tt>58</tt>&nbsp; </td>
<td align=left>wheel tower when animated; animation state in m7 bits 5..0; m7 bit 6 set = sound already generated</td>
</tr>
</table></td>
</table>
</td>
</tr>
<tr>
+4 -4
View File
@@ -92,7 +92,7 @@ the array so you can quickly see what is used and what is not.
<tr>
<td class="caption">farmland</td>
<td class="bits"><span class="pool" title="Industry index on pool">XXXX XXXX XXXX XXXX</span></td>
<td class="bits"><span class="used" title="Type of hedge on NE border">XXX</span> <span class="used" title="Field production stage">XXXXX</span></td>
<td class="bits"><span class="used" title="Type of hedge on NE border">XXX</span> <span class="used" title="Snow presence">X</span><span class="used" title="Field production stage">XXXX</span></td>
</tr>
<tr>
<td rowspan=3>1</td>
@@ -165,14 +165,14 @@ the array so you can quickly see what is used and what is not.
</tr>
<tr>
<td class="caption">house under construction</td>
<td class="bits"><span class="used" title="House is complete/in construction (see m5)">O</span><span class="used" title="House type (m4 + m3[6])">X</span><span class="used" title="The house is protected from the town upgrading it.">X</span><span class="usable" title="Activated triggers (bits 2..4 don't have a meaning)">X XX</span><span class="used" title="Activated triggers (bits 2..4 don't have a meaning)">XX</span></td>
<td class="bits"><span class="used" title="House is complete/in construction (see m5)">O</span><span class="free">O</span><span class="used" title="The house is protected from the town upgrading it.">X</span><span class="usable" title="Activated triggers (bits 2..4 don't have a meaning)">X XX</span><span class="used" title="Activated triggers (bits 2..4 don't have a meaning)">XX</span></td>
<td class="bits"><span class="free">OOO</span><span class="used" title="Construction stage">X X</span><span class="used" title="Construction counter">XXX</span></td>
</tr>
<tr>
<td>4</td>
<td class="caption">trees</td>
<td class="bits"><span class="free">O</span><span class="used" title="Water class">XX</span><span class="usable" title="Owner (always OWNER_NONE)">1 OOOO</span></td>
<td class="bits"><span class="free">OOOO OOO</span><span class="used" title="Tree ground">XXX</span> <span class="used" title="Tree density">XX</span> <span class="used" title="Tree counter">XXXX</span></td>
<td class="bits"><span class="free">OOOO OOO</span><span class="used" title="Tree ground">XXX</span> <span class="used" title="Tree density">XX</span> <span class="free">OOOO</span></td>
<td class="bits"><span class="usable" title="Tree type unused bits">XX</span><span class="used" title="Tree type">XX XXXX</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="used" title="Number of trees on tile (+1)">XX</span><span class="free">OO O</span><span class="used" title="Tree growth">XXX</span></td>
@@ -246,7 +246,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits" rowspan=4><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits" rowspan=5><span class="free">OOOO OOO</span><span class="used" title="Non-flooding state">X</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="used" title="Water tile type: coast, clear, lock, depot">0000</span> <span class="free">OOO0</span></td>
<td class="bits"><span class="used" title="Water tile type: coast, clear, lock, depot">0000</span> <span class="free">OOOO</span></td>
<td class="bits" rowspan=5><span class="free">OOOO OOOO</span></td>
<td class="bits" rowspan=5><span class="free">OOOO OOOO</span></td>
<td class="bits" rowspan=5><span class="free">OOOO OOOO OOOO OOOO</span></td>
+7 -2
View File
@@ -16,8 +16,11 @@
; - `openttd -I <name>` starts OpenTTD with the given set (case sensitive)
; - adding `graphicsset = <name>` to the misc section of openttd.cfg makes
; OpenTTD start with that graphics set by default
; - there is a command line tool for all platforms called md5sum that can
; create the MD5 checksum you need.
; - `grfid -m` can give the GRF file MD5 checksums that you need
; - The `--md5` output option for `nmlc` can also give the MD5 if you are
; encoding from an nml source
; - Simple file MD5 checksums, eg. using `md5sum` are not correct for grf
; container versions other than 1
; - all files specified in this file are search relatively to the path where
; this file is found, i.e. if the graphics files are in a subdir you have
; to add that subdir to the names in this file to! It will NOT search for
@@ -44,6 +47,8 @@ description.en_US = howdie
palette = DOS
; preferred blitter, optional; either 8bpp (default) or 32bpp.
blitter = 8bpp
; url, optional
url = https://github.com/my/baseset
; The files section lists the files that replace sprites.
; The file names are case sensitive.
+16 -16
View File
@@ -69,19 +69,19 @@ An example of a valid tag is `PLYR` when looking at it via ASCII, which contains
`[4..4]` - Next follows a byte where the lower 4 bits contain the type.
The possible valid types are:
- `0` - `CH_RIFF` - This chunk is a binary blob.
- `1` - `CH_ARRAY` - This chunk is a list of items.
- `2` - `CH_SPARSE_ARRAY` - This chunk is a list of items.
- `3` - `CH_TABLE` - This chunk is self-describing list of items.
- `4` - `CH_SPARSE_TABLE` - This chunk is self-describing list of items.
- `0` - `ChunkType::Riff` - This chunk is a binary blob.
- `1` - `ChunkType::Array` - This chunk is a list of items.
- `2` - `ChunkType::SparseArray` - This chunk is a list of items.
- `3` - `ChunkType::Table` - This chunk is self-describing list of items.
- `4` - `ChunkType::SparseTable` - This chunk is self-describing list of items.
Now per type the format is (slightly) different.
### CH_RIFF
### ChunkType::Riff
(since savegame version 295, this chunk type is only used for MAP-chunks, containing bit-information about each tile on the map)
A `CH_RIFF` starts with an `uint24` which together with the upper-bits of the type defines the length of the chunk.
A `ChunkType::Riff` starts with an `uint24` which together with the upper-bits of the type defines the length of the chunk.
In pseudo-code:
```
@@ -94,11 +94,11 @@ if type == 0
The next `length` bytes are part of the chunk.
What those bytes mean depends on the tag of the chunk; further details per chunk can be found in the source-code.
### CH_ARRAY / CH_SPARSE_ARRAY
### ChunkType::Array / ChunkType::SparseArray
(this chunk type is deprecated since savegame version 295 and is no longer in use)
`[0..G1]` - A `CH_ARRAY` / `CH_SPARSE_ARRAY` starts with a `gamma`, indicating the size of the next item plus one.
`[0..G1]` - A `ChunkType::Array` / `ChunkType::SparseArray` starts with a `gamma`, indicating the size of the next item plus one.
If this size value is zero, it indicates the end of the list.
This indicates the full length of the next item minus one.
In psuedo-code:
@@ -111,21 +111,21 @@ loop
read <size> bytes
```
`[]` - For `CH_ARRAY` there is an implicit index.
`[]` - For `ChunkType::Array` there is an implicit index.
The loop starts at zero, and every iteration adds one to the index.
For entries in the game that were not allocated, the `size` will be zero.
`[G1+1..G2]` - For `CH_SPARSE_ARRAY` there is an explicit index.
`[G1+1..G2]` - For `ChunkType::SparseArray` there is an explicit index.
The `gamma` following the size indicates the index.
The content of the item is a binary blob, and similar to `CH_RIFF`, it depends on the tag of the chunk what it means.
The content of the item is a binary blob, and similar to `ChunkType::Riff`, it depends on the tag of the chunk what it means.
Please check the source-code for further details.
### CH_TABLE / CH_SPARSE_TABLE
### ChunkType::Table / ChunkType::SparseTable
(this chunk type only exists since savegame version 295)
Both `CH_TABLE` and `CH_SPARSE_TABLE` are very similar to `CH_ARRAY` / `CH_SPARSE_ARRAY` respectively.
Both `ChunkType::Table` and `ChunkType::SparseTable` are very similar to `ChunkType::Array` / `ChunkType::SparseArray` respectively.
The only change is that the chunk starts with a header.
This header describes the chunk in details; with the header you know the meaning of each byte in the binary blob that follows.
@@ -168,7 +168,7 @@ struct | substruct3
The headers will be, in order: `table`, `substruct1`, `substruct3`, `substruct2`, each ending with a `type` is zero field.
After reading all the fields of all the headers, there is a list of records.
To read this, see `CH_ARRAY` / `CH_SPARSE_ARRAY` for details.
To read this, see `ChunkType::Array` / `ChunkType::SparseArray` for details.
As each `type` has a well defined length, you can read the records even without knowing anything about the chunk-tag yourself.
@@ -187,7 +187,7 @@ The prefix is strongly advised to avoid conflicts with future-settings in an unp
## Scripts custom data format
Script chunks (`AIPL` and `GSDT`) use `CH_TABLE` chunk type.
Script chunks (`AIPL` and `GSDT`) use `ChunkType::Table` chunk type.
At the end of each record there's an `uint8` to indicate if there's custom data (1) or not (0).
+3 -3
View File
@@ -2,8 +2,8 @@
## Table of contents
- 1.0) About
- 2.0) Known bugs
- 1.0) [About](#10-about)
- 2.0) [Known bugs](#20-known-bugs)
## 1.0) About
@@ -12,7 +12,7 @@ that are the same as these. If you do, do not act surprised, because
we WILL flame you!
The current list of known bugs that we intend to fix can be found in our
bug tracking system at https://github.com/OpenTTD/OpenTTD/issues
bug tracking system at [https://github.com/OpenTTD/OpenTTD/issues](https://github.com/OpenTTD/OpenTTD/issues)
Also check the closed bugs when searching for your bug in this system as we
might have fixed the bug in the mean time.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
019dba4830a64ee4345d3d647633e1da
c56aad31380c077d619e124bd87c8270
+1 -1
View File
@@ -1,7 +1,7 @@
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
//
// This is the DOS 2CC translation map which OpenTTD translates if needed upon loading.
//
+3
View File
@@ -10,6 +10,7 @@ if(GRFCODEC_FOUND)
${CMAKE_CURRENT_SOURCE_DIR}/airport_preview.nfo
${CMAKE_CURRENT_SOURCE_DIR}/aqueduct.nfo
${CMAKE_CURRENT_SOURCE_DIR}/autorail.nfo
${CMAKE_CURRENT_SOURCE_DIR}/bridge_decks.nfo
${CMAKE_CURRENT_SOURCE_DIR}/canals.nfo
${CMAKE_CURRENT_SOURCE_DIR}/chars.nfo
${CMAKE_CURRENT_SOURCE_DIR}/elrails.nfo
@@ -31,6 +32,8 @@ if(GRFCODEC_FOUND)
${CMAKE_CURRENT_SOURCE_DIR}/airport_preview.png
${CMAKE_CURRENT_SOURCE_DIR}/aqueduct.png
${CMAKE_CURRENT_SOURCE_DIR}/autorail.png
${CMAKE_CURRENT_SOURCE_DIR}/bridge_decks.png
${CMAKE_CURRENT_SOURCE_DIR}/bridge_decks_toyland.png
${CMAKE_CURRENT_SOURCE_DIR}/canals.png
${CMAKE_CURRENT_SOURCE_DIR}/canal_locks.png
${CMAKE_CURRENT_SOURCE_DIR}/chars.png
+1 -1
View File
@@ -1,7 +1,7 @@
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
//
-1 * 0 0C "Airport previews"
-1 * 0 05 16 09
+1 -1
View File
@@ -1,7 +1,7 @@
// This file is part of OpenTTD.
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
//
-1 * 0 0C "Extra airport graphics"
-1 * 3 05 10 0F

Some files were not shown because too many files have changed in this diff Show More