Compare commits

..

1302 Commits

Author SHA1 Message Date
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
1578 changed files with 71351 additions and 55547 deletions
-50
View File
@@ -1,50 +0,0 @@
name: 'Setup vcpkg'
description: 'Installs vcpkg and initialises binary caching via NuGet'
inputs:
vcpkg-location:
description: 'Where to install vcpkg'
required: true
mono-install-command:
description: 'Command to run to install mono'
required: false
runs:
using: "composite"
steps:
- name: Install vcpkg
shell: bash
run: |
git clone https://github.com/microsoft/vcpkg "${{ inputs.vcpkg-location }}"
cd "${{ inputs.vcpkg-location }}"
./bootstrap-vcpkg.$(if [ "${{ runner.os }}" = "Windows" ]; then echo "bat"; else echo "sh"; fi) -disableMetrics
- name: Install mono
if: inputs.mono-install-command
shell: bash
run: |
${{ inputs.mono-install-command }}
echo "MONO=mono" >> "$GITHUB_ENV"
- name: Setup NuGet Credentials
shell: bash
env:
FEED_URL: 'https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json'
run: |
cd "${{ inputs.vcpkg-location }}"
${{ env.MONO }} $(./vcpkg fetch nuget | tail -n 1) \
sources add \
-source "${{ env.FEED_URL }}" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ github.token }}"
${{ env.MONO }} $(./vcpkg fetch nuget | tail -n 1) \
setapikey "${{ github.token }}" \
-source "${{ env.FEED_URL }}"
- name: Setup vcpkg caching
uses: actions/github-script@v7
with:
script: |
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;nuget,GitHub,readwrite')
+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
@@ -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: |
+4 -6
View File
@@ -30,13 +30,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/vcpkg
mono-install-command: 'sudo apt-get install -y --no-install-recommends mono-complete'
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
run: |
@@ -67,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:
+4 -6
View File
@@ -32,13 +32,11 @@ jobs:
xcode-version: latest-stable
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/vcpkg
mono-install-command: 'brew install mono'
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install OpenGFX
run: |
@@ -67,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
+4 -5
View File
@@ -18,12 +18,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install OpenGFX
shell: bash
@@ -61,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::"
+8 -9
View File
@@ -21,16 +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
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/vcpkg
mono-install-command: 'sudo apt-get install -y --no-install-recommends mono-complete'
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
run: |
@@ -60,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:
@@ -76,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
@@ -92,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
@@ -110,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
+9 -5
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
@@ -40,9 +40,11 @@ jobs:
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
@@ -81,6 +83,7 @@ jobs:
yum install -y \
alsa-lib-devel \
pulseaudio-libs-devel \
pipewire-devel \
# EOF
echo "::endgroup::"
@@ -110,7 +113,8 @@ jobs:
echo "::endgroup::"
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
with:
vcpkg-location: /vcpkg
mono-install-command: 'yum install -y mono-complete'
@@ -125,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 \
@@ -156,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
+8 -10
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
@@ -38,10 +38,8 @@ jobs:
uses: Swatinem/rust-cache@v2
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/vcpkg
mono-install-command: 'brew install mono'
id: vcpkg
uses: OpenTTD/actions/setup-vcpkg@v6
- name: Install dependencies
env:
@@ -79,7 +77,7 @@ jobs:
echo "::endgroup::"
- name: Import code signing certificates
uses: Apple-Actions/import-codesign-certs@v5
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 }}
@@ -97,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 }} \
@@ -118,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 }} \
@@ -205,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
+8 -9
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
@@ -46,15 +46,14 @@ jobs:
uses: Swatinem/rust-cache@v2
- name: Setup vcpkg
uses: ./.github/actions/setup-vcpkg
with:
vcpkg-location: ${{ runner.temp }}/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"
@@ -103,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 \
@@ -133,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 }} \
@@ -194,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
+16 -17
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
@@ -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
+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. */
+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 15 to 14. */
+8
View File
@@ -0,0 +1,8 @@
/*
* 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. */
+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. */
+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 15 to 14. */
+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;
+299
View File
@@ -1,5 +1,304 @@
## 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)
-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}")
+59 -127
View File
@@ -215,6 +215,10 @@ foreach(LINE IN LISTS SOURCE_LINES)
continue()
endif()
if("${LINE}" MATCHES "^([\t ]*)\\* @suspendable.*$")
set(SUSPENDABLE TRUE)
endif()
# Ignore the comments
if("${LINE}" MATCHES "^#")
continue()
@@ -258,7 +262,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
# We need to make specialized conversions for enums
if("${LINE}" MATCHES "^(\t*)enum ([^ ]*)")
if("${LINE}" MATCHES "^(\t*)enum *(class)? *([^ ]*)")
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
# Check if we want to publish this enum
@@ -276,7 +280,10 @@ 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()
@@ -285,6 +292,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
math(EXPR CLS_LEVEL "${CLS_LEVEL} - 1")
if(CLS_LEVEL)
unset(IN_ENUM)
unset(IN_SCOPED_ENUM)
continue()
endif()
@@ -361,168 +369,86 @@ foreach(LINE IN LISTS SOURCE_LINES)
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\tSQ${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\tSQ${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\tScriptError::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\tScriptError::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})
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 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()
list(GET STATIC_METHOD 2 SUSPENDABLE)
if(SUSPENDABLE)
set(SUSPENDABLE ", true")
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${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\tSQ${API_CLS}.DefSQStaticMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}\"${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})
endif()
endforeach()
foreach(METHOD IN LISTS METHODS)
string(REPLACE ":" ";" METHOD "${METHOD}")
list(GET METHOD 0 FUNCNAME)
list(GET METHOD 1 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()
list(GET METHOD 2 SUSPENDABLE)
if(SUSPENDABLE)
set(SUSPENDABLE ", true")
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${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\tSQ${API_CLS}.DefSQMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}\"${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")
string(APPEND SQUIRREL_EXPORT "\n\tSQ${API_CLS}.PostRegister(engine);")
string(APPEND SQUIRREL_EXPORT "\n}")
@@ -542,11 +468,16 @@ foreach(LINE IN LISTS SOURCE_LINES)
# Add enums
if(IN_ENUM)
string(REGEX MATCH "([^,\t ]+)" 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 {
@@ -672,10 +603,11 @@ foreach(LINE IN LISTS SOURCE_LINES)
set(CLS_TYPES "${TYPES}")
elseif("${FUNCNAME}" MATCHES "^_" AND NOT "${TYPES}" STREQUAL "v")
elseif(IS_STATIC)
list(APPEND STATIC_METHODS "${FUNCNAME}:${TYPES}")
list(APPEND STATIC_METHODS "${FUNCNAME}:${TYPES}:${SUSPENDABLE}")
else()
list(APPEND METHODS "${FUNCNAME}:${TYPES}")
list(APPEND METHODS "${FUNCNAME}:${TYPES}:${SUSPENDABLE}")
endif()
unset(SUSPENDABLE)
continue()
endif()
endforeach()
+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>
+3 -3
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>
+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).
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
eb8390a0569e66ec417c64ad254f9d05
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
+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 "Aqueduct graphics by Jonathan G. Rennison / PaulC"
// temperate aqueduct
+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 "Autorail graphics"
-1 * 3 05 13 37
+70
View File
@@ -0,0 +1,70 @@
// 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>.
//
-1 * 0 0C "Bridge decks"
-1 * 0 07 83 01 \7= 03 19
-1 * 3 05 1B 18
-1 sprites/bridge_decks.png 8bpp 96 16 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 16 16 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 176 16 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 256 16 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 336 16 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 416 16 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 96 71 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 16 71 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 176 71 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 256 71 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 336 71 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 416 71 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 96 126 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 16 126 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 176 126 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 256 126 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 336 126 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 416 126 64 39 -31 -8 normal
// X and Y axis are swapped for road surface.
-1 sprites/bridge_decks.png 8bpp 16 181 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 96 181 64 31 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 176 181 64 39 -31 -8 normal
-1 sprites/bridge_decks.png 8bpp 256 181 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 336 181 64 23 -31 0 normal
-1 sprites/bridge_decks.png 8bpp 416 181 64 39 -31 -8 normal
// Toyland bridge decks, skip if not toyland.
-1 * 0 07 83 01 \7! 03 19
-1 * 3 05 1B 18
-1 sprites/bridge_decks_toyland.png 8bpp 96 16 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 16 16 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 176 16 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 256 16 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 336 16 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 416 16 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 96 71 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 16 71 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 176 71 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 256 71 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 336 71 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 416 71 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 96 126 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 16 126 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 176 126 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 256 126 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 336 126 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 416 126 64 39 -31 -8 normal
// X and Y axis are swapped for road surface.
-1 sprites/bridge_decks_toyland.png 8bpp 16 181 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 96 181 64 31 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 176 181 64 39 -31 -8 normal
-1 sprites/bridge_decks_toyland.png 8bpp 256 181 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 336 181 64 23 -31 0 normal
-1 sprites/bridge_decks_toyland.png 8bpp 416 181 64 39 -31 -8 normal
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

+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 "Canal graphics by George"
-1 * 3 05 08 41
+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 "Font characters by PaulC, Bilbo and Jasper Vries"
+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 "Electrified rail by Michael Blunck"
-1 * 3 05 05 30
+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 "Foundations. Non-halftile ones by Marcin Grzegorczyk"
-1 * 6 07 83 01 \7! 00 5B

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