1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-15 18:49:10 +00:00

Compare commits

..

1898 Commits

Author SHA1 Message Date
a0b2f28f9c Codechange: Use std::copy/fill pattern to initialize rail and road specs. (#11285)
This avoids use of lengthof and array indices.
2023-09-10 23:01:08 +00:00
Patric Stout
7e3cdbaf62 Fix: mark next_station as INVALID_STATION when loading from older savegames 2023-09-11 00:25:47 +02:00
Patric Stout
9e3763cfb3 Fix b0e73277: save/load next_station for CargoPacket again 2023-09-11 00:25:47 +02:00
Patric Stout
1243c331b6 Fix: don't compare next_station when trying to merge CargoPackets
For vehicle packets they shouldn't be compared, and for station
packets they are already in a bucket per next_station.
2023-09-11 00:25:47 +02:00
Patric Stout
9f8c1ea552 Codechange: rename next_station to next_hop to avoid confusing with another next_station 2023-09-11 00:25:47 +02:00
Patric Stout
a0f6983be4 Codechange: remove parameter from VehicleCargoList::Reassign that is always INVALID_STATION 2023-09-11 00:25:47 +02:00
6643c010bd Fix: NewGRF house class mappings were not reset between games. (#11279) 2023-09-10 18:55:37 +01:00
Michael Lutz
1c620b349f Feature: [NewGRF] Related Act2 objects for airports and airport tiles.
Airports are similar two stations and industries, both of which have the town as related object.
Airport tiles are similar to industry tiles, which have the industry as related object.
This seems a sensible structure, so let's make it Airport Tile -> Airport -> Town.
2023-09-10 19:38:18 +02:00
Michael Lutz
a6f2f3c042 Add: [NewGRF] Inspection window for airports.
As as the station window combines all station types, accessing the
debug view is via the parent of the airport tile only.
2023-09-10 19:38:18 +02:00
Patric Stout
e6c02ebee6 Fix b0e73277: cargodist information got lost when splitting of cargo (#11280)
During b0e73277 we removed loaded_at_xy, but I kinda forgot that
it was a union with next_station. Now next_station wasn't copied
anymore, or checked in AreMergable.
2023-09-10 15:20:58 +02:00
Tyler Trahan
701a61c9af Codechange: Delete date_type.h 2023-09-10 08:40:25 -04:00
Tyler Trahan
77173a6a10 Codechange: Move date consts and functions to CalendarTime and TimerGameCalendar classes 2023-09-10 08:40:25 -04:00
Tyler Trahan
fca2b37726 Codechange: Move Ticks into their own class 2023-09-10 08:40:25 -04:00
Patric Stout
30172fc037 Codechange: cleanup CargoPacket in terms of variable/function names (#11278)
Over the years, things got reused and changed, making the current
names somewhat unclear in what they actually mean and do.
2023-09-09 23:21:21 +02:00
Patric Stout
b0e73277d6 Codechange: remove loaded_at_xy from CargoPacket as it was unused (#11276) 2023-09-09 20:24:46 +01:00
f3b4f9d640 Codechange: Reduce size of TextEffectMode and TextEffectID.
TextEffectID was promoted to size_t in #9235, when it was used in loops.
However since then the relevant code uses range-for or iterators instead.
2023-09-09 19:26:47 +01:00
f6939d6c4d Codechange: Make INVALID_TE_ID a TextEffectID instead of a TextEffectMode.
Type-correctness?
2023-09-09 19:26:47 +01:00
3c61c642a9 Codechange: Don't allocate a text effect with INVALID_TE_ID.
Previously, despite INVALID_TE_ID existing, it was not checked during allocation and there was no limit to the number of text effects.
2023-09-09 19:26:47 +01:00
78b841d14e Codechange: Take reference to text effect instead of pointer when updating. 2023-09-09 19:26:47 +01:00
7519f7ad79 Codechange: Use std::find_if to find or assign a text effect slot.
This replaces an index-based loop.
2023-09-09 19:26:47 +01:00
7bd019df90 Codechange: Use std::array for TemporaryStorageArray.
This removes the need for initialisation with memset().
2023-09-09 15:26:03 +01:00
9040d7813d Codechange: Use std::array and std::unique_ptr for PersistentStorageArrays.
This (mostly) avoids the need for manual memory management and copying.
2023-09-09 15:26:03 +01:00
Patric Stout
c3918838f6 Fix: crash when opening a damaged base-graphics (#11275) 2023-09-09 14:06:00 +00:00
afc1ea8135 Codechange: Using alias and std::array for company expense storage. (#11273)
This simplifies passing yearly expenses to functions and use of std algorithms.
2023-09-09 13:15:53 +00:00
Patric Stout
00f13282a9 Codechange: keep how we convert string <-> JSON private (#11269) 2023-09-08 19:03:10 +02:00
Patric Stout
d725fa14a2 Fix: asserts unintentially being partially disabled in release-builds (#11268)
The nlohmann-json header file includes assert.h, which rudely resets
the assert macro to what that header thinks is right. As we set the
assert macro to be active with release builds when WITH_ASSERT is
active, this means that every file including nlohmann-json has their
asserts disabled (for release-builds) but files that don't do no.

Let's avoid this issue, by telling nlohmann to not include assert.h.
2023-09-08 10:11:37 +00:00
Rubidium
8c742b456f Codechange: use Textbuf directly, instead via several virtual functions in Window 2023-09-06 23:07:04 +02:00
Jonathan G Rennison
0316940fe8 Fix: Inaccurate waiting cargo total in station window when using cargodist (#11213)
For stations with many flows and/or small cargo packets,
due to accumulated inaccuracies in DivideApprox.

The displayed total should match GoodsEntry::TotalCount().
2023-09-06 21:36:26 +02:00
Loïc Guilloux
21bd5fb991 Fix: [CI] preview flow can't install latest version of npm (#11265) 2023-09-06 16:29:34 +00:00
Patric Stout
5f9b8aaa95 Codechange: [Script] use nlohmann for Squirrel <-> JSON conversion (#11251) 2023-09-06 13:14:12 +02:00
translators
6e8d7964ed Update: Translations from eints
english (us): 4 changes by 2TallTyler
2023-09-05 18:38:17 +00:00
translators
9d2920e9c5 Update: Translations from eints
french: 2 changes by ottdfevr
2023-09-04 18:38:09 +00:00
Patric Stout
337b7b0c63 Fix 8c9ecde9: actually remove autosave_interval from setting window (#11260) 2023-09-04 11:18:47 +00:00
152b0cac34 Codechange: Return update nwid_begin instead of count.
This avoids needing to keep track of how many widget parts have been consumed, instead we only to ensure nwid_begin < nwid_end.
2023-09-04 10:20:45 +01:00
e8015e497d Codechange: Use begin/end of nwidget parts of begin/length.
This simplifies processing nwidget parts as, unlike the remaining length, the pointer to the end of the list never changes. This is the same principle as we use(d) for tracking end instead of length for C-style strings.

And this removes 160~ instances of the lengthof() macro.
2023-09-04 10:20:45 +01:00
e4613fc04c Codechange: Allow using more than 65536 NewGRF string IDs.
NewGRF string allocation allowed up to 524288 strings, however stringid was passed as uint16_t which limits to 2^16.
2023-09-04 09:49:09 +01:00
3e762af2d1 Change: Replace fixed length _grf_text array with vector.
Additionally reshuffle GRFTextEntry for better alignment.

This removes a mostly-unused static 20MB allocation.
2023-09-04 09:49:09 +01:00
translators
dadf5182d8 Update: Translations from eints
english (au): 2 changes by krysclarke
russian: 3 changes by Ln-Wolf
finnish: 2 changes by hpiirai
portuguese (brazilian): 2 changes by pasantoro
2023-09-03 18:38:15 +00:00
bd150df914 Codechange: Reorder some high-use structs to reduce their size. (#11201)
This reduces GoodsEntry from 144 to 136 bytes (thereby reducing Station from 9704 bytes to 9192 bytes), and CargoPacket from 40 bytes to 32 bytes.
2023-09-02 20:56:36 +00:00
translators
5c2e4ee6fe Update: Translations from eints 2023-09-02 18:38:13 +00:00
glx22
b0f8890ba5 Codechange: [CMake] detect source files with duplicate names 2023-09-02 20:32:44 +02:00
glx22
c77184aa35 Codechange: [CMake] reduce code duplication 2023-09-02 20:32:44 +02:00
Bouke Haarsma
7e54418022 Codechange: workaround CMake/Xcode duplicate file name issue (#11186)
Having a library with files with the same name isn't supported in CMake's Xcode project file generation: https://gitlab.kitware.com/cmake/cmake/-/issues/20501. One of the files is renamed to work around this bug.
2023-09-02 19:46:52 +02:00
Michael Lutz
0089323542 Add: [Script] Custom news message text for industry SetProductionLevel. 2023-09-02 16:20:59 +02:00
Michael Lutz
1c56991213 Add: [Script] Game script control of industry production level. 2023-09-02 16:20:59 +02:00
mrmbernardi
a5c8365aa4 Feature: Setting to disallow level crossings with competitors (#10755) 2023-09-02 12:46:24 +02:00
frosch
236ec41fa2 Fix #11230: Group list widget layout failed, if dropdown widgets were higher than the font height. (#11231) 2023-09-02 12:45:19 +02:00
translators
6ab169fbe0 Update: Translations from eints
dutch: 1 change by Afoklala
2023-09-01 18:38:57 +00:00
Patric Stout
7afd686541 Codechange: add tests for GS <-> AdminPort JSON conversion (#11252)
While at it, fix a bug where booleans were made integers.
2023-08-31 19:38:15 +00:00
Patric Stout
993e7be707 Fix: [Script] GSAdmin.Send() could generate invalid JSON (#11250) 2023-08-31 16:52:52 +00:00
glx22
4eddec9e79 Add: [Emscripten] Support for bootstrapping 2023-08-31 12:59:12 +02:00
glx22
3d1c4a8589 Codechange: [Emscripten] Improve syncfs synchronisation on exit/abort 2023-08-31 12:59:12 +02:00
Patric Stout
75d3dc0a19 Codechange: [Emscripten] remove "relative_mode" parameter from -vsdl as it doesn't exist (#11249) 2023-08-31 12:04:22 +02:00
Patric Stout
502414b567 Fix: [Emscripten] config not saved on exit game (#11248)
When changing a Game Option and pressing Exit Game, the changes
were not actually stored. This because the post-mainloop code
was never executed for Emscripten.
2023-08-31 10:10:11 +01:00
Patric Stout
2f96ccc18a Add: [CI] Create and store breakpad symbols for releases (#11247)
Additionally, also store PDB and exe files on the Symbol Server
for easier debugging with MSVC.
2023-08-30 18:27:15 +00:00
Patric Stout
ecb4bb5161 Change: for surveys capture more information about the OpenTTD version (#11244) 2023-08-30 12:14:32 +02:00
translators
5e75afb628 Update: Translations from eints
catalan: 2 changes by J0anJosep
2023-08-28 18:38:07 +00:00
Patric Stout
a3d631ffed Change: make nlohmann a mandatory library to build OpenTTD (#11235) 2023-08-28 19:04:36 +02:00
Patric Stout
13b76b0243 Fix: [CI] don't install breakpad on arm64-windows-static, as it is not supported (yet) (#11242) 2023-08-28 16:49:14 +02:00
Patric Stout
110dd0e6c1 Fix: [CI] Allow release-flow to run in forks (while skipping survey-key) (#11241) 2023-08-28 16:24:07 +02:00
Patric Stout
abc060525d Add: calendar date for Survey results
This means no heuristics is possible on around which date people
play the game.
2023-08-28 13:02:52 +02:00
Patric Stout
b0d7cfaa3d Change: [Win32] don't allocate 192KiB of memory on the stack on crash (#11240)
Heap is out of the question, as it might be corrupted.
Allocating this much on stack is silly.

So instead, allocate virtual pages to write the information in.
2023-08-28 12:14:11 +02:00
Patric Stout
de5e338a76 Change: mention in MacOS / Windows crashlog popup when files couldn't be generated (#11239)
For example, if the crash.sav couldn't be created, and the TryExcept
detected an issue, write out that the file is not available in
the popup.
2023-08-27 22:49:12 +00:00
Joan Josep
be9a690f41 Fix #9642: Keep infrastructure totals when overbuilding road depots. (#11229) 2023-08-28 00:20:37 +02:00
Patric Stout
d4312c59a4 Codechange: [MacOS] use backtrace() instead of our custom variant (#11233)
As mentioned in the comment, we only did it ourselves as we once
were compatible with versions before 10.5. But that time has long
gone. So let's update the code to a bit more modern approach.
2023-08-27 22:32:11 +02:00
Joan Josep
5e6b5d981f Codechange: Use existing functions in GetMonthlyInfrastructureCosts. (#11237) 2023-08-27 22:12:44 +02:00
Patric Stout
b00e483b0f Change: recover when possible from crashes during a crash (#11238) 2023-08-27 21:54:05 +02:00
translators
99e4a14cdf Update: Translations from eints
english (au): 1 change by krysclarke
finnish: 3 changes by hpiirai
danish: 1 change by bscargo
french: 1 change by glx22
portuguese (brazilian): 1 change by pasantoro
2023-08-27 18:39:02 +00:00
Patric Stout
29a37c2e0b Change: [Win32] unify the crashlog handler with the other OSes (#11236)
While at it, make the crash text a bit more readable, and sync
this with MacOS.
2023-08-27 17:58:31 +00:00
translators
f2841e62d9 Update: Translations from eints
russian: 1 change by Ln-Wolf
turkish: 1 change by densxd
portuguese: 1 change by azulcosta
polish: 3 changes by pAter-exe
2023-08-26 18:38:15 +00:00
translators
6726918ab0 Update: Translations from eints
catalan: 30 changes by J0anJosep
2023-08-25 18:38:04 +00:00
Richard Wheeler
96fdfb941a Feature: Transparency option for cost and income indicators (#11001) 2023-08-25 16:04:40 +02:00
Joan Josep
a938067d6b Codechange: Invalid depot value is unrelated to invalid station value. (#11227) 2023-08-25 14:29:51 +02:00
Joan Josep
ead5284476 Doc: Improve the example given for fall throughs. (#11228) 2023-08-25 10:56:11 +00:00
translators
9aef380c99 Update: Translations from eints
italian: 43 changes by Rivarossi
french: 1 change by ottdfevr
2023-08-24 18:38:24 +00:00
translators
4d4a046d23 Update: Translations from eints
polish: 2 changes by pAter-exe
2023-08-22 18:39:08 +00:00
Jonathan G Rennison
2cbd76593a Fix #11215: Assert in NewGRF parameters window (manual parameter mode) (#11217) 2023-08-21 12:42:33 +02:00
Rubidium
6635f809dd Fix #11181: attempting to read string as int triggers assertion 2023-08-20 23:57:42 +02:00
Jonathan G Rennison
8df4aa7979 Fix: Road stops should not draw a ground sprite of 0 (#11214) 2023-08-20 15:46:19 -04:00
Patric Stout
45cc3acaf5 Codechange: [Win32] unify AppendDecodedStacktrace and LogStacktrace (#11220)
AppendDecodedStacktrace was already doing the same as LogStacktrace,
just with a different name.
2023-08-20 18:57:01 +00:00
translators
bc2dfc4691 Update: Translations from eints
turkish: 2 changes by BeratSJ
2023-08-20 18:39:09 +00:00
Patric Stout
352ac264a5 Remove: [Win32] module-list from crash.log (#11219)
Only Windows implemented this, and it opens the files to read them
to get a CRC. Doing this in a crash-handler is strange at best.

Lastly, nobody has actually ever used this information to come to
some sort of conclusion. The module-list is used in combination
with the crash.dmp, but this information is already embedded in
there.
2023-08-20 17:09:21 +00:00
Patric Stout
f120d2beb8 Add: use breakpad to create crash.dmp on MacOS / Linux too (#11202)
Normally only the Windows platform could create a crash.dmp, making
analysing crash-reports from MacOS / Linux rather tricky.
2023-08-20 17:16:08 +02:00
Patric Stout
8f6df242c4 Remove: [Win32] (pointer-only) stack trace in crash.log (#11211)
It only contains pointers, which nobody can decipher anyway.
So instead, just report "Not supported", like other targets do
when they can't print a sane stack trace.
2023-08-20 17:08:16 +02:00
Patric Stout
a5aebeb1b5 Remove: [Win32] register values in crash.log (#11212) 2023-08-20 16:59:22 +02:00
Loïc Guilloux
8c9ecde964 Change: Remove autosave from settings window (#11218)
It is broken since 4f4810d and it's also in game options.
2023-08-20 14:33:02 +00:00
translators
93f4f1e83a Update: Translations from eints
german: 40 changes by Wuzzy2
2023-08-19 18:38:46 +00:00
Patric Stout
cd10ddf9ae Remove: last remnants of SunOS (#11210)
We have no evidence SunOS has been tried in the last few years,
and the code is awkward enough to just remove.
2023-08-19 00:52:58 +02:00
Patric Stout
53af20910b Fix: [MSVC] generate static libraries / executables correctly with vcpkg -static target (#11208) 2023-08-19 00:43:32 +02:00
translators
7f5c0aab60 Update: Translations from eints
dutch: 2 changes by Afoklala
2023-08-18 18:38:21 +00:00
Patric Stout
5ac333c2cc Fix: [MacOS] screen looks blue-ish when using newer SDKs (#11207)
The define kCGBitmapByteOrder32Host changed (around SDK 12?)
into an enum, which means an old #ifndef was triggering,
overwriting the value to 0. Sadly, 0 means Order16Big, causing
RGBA to become GRAB, which results in strange colours.

As we no longer support PPC, drop that piece of code completely.
2023-08-18 13:22:00 +02:00
Loïc Guilloux
2bf3c02fbf Fix: no fast forward in network was ensured only from GUI side (#11206) 2023-08-17 21:14:39 +02:00
translators
e8c49d3543 Update: Translations from eints
swedish: 1 change by joeax910
2023-08-17 18:38:20 +00:00
Jonathan G Rennison
9061fef59c Fix #11203: [ICU] Glyph to char mapping with multiple runs (#11204) 2023-08-16 19:17:02 +00:00
translators
db1a9f00c0 Update: Translations from eints
dutch: 1 change by Bouke
2023-08-16 18:38:51 +00:00
romw314
662f76bfc4 Docs: mention Windows 11 in directory_structure.md (#11200) 2023-08-15 22:21:13 +02:00
Patric Stout
07730584d7 Codechange: make explicit when a TileIndex is cast to its basetype (#11190)
This prevents people accidentially assigning a TileIndex to a Date
or any other type they shouldn't.
2023-08-15 18:12:05 +02:00
arikover
5d3f7939e2 Fix d42a78f: Show correct road speed in construction dropdowns (#11196) 2023-08-15 10:34:36 +02:00
Loïc Guilloux
7ef55bdfb0 Cleanup: [CMake] don't add strgen.h twice (#11199) 2023-08-14 21:29:03 +00:00
translators
e652cd6434 Update: Translations from eints
swedish: 1 change by Brickblock1
english (us): 2 changes by 2TallTyler
2023-08-14 18:38:20 +00:00
Tyler Trahan
61dfd74e44 Codechange: Use correct type for max timetable start years constant (#11197) 2023-08-13 21:03:45 +02:00
translators
0726835735 Update: Translations from eints
english (au): 2 changes by krysclarke
french: 1 change by Lishouuu
portuguese (brazilian): 2 changes by pasantoro
2023-08-13 18:38:43 +00:00
Patric Stout
9dc2fbe4fa Fix 0238a2b5: crash when news message is displayed (#11195) 2023-08-13 10:16:36 +00:00
Rubidium
40195e689d Change: improve wording of help (host instead of IP) and update man page 2023-08-12 22:01:22 +02:00
Rubidium
a8e4d35bde Fix: crash when not passing parameter for -n 2023-08-12 22:01:22 +02:00
translators
56e0d0c7ef Update: Translations from eints
korean: 3 changes by telk5093
russian: 2 changes by Ln-Wolf
portuguese: 3 changes by azulcosta
2023-08-12 18:38:26 +00:00
Patric Stout
9624017fc2 Codechange: be more type-specific about types in NPFs queue (#11192) 2023-08-12 18:18:22 +00:00
Patric Stout
299570b2c1 Codechange: make TimerGameCalendar Date and Year types strongly typed (#10761) 2023-08-12 18:14:21 +00:00
Patric Stout
0238a2b567 Codechange: use std::variant instead of using bitflags in the value (#11191) 2023-08-12 16:05:00 +00:00
Patric Stout
a9ed590ca7 Codechange: use TimerGameCalendar::Date for variables in linkgraph that are dates (#11187) 2023-08-12 16:02:38 +02:00
Patric Stout
b7acf9e50e Codechange: use TimerGameCalendar::Year and friends when working with years (#11188) 2023-08-12 16:02:31 +02:00
Patric Stout
01f55eb734 Codechange: introduce week/quarter triggers for TimerGameCalendar (#11189)
This simplifies code that triggers on these periods.
2023-08-12 16:02:11 +02:00
Loïc Guilloux
02be6ab6ba Fix #11179, a979d9c: Don't start more competitors than allowed (#11185) 2023-08-11 22:30:01 +02:00
Tyler Trahan
8ea01c0bfb Fix #11180: Use TileVirtXY for aircraft crash tile (#11184) 2023-08-11 14:05:16 +00:00
Tyler Trahan
c7b51a8c3a Codechange: Use proper date types in various places (#11177) 2023-08-11 13:32:42 +00:00
Patric Stout
c9c9cfa4fd Codechange: simplify the type of loaded_at_xy / next_station (#11182)
It was TileOrStationID, most likely to make sure both types in
the union are identical. But as TileIndex is a StrongTypeDef
that becomes a bit weird. So instead, still make sure they are
of equal size, but define their individual types better.
2023-08-11 12:55:55 +00:00
Patric Stout
5fba47b0f7 Codechange: make no assumptions on how the internals of TileIndex work (#11183)
Basically, avoid ".value", and just cast it to its original type
if you want to retrieve this.
2023-08-11 14:53:51 +02:00
Tyler Trahan
6190f48df0 Codechange: Add a DateToYear function instead of dividing each time (#11173) 2023-08-11 08:19:54 -04:00
Tyler Trahan
4928ccf916 Fix #10478: Clarify airport noise control setting texts (#11169) 2023-08-11 08:19:26 -04:00
Tyler Trahan
e4fd99a33a Codechange: Use DateAtStartOfYear() instead of multiplying by DAYS_IN_LEAP_YEAR (#11174) 2023-08-11 08:18:59 -04:00
Tyler Trahan
93069066f9 Codechange: Use auto type when sorting dates (#11175) 2023-08-11 08:18:32 -04:00
Tyler Trahan
6f057cbe6a Codechange: Use proper date type in ClickChangeDateCheat (#11176) 2023-08-11 07:52:59 -04:00
Loïc Guilloux
ba95764f1c Fix 57717a2: VS2022 optimisation bug is fixed with MSVC 19.37 (#11172) 2023-08-09 21:43:34 +02:00
translators
c2fc2d2ed5 Update: Translations from eints
romanian: 48 changes by bnegrut
2023-08-09 18:40:24 +00:00
translators
4daa00c22a Update: Translations from eints
slovak: 53 changes by legitalk
2023-08-07 18:38:52 +00:00
translators
2bc97fae66 Update: Translations from eints
swedish: 45 changes by joeax910
portuguese: 106 changes by azulcosta
2023-08-06 18:38:21 +00:00
Tyler Trahan
9a602ff304 Fix #10334: Store separate newgrf-safe version of date_of_last_service. (#11124)
This value is not changed when the date cheat is used, which caused issues with changing properties based on service date.

Co-authored-by: Peter Nelson <peter1138@openttd.org>
2023-08-06 12:57:10 -04:00
translators
77c00dfe98 Update: Translations from eints
slovak: 9 changes by legitalk
dutch: 3 changes by Afoklala
2023-08-04 18:38:28 +00:00
translators
9d376dc8e0 Update: Translations from eints
finnish: 1 change by hpiirai
portuguese (brazilian): 1 change by pasantoro
2023-08-03 18:38:02 +00:00
translators
11ba39b435 Update: Translations from eints
korean: 21 changes by telk5093
polish: 1 change by pAter-exe
2023-08-02 18:38:24 +00:00
Jonathan G Rennison
6a048bc168 Fix #11164: Duplicate town names when using the many random towns function 2023-08-02 20:07:59 +02:00
translators
4213a2c909 Update: Translations from eints
russian: 1 change by Ln-Wolf
turkish: 33 changes by densxd
danish: 1 change by bscargo
french: 1 change by Lishouuu
polish: 21 changes by pAter-exe
2023-08-01 18:38:22 +00:00
4acb68e539 Fix #11162: Get colour map of correct train part. (#11163) 2023-08-01 15:05:42 +01:00
translators
43559524eb Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
portuguese: 1 change by azulcosta
2023-07-31 18:39:05 +00:00
Tyler Trahan
9876c861e4 Remove: Unused ship pathfinder invalidation setting callback 2023-07-30 18:21:13 -04:00
Tyler Trahan
4decd2aa48 Change: Enable "Forbid 90 degree turns" setting by default 2023-07-30 18:21:13 -04:00
translators
5a2e9be9d3 Update: Translations from eints
vietnamese: 10 changes by KhoiCanDev
french: 15 changes by Lishouuu, 9 changes by ottdfevr
2023-07-30 18:38:12 +00:00
Tyler Trahan
f57296a033 Change: Only show platform stopping location in orders when other than default (#11102) 2023-07-29 17:59:02 -04:00
translators
536d2cb75b Update: Translations from eints
english (au): 4 changes by krysclarke
english (us): 4 changes by 2TallTyler
vietnamese: 2 changes by KhoiCanDev
russian: 21 changes by Ln-Wolf
finnish: 37 changes by hpiirai
portuguese: 24 changes by azulcosta
portuguese (brazilian): 6 changes by pasantoro
2023-07-29 18:38:24 +00:00
Loïc Guilloux
a979d9cdda Fix #11067, ed83c4b: Don't start competitors during map generation (#11069) 2023-07-29 12:31:33 +02:00
translators
760a194d31 Update: Translations from eints
english (us): 19 changes by 2TallTyler
dutch: 20 changes by Afoklala
2023-07-28 18:38:29 +00:00
Tyler Trahan
6e99326ad2 Fix: Missing hyphenation in various ownership strings (#11155) 2023-07-27 16:40:47 -04:00
translators
41faae8c59 Update: Translations from eints
english (au): 19 changes by krysclarke
vietnamese: 12 changes by KhoiCanDev
danish: 19 changes by bscargo
portuguese: 20 changes by azulcosta
portuguese (brazilian): 19 changes by pasantoro
2023-07-27 18:45:51 +00:00
translators
abc3a96e9d Update: Translations from eints
czech: 6 changes by JakMel
danish: 6 changes by bscargo
2023-07-26 18:38:42 +00:00
Henry Wilson
a9c65a69d0 Feature: Add config option to set default company secondary colour for new games
This does duplicate translation strings for the colours
2023-07-26 16:22:30 +02:00
translators
5653a94490 Update: Translations from eints
czech: 16 changes by JakMel
2023-07-25 18:38:34 +00:00
translators
974e6e220c Update: Translations from eints
korean: 3 changes by telk5093
french: 3 changes by ottdfevr
2023-07-24 18:40:15 +00:00
translators
74fac454d0 Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
2023-07-23 18:38:30 +00:00
translators
d9d0a2c842 Update: Translations from eints
english (au): 3 changes by krysclarke
portuguese (brazilian): 22 changes by pasantoro
2023-07-22 18:38:34 +00:00
fd155dfb40 Change: Scale bridge GUI by interface scale. (#11152) 2023-07-22 17:10:18 +01:00
translators
96e937c6cd Update: Translations from eints
norwegian (bokmal): 1 change by buzzCraft
chinese (traditional): 1 change by wpi3
spanish (mexican): 1 change by absay
english (us): 3 changes by 2TallTyler
vietnamese: 13 changes by KhoiCanDev
russian: 3 changes by Ln-Wolf
dutch: 23 changes by Afoklala
lithuanian: 1 change by devbotas
portuguese: 6 changes by azulcosta
polish: 3 changes by pAter-exe
2023-07-21 18:38:52 +00:00
44a86e796f Fix #11061: Missed currency-code suffix removal for some translations. (#11149) 2023-07-21 06:31:04 +01:00
translators
5d27d00821 Update: Translations from eints 2023-07-20 18:39:13 +00:00
Andy
ce9305a5ee Add: [Script] GSIndustry.GetConstructionDate() method (#11145) 2023-07-20 20:35:37 +02:00
MasonGulu
0be27778af Add: alternative setting for right-click close window option to exclude pinned windows (#10204) 2023-07-19 23:24:22 +02:00
translators
092a3db745 Update: Translations from eints
finnish: 3 changes by hpiirai
polish: 15 changes by pAter-exe
2023-07-19 18:38:55 +00:00
Jonathan G Rennison
f31a25cd59 Change: Do not allow mixing road/tram types in powered road type list (#11148)
Road/tram property 0F
2023-07-19 19:51:21 +02:00
Rubidium
461b4b8861 Cleanup: remove typedefs for non _t (u)int types and WChar 2023-07-19 19:30:14 +02:00
Rubidium
eaae0bb5e7 Codechange: automatic adding of _t to (u)int types, and WChar to char32_t
for i in `find src -type f|grep -v 3rdparty/fmt|grep -v 3rdparty/catch2|grep -v 3rdparty/opengl|grep -v stdafx.h`; do sed 's/uint16& /uint16 \&/g;s/int8\([ >*),;[]\)/int8_t\1/g;s/int16\([ >*),;[]\)/int16_t\1/g;s/int32\([ >*),;[]\)/int32_t\1/g;s/int64\([ >*),;[]\)/int64_t\1/g;s/ uint32(/ uint32_t(/g;s/_uint8_t/_uint8/;s/Uint8_t/Uint8/;s/ft_int64_t/ft_int64/g;s/uint64$/uint64_t/;s/WChar/char32_t/g;s/char32_t char32_t/char32_t WChar/' -i $i; done
2023-07-19 19:30:14 +02:00
Patric Stout
4f4810dc28 Fix: store autosave settings under the new names 2023-07-19 13:17:50 +02:00
Patric Stout
790c1b1b02 Codechange: refactor setting conversions and make sure it only happens once
By forcing it only happens once, the first time you upgrade to
a newer client, means you are free to jump between older and newer
versions after that. As they will not resync, the newer setting
can take on any of the (newer) values, without breaking the old
client. And when going to an old client and back, it doesn't
change it back to the converted value anymore.
2023-07-19 13:17:50 +02:00
Patric Stout
ece50d5a1d Codechange: use BoolSettingDesc to parse settings in conversion code 2023-07-19 13:17:50 +02:00
Andy
06b2d9b1cc Doc: 'game_changelog.hpp' not 'gs_changelog.hpp' in GitHub PR template (#11147) 2023-07-19 11:43:24 +02:00
translators
335c7ddac7 Update: Translations from eints
swedish: 22 changes by Brickblock1
2023-07-18 18:40:57 +00:00
translators
61b0143c87 Update: Translations from eints
english (us): 21 changes by 2TallTyler
korean: 3 changes by telk5093
catalan: 27 changes by J0anJosep
turkish: 12 changes by densxd
french: 13 changes by Lishouuu
2023-07-17 18:40:04 +00:00
translators
9c262b0d92 Update: Translations from eints
english (au): 3 changes by krysclarke
russian: 3 changes by Ln-Wolf
portuguese: 3 changes by azulcosta
2023-07-16 18:39:47 +00:00
Jonathan G Rennison
864d2352c2 Fix: Integer overflow in LinkGraphOverlay::ShowTooltip for long links
In particular when fully zoomed in
This could result in tooltips not being shown at all, or being shown
when not appropriate
2023-07-16 10:10:04 +02:00
translators
756c469b8f Update: Translations from eints
english (au): 20 changes by krysclarke
swedish: 2 changes by SkogisREAL
japanese: 2 changes by fmang
welsh: 1 change by Ansbaradigeidfran
english (us): 2 changes by 2TallTyler
galician: 2 changes by pvillaverde
vietnamese: 2 changes by KhoiCanDev
korean: 8 changes by telk5093
hungarian: 1 change by PstasDev
indonesian: 1 change by ecolortest
italian: 2 changes by Rivarossi
german: 2 changes by Wuzzy2
russian: 9 changes by Ln-Wolf
finnish: 2 changes by hpiirai
catalan: 2 changes by J0anJosep
turkish: 2 changes by densxd
danish: 2 changes by bscargo
dutch: 2 changes by Afoklala
french: 2 changes by ZarTek-Creole
portuguese: 28 changes by azulcosta
esperanto: 2 changes by legoscia
portuguese (brazilian): 2 changes by ericandradex
polish: 2 changes by pAter-exe
2023-07-15 18:39:54 +00:00
Rubidium
bfbdaf8723 Update: force remove outdated strings as they can still trigger #11137 for other languages 2023-07-15 06:33:12 +02:00
Rubidium
a184e7f793 Fix #11137: assertion failure due to interpreting string as number 2023-07-15 06:33:12 +02:00
Tyler Trahan
e4be7f4a45 Change: Clean up window title and button capitalization and wording (#11134)
* Change: Use consistent window title format for industry/cargo chains

* Change: Don't capitalize dropdown entry for cargo flow legend

* Change: Use consistent window titles for AI and GS settings

* Change: Use consistent window title for company value graph

* Change: Use consistent window title for industry funding

* Change: Use consistent button title to display industry chain

* Change: Use consistent button capitalization for local authority button on town window

* Fix: Don't capitalize random words in vehicle list management dropdown

* Fix: Use title case for Frame Rate window caption

* Fix: Use title case for Detailed Performance Rating window caption
2023-07-14 10:25:01 -04:00
glx22
46b504a700 Fix: ini_key issues reported by the script 2023-07-14 14:32:46 +02:00
glx22
9cdf86a411 Add: workflow and script for checking ini_key issues in WindowDesc entries 2023-07-14 14:32:46 +02:00
Björn Wärmedal
7de37e07b6 Change: make Exclusive Transport Rights more exclusive (#11076)
Now, exclusive transport rights can only be bought if no company
currently owns them. A successful bribe will void any exclusive
transport rights that any *other* company currently has in the town.
2023-07-14 14:00:28 +02:00
merni-ns
fc9afb2d32 Fix #11115: Focus the abandon game/exit game windows (#11125) 2023-07-14 13:57:45 +02:00
c3d1264a4b Change: Don't save industry history if cargo slot isn't used. (#11133)
This avoids saving history of 16 slots per industry when in many cases (NewGRF dependent) only a couple are used.
2023-07-14 11:12:22 +01:00
Jonathan G Rennison
3ac663e619 Fix: Build road/tram stop windows did not set WindowDesc::ini_key (#11126)
Saved default window sizes were not persisted in the configuration file
2023-07-12 22:07:31 +02:00
translators
7996752fb1 Update: Translations from eints
indonesian: 71 changes by ecolortest
2023-07-12 18:43:54 +00:00
rubidium42
9f6fec01cd Codechange: rename cargo aging days to periods, as they are not really days (#11112) 2023-07-12 13:20:02 -04:00
Patric Stout
ab19882e94 Codechange: hint in all branches of ClampTo to resolve compile-time (#11130) 2023-07-12 13:54:44 +00:00
Patric Stout
97138acc8a Codechange: make date-related variables constexpr (#11129)
This hints the compiler even more to result math-related questions
compile-time.
2023-07-12 13:15:24 +00:00
Patric Stout
7ef6e99083 Fix: [CI] actually use the GitHub Apps token to trigger "Publish Docs" (#11128) 2023-07-11 13:14:50 +00:00
translators
d3181375a4 Update: Translations from eints
danish: 2 changes by bscargo
french: 2 changes by Lishouuu
2023-07-09 18:39:28 +00:00
translators
a54c28f2c3 Update: Translations from eints
polish: 3 changes by pAter-exe
2023-07-08 18:39:43 +00:00
Loïc Guilloux
119ac66c5c Fix: [Bootstrap] don't crash when failing to connect to content server (#11122) 2023-07-08 14:54:39 +00:00
Patric Stout
dadcade81c Fix: [CI] preview for one PR could cancel the preview of another (#11121) 2023-07-08 12:10:15 +00:00
Patric Stout
323dd619bb Change: [CI] rework preview flow and use Cloudflare Pages to publish (#11116) 2023-07-08 12:30:27 +02:00
Patric Stout
153323a4c0 Fix: [Emscripten] actually link against nlohmann_json (#11120)
We fake a plain (non-scoped) library, but we don't actually set
the library to anything valid. In result, it is never actually
linked.
2023-07-07 21:21:43 +00:00
Loïc Guilloux
c236ff356d Codechange: [Emscripten] enable WASM_BIGINT (#11118) 2023-07-07 20:32:33 +00:00
translators
bd91d249ea Update: Translations from eints
dutch: 3 changes by Afoklala
2023-07-07 18:41:15 +00:00
translators
b2ccc19f2d Update: Translations from eints
vietnamese: 2 changes by KhoiCanDev
2023-07-06 18:40:33 +00:00
Rubidium
18a31cca7c Codechange: do not make a string valid in place, to then copy it 2023-07-06 19:59:50 +02:00
Rubidium
b958a343fe Codechange: the templated StrMakeValidInPlace is not in place 2023-07-06 19:59:41 +02:00
Rubidium
968de827d6 Fix #11108, e2f583a: missing argument for SCC_CARGO_SHORT formatting 2023-07-06 19:46:54 +02:00
Loïc Guilloux
5f2246eabf Fix 021c45c: [CMake] detection and use of nlohmann-json for emscripten (#11113) 2023-07-06 11:49:06 +02:00
translators
9f28da4e33 Update: Translations from eints
tamil: 3 changes by merni-ns
2023-07-05 18:42:59 +00:00
Patric Stout
83b6512032 Fix d5a72193: [CI] downloading single artifact doesn't add folder to it (#11107) 2023-07-04 20:53:46 +00:00
translators
48f25427bc Update: Translations from eints
english (us): 15 changes by 2TallTyler
korean: 2 changes by telk5093
german: 41 changes by Wuzzy2
portuguese (brazilian): 2 changes by pasantoro
2023-07-04 18:43:15 +00:00
Patric Stout
bc83974b38 Fix: [Emscripten] switch to URL for content-service that supports WebSocket (#11106)
In the old days, content.openttd.org and bananas-server.openttd.org
ended up on the same route. But with a recent migration, they do not.
content.openttd.org only serves the custom TCP protocol, and
bananas-server.openttd.org only serves the HTTP(S).

Websockets use HTTPS, and as such, should be routed via the latter.
2023-07-04 12:39:55 +00:00
Koen Bussemaker
381fa36450 Change: Autorail / autoroad tools can start dragging from invalid tiles 2023-07-04 14:08:32 +02:00
merni-ns
a8a4737c5b Fix #11096: Increase priority of error and confirmation windows (#11104) 2023-07-03 23:24:44 +02:00
merni-ns
96da5581ce Doc: Link to coding style in the repository itself and add Discord link in addition to IRC 2023-07-03 23:17:04 +02:00
merni-ns
f1a6f91235 Doc: Remove redundant <pre> 2023-07-03 23:17:04 +02:00
translators
bcaa60612e Update: Translations from eints
portuguese: 3 changes by azulcosta
2023-07-03 18:40:35 +00:00
Rubidium
af9b9327af Codechange: do not keep local variable for temporary string parameters 2023-07-03 18:08:03 +02:00
Rubidium
e04d43f396 Remove: now unused stredup 2023-07-03 18:08:03 +02:00
Rubidium
2ec4ea2b99 Codechange: use the string temporaries for game script strings 2023-07-03 18:08:03 +02:00
Rubidium
3e488465f8 Codechange: allow string temporaries in a StringParameter 2023-07-03 18:08:03 +02:00
Rubidium
78f5d58dc6 Codechange: use std::string without const as return
Otherwise some compilers, e.g. MSVC, do not pick up that these are temporaries
and as such it will pass the temporaries to `const std::string &` instead of
the wanted `std::string &&`
2023-07-03 18:08:03 +02:00
Rubidium
b2edf82b69 Cleanup: remove unneeded CopyOutDParam version with StringID 2023-07-03 06:56:08 +02:00
Rubidium
4654b2b0aa Codechange: separate integer and string usage in StringParameters 2023-07-03 06:56:08 +02:00
Rubidium
8b7c34d7d4 Codechange: use string parameter backps for the text effects 2023-07-03 00:00:12 +02:00
Rubidium
7ed90a859f Codechange: function to check whether string parameters have changed since the backup 2023-07-03 00:00:12 +02:00
Rubidium
05ef3f0998 Cleanup: remove old backup/restore of string parameters 2023-07-02 22:31:01 +02:00
Rubidium
6313b8a4cb Codechange: move errors over to the new StringParameterBackup type 2023-07-02 22:31:01 +02:00
Rubidium
0943402bab Codechange: move news over to the new StringParameterBackup type 2023-07-02 22:31:01 +02:00
Rubidium
f4a3032985 Codechange: move tooltip and query window over to the new StringParameterBackup type 2023-07-02 22:31:01 +02:00
Rubidium
2687704afc Codechange: introduce new type and functions for StringParameter backups 2023-07-02 22:31:01 +02:00
translators
26f3efb419 Update: Translations from eints
english (au): 2 changes by krysclarke
italian: 14 changes by Rivarossi
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
tamil: 8 changes by merni-ns
2023-07-02 18:39:30 +00:00
Patric Stout
4c9c164ddc Fix d5a72193: [CI] GOG and Steam also depend on the source itself (#11095) 2023-07-01 21:32:47 +00:00
115f6cf8ea Fix #4575: Use Latin 'l' in English translation of zloty. (#11090)
This avoids many truetype fonts being unusable due to this single character not being available.
2023-07-01 20:12:28 +01:00
translators
10dd3119b1 Update: Translations from eints
welsh: 163 changes by Ansbaradigeidfran
2023-07-01 18:39:07 +00:00
merni-ns
161cc04b8a Fix #11087: Disable base graphics/sound dropdown outside main menu 2023-07-01 19:03:45 +02:00
merni-ns
4ae9ebf582 Change: Tooltip for base graphic/sound dropdown 2023-07-01 19:03:45 +02:00
Patric Stout
d5a72193e7 Change: [CI] upload releases to new CDN (#11093) 2023-07-01 14:30:57 +02:00
Kuhnovic
6169e7f4bc Feature: Orientation of rail and road depots can be changed (#9642) 2023-07-01 08:11:31 -04:00
c3fbe7bea8 Cleanup: Use FS enum instead of magic numbers. (#11088) 2023-06-30 20:11:09 +00:00
translators
082c47a4f9 Update: Translations from eints
dutch: 1 change by Afoklala
2023-06-30 18:40:38 +00:00
Rubidium
d5c75bd655 Codechange: use std::string instead of a temporary buffer for iconv calls 2023-06-30 19:15:21 +02:00
Rubidium
0ea3e338ab Codechange: replace buffer+strecpy with std::string 2023-06-29 17:32:27 +02:00
Rubidium
3f18a8863a Codechange: use std::getline to read strings from stdin 2023-06-29 16:49:10 +02:00
Rubidium
f333372dd1 Codechange: let IConsoleCmdExec accept std::string 2023-06-29 06:06:15 +02:00
Rubidium
fd380127f0 Codechange: use SignalObjectAndWait since we do not support older than Windows XP anymore 2023-06-28 23:22:14 +02:00
Rubidium
69d5b9d326 Cleanup: unused NO_THREADS #ifdefs 2023-06-28 19:07:10 +02:00
translators
55979b612e Update: Translations from eints
welsh: 28 changes by Ansbaradigeidfran
portuguese: 1 change by azulcosta
polish: 1 change by pAter-exe
2023-06-27 18:43:13 +00:00
Richard Wheeler
3b2934c479 Change: Make terraforming point selection sprite visible at >2x zoom out (#11017) 2023-06-27 10:47:42 -04:00
Johannes E. Krause
5b0cfc7ea5 Add: show fallback sprites with debuglevel sprite=4 2023-06-27 15:12:27 +02:00
Jonathan G Rennison
55c07eed59 Change: Add separate setting for server sent commands per frame limit (#11023)
Set a higher default value for this setting.
Use the higher of this and existing commands per frame limit
setting for server-originating commands, e.g. GS.

This is to support the GSAsyncMode class.
This also avoids undue throttling when more than one
script is in operation (e.g. AIs).
2023-06-27 12:32:45 +01:00
8465559488 Codechange: Pass face index as font os_handle for FreeType fonts. (#11073)
This allows fallback font detection to test the specific face within the
font rather instead of only the first.
2023-06-27 12:30:46 +01:00
Rubidium
794b642b9a Codechange: use std::string/std::vector over stredup/strecpy/CallocT/free 2023-06-27 12:35:31 +02:00
Rubidium
700241410b Remove: support for not having getifaddrs 2023-06-27 12:35:07 +02:00
Rubidium
7ad487eeee Cleanup: remove now unused GetInt32/64 functions 2023-06-27 12:34:40 +02:00
Rubidium
75a22a1c83 Codechange: move from GetIntXY to GetNextParameter<XYY> 2023-06-27 12:34:40 +02:00
Rubidium
e7937efb01 Codechange: add clearer named function to get the next (string) parameter 2023-06-27 12:34:40 +02:00
translators
ee34fae09a Update: Translations from eints
korean: 3 changes by telk5093
danish: 3 changes by bscargo
2023-06-26 18:42:58 +00:00
Niels Martin Hansen
103d88ee33 Fix: Layouter not taking stripped formatting codes into account when mapping visual coordinates to/from original string 2023-06-26 17:31:17 +02:00
Niels Martin Hansen
b52e526017 Fix: FallbackParagraphLayouter wasn't reverse-mapping glyphs to character indexes right 2023-06-26 17:31:17 +02:00
translators
5db4473ae8 Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
finnish: 3 changes by hpiirai
french: 5 changes by Naeso
2023-06-25 18:41:23 +00:00
d140acf34e Fix: Setting tree lines drawn incorrectly for RTL languages. (#11070) 2023-06-25 19:32:53 +01:00
fac317b139 Cleanup: Remove {ORANGE} from settings page strings. 2023-06-25 17:22:02 +01:00
40a9b080aa Fix: Ensure settings page label is orange. 2023-06-25 17:22:02 +01:00
Loïc Guilloux
55e3dd9409 Cleanup 6298b96: Left-over function declaration (#11072) 2023-06-25 15:51:15 +00:00
Jonathan G Rennison
4f6d75f97d Fix #11016: Defer deletion of client and server game socket handlers
This fixes various use after free scenarios in error handling paths
2023-06-25 12:02:32 +01:00
Jonathan G Rennison
19ae88fb63 Fix: Error logging in game and admin server HandlePacket
Don't invent a packet type in the log message if we can't/don't
read a packet type at all.
Fix packet type not being logged when appropriate.
2023-06-25 12:02:32 +01:00
43ddf19df3 Change: Allow text shadow on WWT_EMPTY/WWT_TEXT to extend horizontally. (#11065)
This alleviates text shadows of truetype fonts being cropped in some
window layouts.
2023-06-25 11:58:39 +01:00
509471f7f8 Codechange: Use std::optional for GRFConfig::GRFError (#11066)
This changes the semantics from "object pointer ownership" to "optional object", and simplifies copies.
2023-06-25 11:57:58 +01:00
translators
71f241ffe1 Update: Translations from eints
english (au): 1 change by krysclarke
russian: 1 change by Ln-Wolf
turkish: 1 change by BeratSJ
french: 1 change by glx22
portuguese (brazilian): 4 changes by pasantoro
2023-06-24 18:40:40 +00:00
translators
78c9446aef Update: Translations from eints
norwegian (bokmal): 1 change by buzzCraft
chinese (traditional): 1 change by wpi3
spanish (mexican): 1 change by absay
lithuanian: 1 change by devbotas
portuguese (brazilian): 3 changes by Greavez
2023-06-23 18:41:29 +00:00
6f36f1d912 Change: Remove currency code/symbol suffix from language files. 2023-06-23 16:47:32 +01:00
9dd9b8ec74 Fix #11054: Prevent translation of currency codes.
Most languages stick with the 3-letter latin currency codes in the name
string, however some translations are... clever... and use the currency
symbol instead. Whilst this may look nice, it can cause issues with fonts
as some scripts have a specific limited set of fonts which do not include
these symbols.

Instead, hard code the currency code list and add it when drawing the
currency name.
2023-06-23 16:47:32 +01:00
d42a78f3e8 Codechange: Make DropDownListStringItem preformat and remove other implementations. (#11063)
Having to choose between DropDownListStringItem, DropDownListCharStringItem, and DropDownListParamStringItem depending on whether to draw a StringID, a raw string, or a StringID with extra parameters was needlessly complex.

Instead, allow passing a StringID or raw string to DropDownListStringItem. This will preformat the StringID into a raw string, and can therefore accept parameters via the normal SetDParam mechanism.

This also means that strings no longer need to be formatted on every draw.
2023-06-23 08:30:13 +00:00
Rubidium
321f01602a Codechange: reduce passing around parameters, but formatting strings earlier 2023-06-23 06:48:13 +02:00
Rubidium
f48baa7d00 Codechange: move sign invisibility check out of loop 2023-06-23 06:48:13 +02:00
translators
9016d4a5b5 Update: Translations from eints
arabic (egypt): 8 changes by AviationGamerX
turkish: 5 changes by densxd
danish: 3 changes by bscargo
2023-06-22 18:38:02 +00:00
translators
c316d9ecb7 Update: Translations from eints
english (au): 2 changes by krysclarke
vietnamese: 3 changes by KhoiCanDev
russian: 2 changes by Ln-Wolf
dutch: 5 changes by Afoklala
french: 2 changes by Lishouuu
portuguese: 2 changes by azulcosta
esperanto: 51 changes by legoscia
polish: 3 changes by pAter-exe
2023-06-21 18:37:58 +00:00
Patric Stout
ff050ea1d9 Fix: [CI] enable audio (alsa / jack / pulse) for generic Linux builds (#11051)
SDL needs to see the header files when compiling to enable those
drivers runtime. It doesn't actually link against them: it just
needs to see the headers.
2023-06-21 13:37:13 +02:00
Rubidium
4e9a871718 Codechange: merge multiple string parameter arrays to single array of structs 2023-06-21 05:46:11 +02:00
Rubidium
fa8c50758b Codechange: replace memcpy when copying DParams 2023-06-21 05:46:11 +02:00
Rubidium
2aa48bfcb3 Add: subspan function to span 2023-06-21 05:46:11 +02:00
Rubidium
7a785a4224 Codechange: simplify StringParameters now type cannot be nullptr 2023-06-20 22:25:25 +02:00
Rubidium
428333aeba Codechange: let AllocatedStringParameters allocated types too 2023-06-20 22:25:25 +02:00
Finn Willard
f23249f8f1 Fix #10917: Pay loan interest before generating statistics (#11040) 2023-06-20 22:02:09 +02:00
b68d56d94d Fix #11043: Don't choose toolbar dropdown option if focus is lost. (#11044)
Since dropdown menus now get closed if they lose focus, 'instant close' dropdowns (i.e. the toolbar dropdowns) should no longer execute their action to avoid unintended actions.
2023-06-20 20:34:05 +01:00
Rubidium
9f3254b72a Fix b1fb209: build failure due to removed parameter 2023-06-20 21:32:04 +02:00
translators
4d0369ea9c Update: Translations from eints
finnish: 1 change by hpiirai
portuguese (brazilian): 1 change by pasantoro
2023-06-20 18:38:55 +00:00
glx22
6c7f977197 Codechange: Use {COLOUR} to simplify drawing of timetables 2023-06-20 19:05:10 +02:00
glx22
b1fb209bed Add: {COLOUR} control code to allow colour changes at runtime 2023-06-20 19:05:10 +02:00
Rubidium
88138c55f8 Codechange: make offset protected and guard against invalid offsets 2023-06-20 17:37:49 +02:00
Rubidium
9c3c90effa Codechange: rename ClearTypeInformation so it can be used for preparing for the next run 2023-06-20 17:37:49 +02:00
Rubidium
01abcdfcac Codechange: make StringParameters#next_type only writable from outside the class 2023-06-20 17:37:49 +02:00
Rubidium
3e8f8c55c2 Codechange: make creating temporary StringParameters easier 2023-06-20 17:37:24 +02:00
Patric Stout
5bac27287e Fix 456abda5: [DorpsGek] escape "[" and "]" correctly (#11046) 2023-06-20 15:25:32 +00:00
Patric Stout
456abda508 Fix: [DorpsGek] report eints commits on Discord / IRC (#11045) 2023-06-20 14:23:57 +00:00
translators
aaf6811a2c Update: Translations from eints
english (au): 1 change by krysclarke
korean: 1 change by telk5093
russian: 1 change by Ln-Wolf
french: 1 change by Lishouuu
portuguese: 1 change by azulcosta
2023-06-20 13:37:22 +00:00
Rubidium
8caacb5a49 Codechange: use std::deque for console history 2023-06-20 15:25:29 +02:00
Rubidium
4fbc81003f Codechange: make SQString::Create that supports std::string and use that 2023-06-20 15:25:17 +02:00
translators
ea54408e1d Update: Translations from eints
french: 1 change by Lishouuu
2023-06-19 18:40:36 +00:00
merni-ns
b3669a8795 Fix #11026: Use real engine name instead of default name for filtering (#11033) 2023-06-19 01:03:32 +02:00
Rubidium
714ff35e9d Codechange: move to std::string over stredup + free 2023-06-18 22:55:15 +02:00
2a2443dd01 Feature: Create group of vehicles from manage vehicle list button. (#10890) 2023-06-18 20:48:04 +01:00
Rubidium
70de70bdcd Codechange: refactor code to remove need for stredup 2023-06-18 21:22:28 +02:00
Rubidium
74924c8186 Codechange: includes must be before 'safeguards.h' 2023-06-18 21:22:14 +02:00
Niels Martin Hansen
ed3f14686d Fix: Layouter::GetCharAtPosition counting wrong
Bug introduced in commit 60399e
2023-06-18 21:07:40 +02:00
translators
31cc349a09 Update: Translations from eints
swedish: 51 changes by SkogisREAL
2023-06-18 18:43:02 +00:00
Rubidium
09f585b772 Codechange: use std::string over stredup+free for splitting font name 2023-06-18 18:32:20 +02:00
Loïc Guilloux
1d9bc23525 Fix #10868: [Script] Handle errors when loading savegame data on stack (#11029) 2023-06-18 12:03:59 +02:00
Rubidium
381e8b69d2 Codechange: make size and offset size_t 2023-06-18 09:50:11 +02:00
Rubidium
4e6733cc6e Codechange: use args.GetParam(offset) over *args.GetPointerToOffset(offset) 2023-06-18 07:10:10 +02:00
Rubidium
e404ba0631 Codechange: generify GetRemainingParameters to allow custom offsets 2023-06-18 07:09:59 +02:00
translators
9215e36300 Update: Translations from eints
vietnamese: 2 changes by KhoiCanDev
finnish: 2 changes by hpiirai
danish: 2 changes by bscargo
2023-06-17 18:40:32 +00:00
Jonathan G Rennison
a6b625eea3 Fix #10993: Crash log when font caches not initialised (#11024)
See also: #10836
2023-06-17 17:56:27 +01:00
Rubidium
1d902a97ce Codechange: move StringParameters to strings_internal.h 2023-06-17 12:14:11 +02:00
Rubidium
ad048b143a Codechange: move implementation of Set/GetDParam to strings.cpp 2023-06-17 12:14:11 +02:00
Rubidium
dd53a738bb Codechange: automatically set/check the correct type for string parameters/genders 2023-06-17 11:02:31 +02:00
Rubidium
836541b41c Codechange: use SetDParam and CopyOutDParam for tooltips 2023-06-17 10:01:19 +02:00
Rubidium
ac0c932ce7 Codechange: use SetDParam to set measurement tooltip parameters 2023-06-17 10:01:19 +02:00
Jonathan G Rennison
ee8b03e8da Fix: Crash when failing to load a game into a dedicated server at startup (#11021)
Using the -g switch
2023-06-16 19:41:26 +01:00
ed06c6bdcf Codechange: Use vector when migrating old savegame orders. (#11020) 2023-06-16 19:40:24 +01:00
fc2510e2ba Codechange: Use std::vector for midifile's ByteBuffer. (#11019) 2023-06-16 17:04:46 +01:00
Owen Rudge
1a3d1bca59 Remove: OS/2 port 2023-06-16 14:29:14 +01:00
Rubidium
d4c2043294 Codechange: remove a number of unneeded c_str() calls 2023-06-15 22:14:45 +02:00
translators
aae8f40b9f Update: Translations from eints
english (au): 2 changes by krysclarke
korean: 2 changes by telk5093
russian: 2 changes by Ln-Wolf
french: 2 changes by ottdfevr
portuguese: 2 changes by azulcosta
portuguese (brazilian): 2 changes by ericandradex
polish: 2 changes by pAter-exe
2023-06-15 18:41:48 +00:00
Owen Rudge
5a7098cb41 Change: [Actions] Use notarytool for notarization instead of gon 2023-06-15 14:52:00 +01:00
Loïc Guilloux
1cd49bf5e5 Fix ca1e34c: [Script] Wrong value printed for {RAW_STRING} (#11011) 2023-06-14 22:07:11 +00:00
Jonathan G Rennison
864d3c9c16 Fix: CMD_CHANGE_SETTING did not reject SF_NO_NETWORK_SYNC settings (#11009) 2023-06-14 19:44:10 +02:00
f51f117b00 Change: Add window description flag to disallow interactive window closing. (#11008)
This replaces/simplifies testing for a closebox to allow closing a window with right-click, and testing for specific window classes when closing all windows by hotkey.

This allows right-click closing of dropdowns and the high-score window.
2023-06-14 17:24:14 +01:00
Rubidium
7c37dcb8e3 Fix: do not use {STRING} when {STRING1} or {STRING2} is needed 2023-06-14 09:44:06 +02:00
Rubidium
0a5e58451b Codechange: pass string parameters by reference 2023-06-14 06:14:08 +02:00
Rubidium
43f91bc50c Cleanup: unused GetDataPointer function 2023-06-13 23:53:13 +02:00
Rubidium
e332810231 Codechange: pass zero length arguments for {STRING}, instead of the remaining arguments 2023-06-13 23:53:13 +02:00
Rubidium
82851a9bef Codechange: do not mess with global string params to get pointer to first element 2023-06-13 23:53:13 +02:00
Rubidium
aba0d27a28 Codechange: use StringParameters for remapping the NewGRF string control codes 2023-06-13 22:11:21 +02:00
Rubidium
1146904d45 Fix: when a string consumes more parameters than allowed, nullptr is attempted to be formatted 2023-06-13 20:58:45 +02:00
translators
f1ec2f274c Update: Translations from eints
vietnamese: 6 changes by KhoiCanDev
korean: 4 changes by telk5093
german: 33 changes by SecretIdetity
romanian: 69 changes by kneekoo
russian: 2 changes by Ln-Wolf
finnish: 4 changes by hpiirai
turkish: 4 changes by BeratSJ
danish: 1 change by bscargo
dutch: 6 changes by Afoklala
french: 4 changes by ottdfevr
portuguese (brazilian): 6 changes by pasantoro
polish: 6 changes by pAter-exe
2023-06-13 18:40:34 +00:00
Andrii
f26de0d2f9 Fix #10982: No help text for gamelog command (#10984) 2023-06-13 08:33:33 +00:00
ebc451b071 Fix #10987: Double-close of dropdown stopped land-info tool working as default. (#11000)
Clicking and releasing on the query toolbar icon is meant to select the land-info tool.

This did not work as during closing a window, OnFocusLost() is called, which then closes the window again. These two calls toggled the land-info tool one and off in the same action.

Resolve by not calling Window::Close in OnFocusLost() if the window is already closing.
2023-06-12 08:42:02 +01:00
Rubidium
613ad80581 Codechange: remove need for GetDParamX 2023-06-12 09:12:11 +02:00
Rubidium
82b434b589 Codechange: rename function to better describe what it is doing 2023-06-12 09:12:11 +02:00
Rubidium
f86500df92 Codechange: remove need for SetDParamX 2023-06-12 09:12:11 +02:00
Rubidium
6c6f365d2f Codechange: remove offset parameter for copying DParams in and out 2023-06-11 17:03:31 +02:00
Rubidium
d42ef3a0ef Codechange: inject the query window caption into the widget 2023-06-11 17:03:31 +02:00
Patric Stout
6869f387ba Fix 07add7a9: [Win32] use full monitor resolution for fullscreen (#10985)
On Windows in fullscreen you cannot reach the top with
the cursor for the halve of the height of your toolbar.

Additionally, on Win10 in fullscreen you can see the actual toolbar.
2023-06-11 12:00:02 +02:00
2097719f26 Fix: Don't restore backed up vehicle name if it's no longer unique. (#10979) 2023-06-09 21:18:55 +00:00
Rubidium
6d597879d0 Codechange: let ReadLine return a string instead of passing a buffer 2023-06-09 19:58:29 +02:00
Rubidium
81f957b9f8 Codechange: use std::string to find the executable's working directory 2023-06-09 19:58:18 +02:00
merni-ns
1be668c2e4 Fix #10975: Clear a non-head engine's name (#10976) 2023-06-09 16:09:36 +01:00
Rubidium
66a984afd7 Codechange: rename function to better describe its functionality 2023-06-09 06:41:52 +02:00
Rubidium
48dcb79145 Cleanup: remove seprintf and vsnprintf 2023-06-09 06:41:33 +02:00
Rubidium
13cdf5fffa Codechange: use std::filesystem::path for the language file's path 2023-06-08 23:20:28 +02:00
Rubidium
97dd84d1e0 Codechange: move saveload string fixing code to saveload 2023-06-08 20:36:27 +02:00
Rubidium
3f35787458 Codechange: replace stredup + StrMakeValidInPlace with std::string + StrMakeValid 2023-06-08 19:32:15 +02:00
Rubidium
e762855201 Cleanup: remove str_strip_colours; StrMakeValid also removes the colours
Essentially str_strip_colours followed by StrMakeValid makes the calling of
str_strip_colours useless, as StrMakeValid would have removed them too.
2023-06-08 19:32:15 +02:00
mrmbernardi
35ef6c1723 Feature: [GS] Goal destination can be updated (#10817) 2023-06-08 18:00:31 +01:00
Rubidium
9408ab4799 Codechange: only one '\0' is required 2023-06-08 18:51:02 +02:00
Rubidium
2ae7367024 Codechange: replace StrMakeValidInPlace with StrValid 2023-06-08 18:29:44 +02:00
Rubidium
4ca23a19b6 Cleanup: char-pointer variant of strtolower 2023-06-08 18:09:11 +02:00
b49bd86a46 Fix dec7ff6b0c: Dropdowns couldn't be closed by pressing the parent button. (#10954)
Since dropdowns self-close, the detection of re-clicking a dropdown
button no longer worked, as the dropdown is already closed.

Instead set (and then test) a flag on the parent widget to indicate that
the dropdown closed. This method avoids looping windows on every click.
2023-06-07 19:01:30 +01:00
Rubidium
b2a8d8aea4 Codechange: use std::string for Windows' ISO code mangling 2023-06-07 08:27:18 +02:00
Rubidium
a541b8217d Codechange: use fmt::format to build Squirrel error message 2023-06-07 08:02:58 +02:00
Rubidium
5e9a1eb790 Codechange: use fmt::format to construct error message 2023-06-07 08:02:58 +02:00
Rubidium
4de9b8a988 Codechange: use fmt::format to create desync dump savegames 2023-06-07 08:02:58 +02:00
Rubidium
d5c0d3beb7 Codechange: unify the formatting of the game's caption 2023-06-07 08:02:46 +02:00
9fa1984ef0 Codechange: IniGroup::GetItem() can now be const. (#10966) 2023-06-06 22:39:37 +00:00
f249715db3 Fix #10964: Missing FontConfig format for language. (#10965) 2023-06-06 22:38:11 +00:00
eda3defcb5 Codechange: Pass language for font detection as std::string. (#10964) 2023-06-06 20:55:56 +00:00
7a0b6b7ddf Codechange: Remove Freetype bits on Win32/OSX. (#10960)
These platforms have their own specific font rendering.
2023-06-06 19:43:27 +01:00
translators
316a434933 Update: Translations from eints
english (au): 6 changes by krysclarke
russian: 4 changes by Ln-Wolf
danish: 5 changes by bscargo
portuguese: 7 changes by azulcosta
2023-06-06 18:40:40 +00:00
Rubidium
617cacd542 Fix #10961, 52a7c69: incorrect order of parameters to gamelog revision constructor 2023-06-06 20:26:26 +02:00
Rubidium
a47de4b2ab Cleanup: remove DRAW_STRING_BUFFER constant 2023-06-06 18:08:11 +02:00
Rubidium
96fef9f643 Codechange: allocate enough memory to layout the strings 2023-06-06 18:08:11 +02:00
Rubidium
1fa432ca92 Codechange: replace C-style string building with C++-style building 2023-06-06 18:08:11 +02:00
Rubidium
ca1e34c121 Codechange: use std::string to build ScriptText's encoded text 2023-06-06 18:07:54 +02:00
Rubidium
e32f0aa20b Cleanup: minimum string length for town name generator is not needed anymore 2023-06-05 23:26:12 +02:00
Rubidium
edb21620ea Cleanup: remove unneeded checks on remaining buffer size 2023-06-05 23:26:12 +02:00
Rubidium
affceea0ae Codechange: switch StringBuilder to use std::string as backend 2023-06-05 23:26:12 +02:00
Rubidium
ce8933d63e Add: std::back_insert_iterator<std::string> Utf8Encode function 2023-06-05 23:26:12 +02:00
Rubidium
55dfca1936 Codechange: replace seprintf with C++ style formatting 2023-06-05 23:25:59 +02:00
Rubidium
fbd71a9d72 Codechange: replace C-style string processing with C++-style for the listing callbacks 2023-06-05 23:25:49 +02:00
translators
433ec6b5bd Update: Translations from eints
korean: 2 changes by telk5093
russian: 2 changes by Ln-Wolf
finnish: 2 changes by hpiirai
turkish: 2 changes by EndChapter
french: 2 changes by glx22
portuguese: 2 changes by azulcosta
2023-06-05 18:42:37 +00:00
64d6ad50f9 Codechange: Split GetItem with GetOrCreateItem. (#10952)
`IniGroup::GetItem()` returns nullptr if the item does not exist, but does not if the create parameter is set to true. Resolve CodeQL warnings with `GetOrCreateItem()` which returns a reference to the item instead.
2023-06-05 18:29:52 +00:00
Patric Stout
3b1407d240 Feature: allow to do a hostile takeover of an AI company (in singleplayer) (#10914)
With the removal of the share-system, you could no longer make an
AI disappear in a single player game. At least, not without going
into the console.
2023-06-05 19:32:22 +02:00
f814c86389 Codechange: Reorganise hotkey initialisation. (#10951)
Hotkeys are now initialized inline, and use std::vector instead of
separate static C-arrays and std::string instead of char *. The list end
marker is no longer required.
2023-06-05 18:12:30 +01:00
rubidium42
921f5afc4d Codechange: Apply suggestions from code review 2023-06-05 17:07:39 +02:00
Rubidium
2dd2b698d2 Codechange: convert C-style GetTownName API to std::string returning API 2023-06-05 17:07:39 +02:00
Rubidium
14915526ad Cleanup: remove stre-style GetString 2023-06-05 11:23:31 +02:00
Patric Stout
772729cc7d Fix: when syncing width of GUI items, take padding into account (#10915) 2023-06-05 10:27:04 +02:00
Rubidium
15c75e6f45 Codechange: use std::array and std::string for high scores 2023-06-04 23:49:43 +02:00
Rubidium
c158089eff Codechange: use C++ style methods to combine a Utf8Encoded character and a formatted string 2023-06-04 23:32:02 +02:00
6ae6b65edb Cleanup: Remove doubled statements. (#10944) 2023-06-04 21:54:44 +01:00
Rubidium
a4bf45729a Change: move string validation (and assignment) to textbuf 2023-06-04 21:43:07 +02:00
Rubidium
4e39a58c59 Codechange: let town name generation use StringBuilder 2023-06-04 21:42:59 +02:00
translators
6a5ab4a9fb Update: Translations from eints
french: 3 changes by glx22
2023-06-04 18:57:10 +00:00
Rubidium
820fe8c621 Codechange: use std::string and concatenation when combining multiple formatted strings 2023-06-04 20:47:41 +02:00
Patric Stout
07add7a96e Fix: [Win32] position window in center of workspace of primary display (#10942) 2023-06-04 18:38:16 +00:00
83a318edcf Fix dec7ff6b0c: Dropdowns would close if their tooltip appeared. (#10939)
Solution is to not focus any tooltips, so that the dropdown doesn't lose focus. Tooltips don't accept any input so this does not change their behaviour.
2023-06-04 18:15:24 +00:00
rubidium42
bfcb027cb9 Fix 2dffa7d: fmt::format_to copies the iterator, so some text does not remain during formatting (#10940) 2023-06-04 19:55:47 +02:00
Rubidium
6a519f5d89 Cleanup: strecat has no uses anymore 2023-06-04 19:45:42 +02:00
Bernard Teo
2c667b1773 Doc: Fix spelling error in ScriptTileList::RemoveRectangle (#10937) 2023-06-04 17:45:18 +00:00
Patric Stout
caa0474d30 Fix: crash with tooltip on low resolution screens (#10933) 2023-06-04 16:28:58 +00:00
Rubidium
36aaa9d683 Codechange: let GetStringWithArgs use StringBuilder 2023-06-04 18:00:23 +02:00
Jonathan G Rennison
ec7f9f63f6 Feature: Add coverage button to waypoint window 2023-06-04 16:54:48 +01:00
Jonathan G Rennison
d7bf6b2c07 Feature: Highlight waypoint tiles when adjacent or distant joining 2023-06-04 16:54:48 +01:00
Jonathan G Rennison
84b53213af Codechange: Refactor viewport catchment overlay change handling 2023-06-04 16:54:48 +01:00
Patric Stout
0f3dd9c796 Fix: crash when window can't be placed on low resolution screens. (#10932)
Co-authored-by: Jonathan G Rennison <j.g.rennison@gmail.com>
2023-06-04 15:39:57 +00:00
Patric Stout
c43a23cea8 Fix: crash when not even a single row fits for dropdowns on low resolution screens (#10934) 2023-06-04 15:07:18 +00:00
ee2d0745e9 Fix #10502: Refit engine before attaching free wagons. (#10926)
Caused by incorrect order of operations when buying a train engine with refit and attaching free wagons.
2023-06-04 15:57:36 +01:00
Rubidium
87ccff16b5 Codechange: use std::string for the screenshot name/path 2023-06-04 16:53:10 +02:00
Patric Stout
0e56a73fb8 Fix: disable hardware acceleration when GPU driver crashed the game last attempt (#10928) 2023-06-04 14:40:17 +00:00
Rubidium
556b44713e Codechange: use std::string for midi filenames 2023-06-04 15:57:05 +02:00
Rubidium
84037d4a57 Codechange: use std::string for parameters in the dbg_helpers 2023-06-04 15:56:53 +02:00
Rubidium
2dffa7d0c6 Codechange: let FormatString use StringBuilder 2023-06-04 15:06:52 +02:00
Rubidium
993f90b6a0 Codechange: let GenerateDefaultSaveName return std::string 2023-06-04 14:11:13 +02:00
ac1d042550 Remove: obsolete NewGRF text unprinting. (#10884)
Co-authored-by: Rubidium <rubidium@openttd.org>
2023-06-04 13:14:56 +02:00
Patric Stout
6b1c38e303 Fix 3effb893: mention GSAsyncMode in changelog (#10924) 2023-06-04 11:10:22 +00:00
Rubidium
c384d829fe Codechange: let number formatting use StringBuilder 2023-06-04 12:24:37 +02:00
Rubidium
ed51cf117a Add: helper output iterator for formatting strings 2023-06-04 12:24:37 +02:00
Jonathan G Rennison
3effb8931c Add: [Script] GSAsyncMode to set async mode of gamescript commands (#10913)
In asynchronous mode, don't wait for result of executed command,
just fire-and-forget, and return estimated cost/result
2023-06-04 11:15:35 +02:00
Patric Stout
5821194ad1 Add: [Linux] change default scroll mode to non-mouse-lock (#10920)
Wayland doesn't support mouse warping, X11 only for native
systems (so not for remote desktop, WSLg, etc), and emscripten
neither without complications. All these cannot offer a
mouse-lock.
2023-06-04 00:10:21 +00:00
Patric Stout
0d840b4570 Codechange: remove queue_wrap / last_position from mouse movement
No backend uses it anymore, so also no longer any need to support
it.
2023-06-04 00:40:56 +02:00
Patric Stout
e83f244750 Codechange: simplify UpdateCursorPositionRelative
The function is only called with fix_at=true, so don't support
the other cases.
2023-06-04 00:40:56 +02:00
Patric Stout
a969a78f81 Fix: [SDL] unify the way X11 and Wayland handle mouse events
Basically, we drop RelativeMode completely, and use the same trick
as used by the Windows driver: read all motion events till the last
one, and use that as value.
2023-06-04 00:40:56 +02:00
8a2d550904 Codechange: Use std::reverse instead of custom implementation. (#10918) 2023-06-03 23:25:01 +01:00
Jonathan G Rennison
a2c0e6aa18 Fix #10831: Level crossing parts left barred after crossing tile removal (#10874) 2023-06-03 23:04:24 +02:00
Patric Stout
cd751a598a Fix: Wayland crash on startup due to Pango also using FontConfig (#10916)
Basically, we haven't been a good neighbour. Turns out you shouldn't
actually call FcFini when you are done, as some library might still
want to use FontConfig. And they use a shared instance for their
administration.

The idea is that you call FcInit once, and use FcConfigReference
after that to get an instance, you can release. This entry is
ref-counted, and things happen automatically based on that.

At least, I think.
2023-06-03 19:09:02 +00:00
Patric Stout
21adfa7567 Fix: track "memory installed" for surveys less precisely (#10910)
It turns out, for Windows and Linux having the exact memory allows
for easy tracing of an individual. That is exactly against the idea
of the survey. And honestly, we don't need this precision.
2023-06-03 19:07:56 +00:00
translators
7d6aff3a34 Update: Translations from eints
french: 16 changes by ottdfevr
2023-06-03 18:42:31 +00:00
Rubidium
d68b5c9162 Codechange: replace buffer + strecpy with std::string for getting clipboard contents 2023-06-03 20:14:33 +02:00
Rubidium
35f7f7e8dc Codechange: use std::string for executing the console aliases 2023-06-03 18:15:55 +02:00
2e62682f73 Codechange: Close dropdowns by class instead of id. 2023-06-03 14:17:05 +01:00
2511649938 Codechange: Use window parent association for dropdowns.
This replaces the separate window class and number properties, and
allows the window system to close dropdowns automatically.
2023-06-03 14:17:05 +01:00
dec7ff6b0c Fix: Make dropdowns self-close when losing focus. 2023-06-03 14:17:05 +01:00
a5a3a07005 Fix: GRF Parameters not displayed due to scope issue. (#10911)
Move params so it is still in scope when the text is actually drawn.
2023-06-03 11:07:59 +00:00
Rubidium
513ede7669 Codechange: use C++ strings/paths to resolve links in tars 2023-06-02 21:06:24 +02:00
Rubidium
0ab7bc7a2b Codechange: use fmt::format to create type prefixed driver names 2023-06-02 18:05:41 +02:00
Rubidium
37a3fc4df3 Codechange: replace strstr with more appropriate function 2023-06-02 17:11:08 +02:00
Rubidium
53f83c31b0 Codechange: use std::string to return the debug level information 2023-06-02 17:07:18 +02:00
Rubidium
10e12154f5 Fix: false positive warning in fmt library (backport ef55d4f of upstream fmt) 2023-06-02 11:57:23 +02:00
Rubidium
802d6cb509 Fix: memory leak when parsing (strgen) commands by moving to C++ containers 2023-06-02 11:57:23 +02:00
Rubidium
4f94655cc2 Codechange: use vector/unorder_map over custom implementation 2023-06-02 11:57:23 +02:00
Rubidium
234a143ee5 Codechange: use std::string for LangString over C-style strings 2023-06-02 11:57:23 +02:00
Rubidium
f372373e6f Codechange: use std::string/vector for language cases over manual management 2023-06-02 11:57:23 +02:00
Rubidium
6eb51666bc Codechange: use C++ file APIs for writing language files 2023-06-02 11:57:23 +02:00
Rubidium
fa0d865edd Change: set macOS deployment target to 10.15 2023-06-02 11:57:23 +02:00
0b663f709d Codechange: Sprite mapping for objects doesn't involve cargo types. (#10905)
Objects have a default sprite group and an optional purchase list sprite
group. There is no need to pretend that these are cargo IDs.
2023-06-02 08:25:13 +00:00
Jonathan G Rennison
cdb3a6288b Codechange: Remove unused CapacitiesMap typedef from struct Vehicle 2023-06-01 22:48:47 +02:00
Patric Stout
9eda419f9b Fix 646a7e62: recalc_time was not scaled properly (#10901)
This caused "runtime" to underflow or, if you are lucky, hit an
assert in ScaleToMonthly when it hits zero. But mostly underflow.
2023-06-01 12:21:33 +00:00
translators
b5b004e518 Update: Translations from eints
ukrainian: 117 changes by alextov
2023-05-31 18:42:26 +00:00
Rubidium
f29606fd14 Codechange: use std::string to cache engine/group/vehicle names 2023-05-31 19:31:09 +02:00
Rubidium
d9f8a4c380 Codechange: use std::string GetString variant 2023-05-31 19:31:09 +02:00
Rubidium
324c43eeb2 Codechange: let FiosGetDiskFreeSpace only return disk space and split FiosGetCurrentPath off 2023-05-31 10:56:33 +02:00
Rubidium
f2e704b9a7 Codechange: use std::string for FiosIsRoot 2023-05-31 10:56:33 +02:00
Rubidium
13789d1703 Codechange: use std::string for FiosIsValidFile 2023-05-31 10:56:33 +02:00
1ff0dc11d8 Fix: Land info window maximum width was not scaled. (#10894) 2023-05-31 08:54:39 +00:00
Patric Stout
0302e6f168 Codechange: initialize all values of ICURun on construction (#10892) 2023-05-30 19:17:30 +00:00
translators
c8b70e4877 Update: Translations from eints
ukrainian: 53 changes by alextov
portuguese (brazilian): 1 change by ericandradex
2023-05-30 18:40:56 +00:00
translators
e1203c3a48 Update: Translations from eints
esperanto: 51 changes by legoscia
2023-05-29 18:39:22 +00:00
d086f288cd Codechange: Remove duplicated includes. (#10888)
These are now included by stdafx.h so don't need to be included again.
2023-05-29 14:29:00 +01:00
702194cfef Change: Cargo flow legend only shows defined cargo. (#10872)
This removes the large mostly-empty grid of cargo buttons when not using a complex industry set.
2023-05-29 06:48:43 +01:00
translators
c9c6721a47 Update: Translations from eints
esperanto: 44 changes by legoscia
2023-05-28 18:42:42 +00:00
bae1897826 Change: Include font style in font name for Freetype. 2023-05-27 20:40:25 +01:00
9976293c1e Codechange: Return fontcache font name as std::string. 2023-05-27 20:40:25 +01:00
translators
90fdf17e39 Update: Translations from eints
esperanto: 28 changes by legoscia
2023-05-27 18:40:39 +00:00
Loïc Guilloux
c880157518 Fix: Check max member count in squirrel classes (#10883)
Manual cherry-pick from 23a0620658
2023-05-27 16:09:21 +00:00
8ea9c1a133 Fix #10880: Crash in object window due to incorrect parameter order. (#10881) 2023-05-26 21:29:52 +00:00
876871157f Fix: Ask FontConfig for the face index when opening fonts. (#10878)
This allows selection of the correct face in truetype fonts containing
multiple faces.
2023-05-26 18:56:13 +00:00
101e4e54a1 Fix d9a04ba446: Ensure MD5Hash is initialized. (#10876)
Not all instances need to be initialized as often they are copied or
written to, but doing all ensures no surprises.

Move the ^= operator to MD5Hash while we're at it.
2023-05-26 18:17:54 +00:00
Jonathan G Rennison
ba11467c02 Fix: Rail waypoint selection window not closed
When rail toolbar or rail waypoint build windows closed
2023-05-26 08:41:13 +02:00
584faaf064 Change: Reorganise industry accept/produce arrays. (#10853)
Use a array of struct for each cargo instead of an array for each statistic.
This makes iterating for acceptance and production much simpler.
pct_transported is now calculated when needed.
2023-05-25 21:25:46 +01:00
Loïc Guilloux
db3b086a52 Fix #10867, 8b93e45: Squirrel compile error exception type changed (#10869) 2023-05-25 12:46:27 +02:00
Rubidium
b133328737 Codechange: use std::string over strecat to create the RV capacity string 2023-05-25 05:43:00 +02:00
Rubidium
4fdde00e25 Codechange: use std::string to create the GRF parameter list 2023-05-25 05:43:00 +02:00
Rubidium
fbab94eabb Codechange: use std::string to create error message about external files 2023-05-25 05:43:00 +02:00
Rubidium
30b9e02dd9 Codechange: replace crashlog filenames with std::string in Crashlog 2023-05-25 05:42:10 +02:00
Rubidium
19304bd3d5 Codechange: replace seprintf with fmt::format for filling the crash log data 2023-05-25 05:42:10 +02:00
Rubidium
f4b0ac2bd4 Codechange: use std::string for formatting settings 2023-05-24 22:42:01 +02:00
translators
1412ea48ed Update: Translations from eints
esperanto: 268 changes by legoscia
2023-05-24 18:40:52 +00:00
09408e8e46 Codechange: Add IsCargoAccepted/Produced() helpers. 2023-05-24 17:34:11 +01:00
633f19419d Codechange: Make more use of GetCargoAccepted/ProducedIndex(). 2023-05-24 17:34:11 +01:00
Rubidium
29b20718ba Codechange: use Tthis instead of StrongTypedef, so ==/= does not compare/assign different strong typedefs 2023-05-23 20:46:32 +02:00
translators
9f0e406a51 Update: Translations from eints
esperanto: 18 changes by legoscia
2023-05-23 18:41:14 +00:00
8931e90302 Cleanup: No need to cound actual cargo to get scroll count. 2023-05-23 19:07:36 +01:00
f177ce7c9a Codechange: Base CargoArray off std::array.
This avoids needing to define array accessors and allows use of
default value initialization.
2023-05-23 19:07:36 +01:00
74e42e39a8 Codechange: Use CargoArray::GetCount() 2023-05-23 19:07:36 +01:00
Loïc Guilloux
a6c5b4ce4b Cleanup: Remove BOM/ZWNBSP in the middle of .editorconfig (#10860) 2023-05-23 12:49:47 +02:00
76516d7f70 Codechange: Use IsValidCargoID/IsValidCargoType.
IsValidCargoType() is used only for unmapped IDs.
2023-05-22 20:43:40 +01:00
c4ca6a0f74 Codechange: Rename IsCargo..Valid to IsValidCargo..
This better fits our naming pattern for this type of function.
2023-05-22 20:43:40 +01:00
translators
e2827d0e9c Update: Translations from eints
galician: 41 changes by pvillaverde
esperanto: 95 changes by legoscia
portuguese (brazilian): 18 changes by ericandradex
2023-05-22 18:40:22 +00:00
Rubidium
a19a43a4f7 Codechange: use fmt::format and time conversions over "custom" implementation 2023-05-22 15:36:09 +02:00
Rubidium
eb635b85bb Fix: work around GCC compiler bug #105120 in fmt
The fmt code pushes a pragma option, and later pops is. The intrinsics code
interacts with it via the __OPTIMIZE__ macro. This has been set by the pragma
option push, but not unset/reset to the original with the pop.
Since the pragma is only used for the GCC compiler (not Clang, not MSVC, not
ICC) and in debug mode, just remove the whole pragma handling for it.
2023-05-22 14:42:18 +02:00
Rubidium
187fa3f214 Codechange: update to fmt 10.0.0 and add formatting support for chrono and std types 2023-05-22 14:42:18 +02:00
Rubidium
6f2f38b3ed Codechange: fmt (and std::format) do explicitly not support enums out-of-the-box
That it works for the version we have packaged it pure coincidence, as that is
one of the few versions that due to a bug allow it. So add the appropriate
template specialisations to support it out-of-the-box within OpenTTD.
2023-05-22 14:42:18 +02:00
bc45c3f66c Change: Remember waypoint filter string. (#10857) 2023-05-22 08:03:20 +01:00
Rubidium
63d9bb93b8 Codechange: migrate from C-style GetString to C++-style GetString 2023-05-21 21:17:12 +02:00
Rubidium
1a179cb297 Codechange: use GetString + StrMakeValid to pass string without colours/font sizes to Debug 2023-05-21 21:17:12 +02:00
Rubidium
00695c29de Codechange: simplify news string drawing by using StrMakeValid to replaces newlines with spaces 2023-05-21 21:17:12 +02:00
translators
9610705f46 Update: Translations from eints
esperanto: 52 changes by legoscia
2023-05-21 18:40:42 +00:00
axet
60540f7df6 Change: Allow dedicated server to use threaded saves. (#10787)
Co-authored-by: Jonathan G Rennison <j.g.rennison@gmail.com>
2023-05-21 19:55:12 +02:00
Rubidium
2efd88d513 Cleanup: version of strgen/settingsgen was always $Revision$, so remove it 2023-05-21 19:39:09 +02:00
Rubidium
2dbd974d4c Codechange: prevent using (f)printf/(f)puts over fmt::print 2023-05-21 15:12:02 +02:00
Rubidium
411379f587 Codechange: replace puts with fmt::print 2023-05-21 15:12:02 +02:00
Rubidium
275ebf4509 Codechange: replace fprintf(<FILE*> with fmt::print(<FILE*> 2023-05-21 15:12:02 +02:00
Rubidium
c518293135 Codechange: replace printf with fmt::print 2023-05-21 15:12:02 +02:00
Tyler Trahan
d57046e7ec Change: Use "Via-Destination-Source" as default station cargodist display (#10851) 2023-05-21 08:57:14 -04:00
Patric Stout
0850193a38 Fix: survey result on crash only worked on Linux (#10855)
Every OS-specific crashlog handler has their own MakeCrashLog
in some form. In result, only Linux was calling the generic one.
2023-05-21 12:57:32 +02:00
translators
98dffc3157 Update: Translations from eints
catalan: 12 changes by J0anJosep
esperanto: 678 changes by legoscia
2023-05-20 18:39:31 +00:00
Rubidium
3323402aaa Codechange: rename smallvec_type to container_func and use only when needed 2023-05-20 16:53:10 +02:00
Rubidium
80d8c01814 Codechange: replace std::vector + duplicate preventing include with std::set 2023-05-20 16:53:10 +02:00
Rubidium
07860e67e2 Codechange: use fmt::format_to to format the help message 2023-05-20 16:50:03 +02:00
Loïc Guilloux
8d2a0a7da4 Fix #10846: [Squirrel] Ensure sqvector size does not overflow (#10848) 2023-05-20 14:43:22 +00:00
0cbbfd3eae Codechange: Use display list instead of exclude list for file window. (#10845)
This simplifies retrieving the correct data for each row when data is
filtered. The background FileList is left intact so that savegame data
does not have to be rescanned when the filter is changed, and sorting
still remains the task of the background FileList.
2023-05-19 21:19:00 +00:00
translators
cdb184f53b Update: Translations from eints
catalan: 14 changes by J0anJosep
dutch: 14 changes by Afoklala
2023-05-19 18:39:30 +00:00
6b87fe6540 Codechange: Use std::array for GRF(File|Config) parameters.
This simplifies comparison, copying and assignment operations.
2023-05-19 16:53:56 +01:00
c23aae96a2 Codechange: Use std::array instead of C array for automatic deep-copies. 2023-05-19 16:53:56 +01:00
Rubidium
acec34a0fe Cleanup: remove MD5SumToString in lieu of FormatArrayAsHex 2023-05-19 11:24:44 +02:00
Rubidium
d9a04ba446 Codechange: make the MD5 hash/digest/checksum variables a std::array 2023-05-19 11:24:44 +02:00
7934418133 Codechange: Remove comment alignment from GRFConfig. 2023-05-18 20:48:37 +01:00
f14479d27d Codechange: Use std::optional for GRF Parameter list. 2023-05-18 20:48:37 +01:00
c51a7f629e Codechange: GRFParameterInfo no longer needs deep-copy constructor. 2023-05-18 20:48:37 +01:00
translators
fd26658558 Update: Translations from eints
russian: 2 changes by Ln-Wolf
2023-05-18 18:41:14 +00:00
91e140c722 Codechange: Use unique_ptr for fios company properties.
This is the data used to show company names in the saveload window.
2023-05-18 12:18:30 +01:00
bf8f24f9a8 Codechange: Use unique_ptr for text layout font mapping.
This must stay a pointer as the value passed to other structures.
2023-05-18 12:18:30 +01:00
c38df2d589 Codechange: Use std::map instead of custom SmallMap. 2023-05-18 12:18:30 +01:00
72018badff Codechange: Swap SocketList map key/value around.
This map is used store socket and address together, and, other than
checking that the address does not already have a socket, the data layout
does not seem particularly important.

However, as address is the key, technically it should not be modified,
and address may self-modify itself during comparisons.
2023-05-18 12:18:30 +01:00
f454ec8d63 Fix: Don't rely on static initialization to set up sprite font caches.
The order of static initialization is undefined, so this can cause initalization
before relevant caches are initializations.
2023-05-18 12:18:30 +01:00
translators
418888ac23 Update: Translations from eints
romanian: 11 changes by bnegrut
turkish: 14 changes by densxd
2023-05-17 18:40:23 +00:00
83f2ad500e Codechange: stdarg.h include not needed as cstdarg is included. 2023-05-17 10:14:41 +01:00
56085be9bd Codechange: Move includes for common STL headers to stdafx. 2023-05-17 10:14:41 +01:00
translators
a5cf362886 Update: Translations from eints
english (au): 14 changes by krysclarke
english (us): 14 changes by 2TallTyler
vietnamese: 14 changes by KhoiCanDev
korean: 19 changes by telk5093
italian: 14 changes by Rivarossi
russian: 14 changes by Ln-Wolf
finnish: 14 changes by hpiirai
danish: 22 changes by bscargo
portuguese: 14 changes by azulcosta
polish: 14 changes by pAter-exe
2023-05-16 18:41:59 +00:00
Rubidium
e9c03f0dad Cleanup: remnants of C-style strings in saveload 2023-05-16 18:32:52 +02:00
Rubidium
52a7c69974 Codechange: rework Gamelog changes from union to classes 2023-05-16 18:32:52 +02:00
translators
389b66bd16 Update: Translations from eints 2023-05-15 18:40:31 +00:00
40f567d464 Fix #10811: Crash getting row from non-resizable widget. (#10833)
GetScrolled*FromWidget took line height from the widget's resize_y value,
however not all widgets are resizable, resulting in a division-by-zero.

Allow passing line height explicitly in cases where a widget is not
resizable.
2023-05-15 18:57:50 +01:00
e4fd9d41d3 Codechange: Use std::any_of() (#10830)
When the result of std::find_if is compared only with end()
then '!= end()' is replaced with any_of().

Just... there's only one.
2023-05-14 23:18:52 +01:00
Patric Stout
199e41c762 Codechange: use default dtor instead of empty (#10826) 2023-05-14 23:31:03 +02:00
Patric Stout
7634553d22 Feature: opt-in survey when exiting a game
On first start-up, the game will ask if you want to participate
in our automated survey. You have to opt-in, and can easily opt-out
(via the Options) at any time.

When opt-in, whenever you exit a game, a JSON blob will be send
to the survey server hosted by OpenTTD. This JSON blob contains
information that gives a global picture of the game just played:
- What settings were used
- How many humans vs AIs
- How long the game has been played
- Basic information about the OS / CPU

All this information is kept very generic, so there is no
chance we send private information to our survey server.
Nothing in the JSON blob could identify you as a person; it
mostly tells about the game played. At any time you can see
what the JSON blob includes, by pressing the "Preview Survey
Results" button in-game.
2023-05-14 23:22:02 +02:00
Patric Stout
021c45c4f6 Add: [CMake] JSON library (nlohmann) 2023-05-14 23:22:02 +02:00
Rubidium
62fda0f505 Codechange: remove manual allocation/free for SQ_instance 2023-05-14 22:54:10 +02:00
Rubidium
f9b5bc7ee6 Cleanup: the need for SQAutoFreePointers has gone 2023-05-14 22:54:10 +02:00
Rubidium
d9e93edc8b Codechange: replace 'const char *' script API parameters with std::string 2023-05-14 22:54:10 +02:00
Rubidium
b1b578f988 Cleanup: stredup-ing string variant for calling scripts 2023-05-14 22:54:10 +02:00
Rubidium
ab51175db2 Codechange: use std::string for script config 2023-05-14 22:54:10 +02:00
Rubidium
bbcb55ebc9 Codechange: use std::string as script API return type 2023-05-14 22:54:10 +02:00
Rubidium
b24a6bb8f3 Codechange: use std::string for script log calls 2023-05-14 22:54:10 +02:00
Rubidium
77177f7e8b Add: support for std::string parameters in the script API 2023-05-14 22:54:10 +02:00
Rubidium
98972a0748 Codechange: use C++ strings for constructing script file paths 2023-05-14 22:54:10 +02:00
Rubidium
20ff0bccd7 Codechange: use std::string to store script GUI's break string 2023-05-14 22:54:10 +02:00
Rubidium
48825e1a8e Codechange: rewrite script string-to-settings conversion to C++ 2023-05-14 22:54:10 +02:00
Rubidium
552d2f71a2 Codechange: use std::string for script library category 2023-05-14 22:54:10 +02:00
Rubidium
e035705239 Codechange: introduce and use std::string variant of sq_throwerror 2023-05-14 22:54:10 +02:00
Rubidium
3453c03a17 Codechange: use fmt::format to create dummy scripts 2023-05-14 22:54:10 +02:00
Rubidium
9f2fc860ad Codechange: use std::optional<std::string> for changing the script over char * 2023-05-14 22:54:10 +02:00
Rubidium
0fd9eb0faa Codechange: use std::string for script info/library finding 2023-05-14 22:54:10 +02:00
Rubidium
a30f7c83bd Codechange: use std::string for script names to load 2023-05-14 22:54:10 +02:00
Rubidium
9b0123ab66 Codechange: use std::string for script API versions 2023-05-14 22:54:10 +02:00
Rubidium
3d8d99ba11 Add: method to call script functions with std::string 2023-05-14 22:54:10 +02:00
Rubidium
4a6fdc8293 Fix: multiplication result converted to larger type
Technically unlikely to happen, though uint16 * uint16 get promoted to int and
then stored as uint64; similarly uint * uint16 remains uint and gets stored as
uint64. In both cases the value can get truncated before the change to uint64.
2023-05-14 22:09:58 +02:00
4894da67da Codechange: Pass bridge type instead of display row to BuildBridge. (#10828) 2023-05-14 19:12:26 +00:00
translators
a8daf91eea Update: Translations from eints
vietnamese: 4 changes by KhoiCanDev
hungarian: 74 changes by PstasDev
turkish: 4 changes by densxd
2023-05-14 18:40:47 +00:00
Patric Stout
8493719cf4 Fix: padding miscalculated for the network-relay and bootstrap-question GUI (#10827) 2023-05-14 15:32:45 +00:00
9eb0cca93a Fix #10823, Fix #10811: Order list has end marker row. (#10825) 2023-05-14 13:04:59 +01:00
64930c343a Codechange: Pass reference instead of pointer to GUI*Lists. (#10822)
Pointer-avoidance.
2023-05-14 09:17:44 +01:00
23ce42ad91 Codechange: Use std::move for bridge list. (#10821)
This follows the pattern for dropdown lists, and avoids new/delete and pointers.
2023-05-14 08:22:09 +01:00
385b25df63 Fix #10819, Fix #10811: GetVehicleFromDepotWndPt used widget- instead of window-relative positions. (#10820)
Pass window-relative positions instead, and adjust for relative positions where needed within the function itself. This simplifies calling code.
2023-05-13 22:18:36 +00:00
07473bfd2e Fix: Don't use a loop to test if classid is valid. (#10818)
Additionally the Object class test was broken.
2023-05-13 21:27:32 +00:00
Patric Stout
1fe7bbba8a Codechange: rework NewGRFProfiler to use ticks instead of calendar-days (#10815)
We are planning to allow things like freezing the calendar, which
makes this variable a bit problemetic. So instead, suggest to the
user how many ticks there are in a calendar day, and let them figure
out how many ticks they want.

Additionally, use a TimeoutTimer for this, instead of an end-date
variable which is checked in an IntervalTimer.
2023-05-13 23:17:11 +02:00
Rubidium
a372c59483 Codechange: replace C-style (stredup) chat completion with std::string_view 2023-05-13 22:33:27 +02:00
translators
e1b653137f Update: Translations from eints
finnish: 4 changes by hpiirai
2023-05-13 18:41:08 +00:00
a92755de81 Codechange: Use iterator erase pattern. 2023-05-13 19:18:01 +01:00
4a64064c57 Codechange: Make NEW_STATION an actual item in join station list.
Add NEW_STATION to the nearby station list to indicate that a new
station should be built. This removes special-casing for a non-existant
list item and keeps the list count and scrollbar count the same.
2023-05-13 19:18:01 +01:00
Patric Stout
d54660184a Fix: NewGRF Profile didn't stop if there were no events yet (#10816)
This meant you could have the following situation:
- You start a profile on a GRF with no events, for N days.
- The days pass, the profile should stop. It doesn't.
- The profile will never stop, even if the GRF start generating events.
- There is no real way to discover this, so .. byebye memory? :)
2023-05-13 18:23:23 +02:00
531d1ae8bc Codechange: Use GetScrolled(Row/Item)FromWidget in more places.
In many instances the clicked row position is 'manually' calculated
instead of using the GetScrolledRowFromWidget helper function, with
variations on checks. Replace with the two helpers where possible.
2023-05-12 21:45:32 +01:00
941dbadf9e Codechange: Add and use GetScrolledItemFromWidget to get a list item.
This function returns an iterator, either to the selected item or the
container's end.

This makes handling the result more robust as indices are not used.
2023-05-12 21:45:32 +01:00
Rubidium
86e5dfce3d Codechange: use std::string instead of strecat to build hotkey strings 2023-05-12 22:02:59 +02:00
Michael Lutz
72c7536325 Codechange: Use a dedicated variable for disaster vehicle action state. (#10798) 2023-05-12 21:41:36 +02:00
1a93618bd1 Fix: Road type is not available before its introduction date. 2023-05-12 21:03:13 +02:00
726d05b22b Fix: Don't list unavailable road types for game scripts. 2023-05-12 21:03:13 +02:00
5059e23ed5 Revert 8fa61533: "Fix 30ae072: when a road type is hidden, towns may not build them even when that flag is set"
This reverts commit 8fa61533f0.
2023-05-12 21:03:13 +02:00
Henry Wilson
3a03a12a9c Feature: Show the number of industries already built in the Fund New Industry window. 2023-05-12 20:48:11 +02:00
translators
a934a584a5 Update: Translations from eints
italian: 4 changes by Rivarossi
catalan: 4 changes by J0anJosep
dutch: 9 changes by Afoklala
2023-05-12 18:39:51 +00:00
da7f431812 Cleanup: widget pos_x/y are already int. (#10809)
Remove old casts left over from when pos_x/y were unsigned.
2023-05-12 18:02:51 +01:00
7e3646cf46 Codechange: Remove redundant char buffer. (#10808) 2023-05-11 21:36:11 +00:00
translators
ca31976da0 Update: Translations from eints
english (au): 4 changes by krysclarke
english (us): 4 changes by 2TallTyler
russian: 4 changes by Ln-Wolf
portuguese: 4 changes by azulcosta
polish: 8 changes by pAter-exe
2023-05-11 18:42:00 +00:00
Loïc Guilloux
7e74232e56 Change: [Actions] Use -fuse-ld=lld and Ninja for MinGW (#10785)
And some miscellaneous things while touching the file
2023-05-11 18:07:29 +00:00
61516627ad Add: NewGRF string code "9A 21" to display force from textstack. (#10782) 2023-05-11 08:06:46 +01:00
59811ec780 Codechange: Use find_if when finding things. 2023-05-11 07:58:55 +01:00
e6740046ee Codechange: Use range-for iteration. 2023-05-11 07:58:55 +01:00
cef3a2570d Codechange: Use standard iterator-erase-loop pattern. 2023-05-11 07:58:55 +01:00
a8c0d16371 Cleanup: Use std::advance instead of for-loop. 2023-05-11 07:58:55 +01:00
68782f951b Cleanup: Vector supports random access. 2023-05-11 07:58:55 +01:00
Rubidium
6d1586dd49 Codechange: use std::string instead of char* for original editor strings 2023-05-10 23:15:09 +02:00
translators
7e1123c731 Update: Translations from eints
portuguese (brazilian): 30 changes by ericandradex
2023-05-10 18:43:36 +00:00
Loïc Guilloux
3c59b8e9ec Fix: disable "redundant move" warnings for GCC (#10803)
GCC warns about redundant std::move while clang warns when they are missing, so we silence the less harmful one
2023-05-10 17:35:11 +00:00
Patric Stout
922d7aa773 Update: help out translators and do the COMMA -> DECIMAL for them (#10802) 2023-05-10 16:09:58 +02:00
Michael Lutz
7e906c7c59 Change: Preserve orders and related settings where possible when moving engines around in a train. 2023-05-10 00:35:02 +02:00
Michael Lutz
07449be876 Codechange: A vehicle that is not a front engine can't be removed from a vehicle group, so just remove a pointless function call. 2023-05-10 00:35:02 +02:00
Rubidium
1ae7eb1594 Codechange: use std::map over SmallMap and std::string of stredup(char*) 2023-05-09 23:14:48 +02:00
Rubidium
12085d088c Cleanup: remove obsolete string_compare_type 2023-05-09 23:14:48 +02:00
Rubidium
bc389a86c9 Codechange: use std::string as std::map key, instead of stredup string 2023-05-09 23:14:48 +02:00
Rubidium
72082aa7d3 Codechange: use std::string for getting a script's name 2023-05-09 23:14:48 +02:00
Rubidium
f1fb6c95fe Add: case insensitive string comparator 2023-05-09 23:14:48 +02:00
Rubidium
6e3d3c0e7c Codechange: introduce std::string variant of sq_pushstring 2023-05-09 23:14:48 +02:00
f5158c8b79 Feature: Add search filter and name text to build waypoint window. 2023-05-09 23:03:14 +02:00
dc50ff807c Change: Remove incorrect minimal size. 2023-05-09 23:03:14 +02:00
b54d7f15ac Change: Reduce size of waypoint matrix to 3 x 2. 2023-05-09 23:03:14 +02:00
0513a6ccb0 Change: Use separate names for default stations/roadstops. 2023-05-09 23:03:14 +02:00
93d49fa8b3 Fix: Make scrollwheel work on panel behind waypoint matrix. 2023-05-09 23:03:14 +02:00
bf9caa425b Change: Units-system can convert from N to kN, don't preconvert.
This allows force to passed as is and avoid premature rounding.

The AI function "GetMaxTractiveEffort" still needs to return kN to avoid breaking the API.
2023-05-09 23:02:51 +02:00
e2f583a34f Change: Standardise unit conversions and allow decimal places.
Previously the decimal_places member was mostly ignored except for
specific conversions. {DECIMAL} with 0 is the same as {COMMA} so there
is no downside to allowing any conversion to have decimals.
2023-05-09 23:02:51 +02:00
3c2f87ce1f Change: Perform unit convert with a double-precision constant.
Unit conversion is only performed for display purposes, this does not
affect lock-step mechanics.

This replaces the old multiply and shift algorithm which relies on
choosing a multipler and shift combination that gets close. Some of these
multiply/shift combinations were quite inaccurate. We can just
use (close-to) real-world numbers instead.
2023-05-09 23:02:51 +02:00
644e310506 Fix: Incorrect y-position of monospace glyphs. (#10794) 2023-05-09 23:02:06 +02:00
Patric Stout
febe394806 Codechange: replace C-style strings with C++-style strings in textfile (#10772) 2023-05-09 19:35:50 +00:00
translators
90529ea48b Update: Translations from eints
catalan: 30 changes by J0anJosep
french: 25 changes by glx22
polish: 5 changes by pAter-exe
2023-05-09 18:44:36 +00:00
6998fbf71d Fix: WWT_TEXT with SetTextStyle did not work. (#10797)
FontSize was passed to incorrect parameter of DrawString function.
2023-05-09 17:23:37 +00:00
d68c4bbd2f Change: Use iterator when drawing industry cargo window. 2023-05-09 17:39:12 +01:00
cccf4953f7 Fix: Incorrect padding on industry cargo window. 2023-05-09 17:39:12 +01:00
882f06bf14 Fix: Support more than 256 stations/waypoints/roadstops per class. (#10793)
It was already possible to define more than 256 per class, but not possible
to use them as the index used in GUI and passed through commands was limited
to a byte.
2023-05-08 18:09:33 +00:00
Patric Stout
a05ae2497f Codechange: simplify how GetCharPosition() works 2023-05-08 19:21:42 +02:00
Patric Stout
60399e17bd Codechange: C++-ify the Layouter and related functions
They all now access a std::string_view, instead of a "const char *"
or std::string (in some cases).

Additionally, GetCharAtPosition and friends now return an index
instead of a "const char *", as it makes for a more clear interface.
2023-05-08 19:21:42 +02:00
Tyler Trahan
61d1b330d1 Change: Add padding to build vehicle text filter (#10792) 2023-05-08 17:21:29 +00:00
Patric Stout
aed36a609c Fix: [ICU] crash when trying to break a non-breaking run (#10791)
Clusters from harfbuzz are indexed from the start of the buffer,
not from the start of the run analyzed. This confuses other parts
of the code that do assume they are from the start of the run.
2023-05-08 16:09:47 +00:00
bc6a4b1d08 Fix: Set up default station/waypoint classes properly. (#10789) 2023-05-08 16:42:01 +01:00
J0anJosep
c4e6d80ecf Cleanup: Remove unnecessary hangar check. 2023-05-08 17:30:21 +02:00
Rubidium
68ff3fd062 Change: include fmt.h C++ headers in stdafx.h
This to prevent compilation issues between runs with and without precompiled
headers. Also remove the headers from the rest of the code base as they are
not needed there anymore, although they do relatively little harm.
2023-05-08 16:49:23 +02:00
Rubidium
192ed55462 Change: disable precompiled headers on Linux (GCC - Dedicated) target to ensure those still build 2023-05-08 16:49:23 +02:00
Rubidium
2955ff33d7 Change: use precompiled headers for stdafx.h and 3rdparty/fmt/format.h 2023-05-08 16:49:23 +02:00
878c5d8d85 Codechange: Use SetPosition() to clamp after changing count/capacity. 2023-05-07 20:25:44 +01:00
6202eae9d5 Codechange: Rely on Scrollbar::SetPosition to clamp.
Manually clamping scrollbar bounds before calling `SetPosition()` is doubling up work that the function already does.
2023-05-07 20:25:44 +01:00
d2034d9c38 Codechange: Scrollbar methods now accept size_t.
This clears up a lot of casts from size_t to int.
2023-05-07 20:25:44 +01:00
translators
923d1b0846 Update: Translations from eints
vietnamese: 5 changes by KhoiCanDev
2023-05-07 18:39:28 +00:00
kiwitreekor
3375f25b70 Fix: Var68 for station and roadstop was broken (#10784) 2023-05-07 19:04:34 +01:00
Tyler Trahan
98d809c33b Codechange: Don't use macros for DAYS_TILL and friends (#10746) 2023-05-07 05:25:24 -04:00
8bf62dac81 Codechange: Clean up build industry window. (#10779)
* Remove left-over code that treated an invalid list selection as 'fund
many', which is actually implemented as a separate button.
* Manual list management replaced with std::vector.
* Enabled state is only needed for the current selection.
* Selected index is not required only selected type.
2023-05-07 08:19:09 +01:00
a836edd5a7 Codechange: Scrollbar::UpdatePosition() will tell if the position changed. (#10777)
So we don't need to check this manually.
2023-05-06 19:45:32 +00:00
Rubidium
fb856e16c1 Codechange: replace some min/clamp constructs to ClampTo 2023-05-06 21:26:13 +02:00
Rubidium
19ec4e8beb Codechange: replace ClampToI32/U16 with ClampTo<int32_t/uint16_t> 2023-05-06 21:26:13 +02:00
Rubidium
969a3dc0f3 Codechange: introduce generic ClampTo function to clamp to the range of a type 2023-05-06 21:26:13 +02:00
Rubidium
e33b2afd87 Codechange: pass (uint) money as Money for CmdGiveMoney 2023-05-06 21:26:13 +02:00
Rubidium
4a5a9f57c4 Fix: conversion to smaller type warnings 2023-05-06 21:26:13 +02:00
translators
97b77f0251 Update: Translations from eints
english (au): 5 changes by krysclarke
english (us): 5 changes by 2TallTyler
korean: 5 changes by telk5093
italian: 5 changes by Rivarossi
russian: 5 changes by Ln-Wolf
finnish: 5 changes by hpiirai
turkish: 5 changes by densxd
portuguese: 5 changes by azulcosta
2023-05-06 18:39:19 +00:00
Michael Lutz
b14c5aff1f Fix: [Win32] Text line breaking did not properly handle punctuation characters. (#10775) 2023-05-06 16:15:40 +00:00
Tyler Trahan
0fc21b5686 Fix: Engine age is in months, not days (#10773) 2023-05-06 11:54:38 -04:00
Loïc Guilloux
31d1a323ef Fix #10771, 3901ef9: GRFConfig.filename is now a std::string (#10774) 2023-05-06 14:58:47 +00:00
b67cf7f94a Change: Replace ScriptLog data array with std::deque. (#10770)
Due to cyclic header dependency this requires moving the data types used
by ScriptLog out of the ScriptLog class.
2023-05-06 14:54:58 +00:00
translators
5dd54e2708 Update: Translations from eints
japanese: 10 changes by fmang
vietnamese: 14 changes by KhoiCanDev
dutch: 14 changes by Afoklala
polish: 1 change by pAter-exe
2023-05-05 18:42:16 +00:00
bda754ec83 Fix: Make all settingsgen 'warnings' fatal. (#10766)
Compilation should stop If settingsgen fails to complete properly.
2023-05-05 09:22:03 +01:00
Patric Stout
a7d3c79d79 Fix c6c3d0e6: restore string-based settings in network-private settings (#10765)
By accident the SDTC_SSTR got replaced with SDTC_VAR, which breaks
many of the settings in this file.
2023-05-05 07:08:57 +00:00
Rubidium
877349c13d Codechange: use std::string for text file name resolution 2023-05-05 08:54:29 +02:00
0b72297d57 Feature: Increase number of stations/roadstops per NewGRF. 2023-05-05 07:08:40 +01:00
bc7dfd7b46 Add: Station property 1C/1D to set name/classname.
These are an alternative to the original "generic" C4xx/C5xx method,
which can only assign strings to IDs up to 256.
2023-05-05 07:08:40 +01:00
d6f35a9fd6 Change: Add placeholders for unimplemented NewGRF station properties. 2023-05-05 07:08:40 +01:00
7a86615007 Feature: Remove limit of objects per NewGRF. 2023-05-05 07:08:40 +01:00
912eb68981 Change: Extend entity override manager and station spec lists to support 16 bit IDs. 2023-05-05 07:08:40 +01:00
e5c9a3e527 Change: Read Action 3 IDs as extended-bytes for all features.
This can be done because previous the value 0xFF (which indicates an
extended byte) was reserved for this purpose. Other features which may
not have mentioned reserving 0xFF do not allow this many IDs anyway.

This makes Action 3 consistent across all features. The allowable limits
for each feature do not change.
2023-05-05 07:08:40 +01:00
10baecd81f Change: Make Action 3 debug messages more consistent. 2023-05-05 07:08:40 +01:00
glx22
045a99dd23 Codechange: Remove STR_TINY_RIGHT_ARROW 2023-05-05 07:07:54 +01:00
glx22
222e37d319 Codechange: Remove TINY_BLACK_STATION 2023-05-05 07:07:54 +01:00
glx22
b2a36ff3cc Codechange: Remove STR_TINY_GROUP and STR_TINY_BLACK_VEHICLE 2023-05-05 07:07:54 +01:00
glx22
999057a4d8 Codechange: Remove STR_SHORT_DATE 2023-05-05 07:07:54 +01:00
glx22
49eb638563 Codechange: Remove STR_ORANGE_STRING1_WHITE and STR_ORANGE_STRING1_LTBLUE. 2023-05-05 07:07:54 +01:00
61407840c6 Codechange: Remove STR_BLACK_RAW_STRING. 2023-05-05 07:07:54 +01:00
0880616851 Codechange: Remove various STRING strings. 2023-05-05 07:07:54 +01:00
4767641c8c Codechange: Remove various INT strings. 2023-05-05 07:07:54 +01:00
d5fb9e7dc6 Codechange: Remove various DATE_LONG strings. 2023-05-05 07:07:54 +01:00
a2d7642195 Codechange: Remove STR_COMPANY_MONEY. 2023-05-05 07:07:54 +01:00
f1d0a26324 Codechange: Remove STR_TINY_BLACK_DECIMAL. 2023-05-05 07:07:54 +01:00
e18f688db5 Codechange: Remove various COMMA strings. 2023-05-05 07:07:54 +01:00
5e185d5328 Codechange: Draw tooltip text in black. 2023-05-05 07:07:54 +01:00
Rubidium
3901ef9760 Codechange: use std::string for the GRF filenames 2023-05-04 23:23:32 +02:00
Rubidium
f78aa1e720 Codechange: use std::unique_ptr to manager GRFErrors in GRFConfig 2023-05-04 23:23:32 +02:00
Rubidium
a312a6c1b2 Codechange: make md5sumToString std::string compatible 2023-05-04 23:23:32 +02:00
Rubidium
51c6b8c1e4 Codechange: use fmt::format_to for gamelog message creation over seprintf 2023-05-04 23:23:32 +02:00
Patric Stout
c6c3d0e6fa Fix: no_http_content_downloads and use_relay_service as private settings (#10762)
Basically, we don't need to know those values when people send in
crash reports.
2023-05-04 22:46:02 +02:00
Jonathan G Rennison
8d501f2db1 Fix #10741: Rail platforms left partially reserved after train crash (#10751) 2023-05-04 21:45:13 +01:00
7ccdefa1c1 Change: Increase vehicle random data from 8 to 16 bits. 2023-05-04 21:42:28 +01:00
4a5e413a6c Cleanup: Remove unnecessary VehicleRandomBits()
Simple Random() assignment to byte does the same.
2023-05-04 21:42:28 +01:00
translators
ca497ce356 Update: Translations from eints
japanese: 29 changes by fmang
danish: 25 changes by bscargo
polish: 29 changes by pAter-exe
2023-05-04 18:41:18 +00:00
Tyler Trahan
6501f84b4a Codechange: Move calendar date functions inside TimerGameCalendar (#10753) 2023-05-04 13:14:12 +00:00
translators
7669aac865 Update: Translations from eints
english (us): 14 changes by 2TallTyler
2023-05-03 18:40:51 +00:00
Patric Stout
62f9bdb939 Fix: [CI] no need to build unit-tests for releases (#10759)
We don't run them anyway. And LTO can be darn slow.
2023-05-02 23:43:16 +02:00
Patric Stout
018a26d9b6 Fix: crash in emscripten when saving games (#10758)
Don't allocate 128KB on stack, but rather on the heap.
2023-05-02 21:22:09 +00:00
Patric Stout
fbad57ecf7 Change: [CI] update emscripten and liblzma to the latest version (#10757) 2023-05-02 23:12:52 +02:00
39eff18754 Codechange: Use std::vector for gamelog GRFConfig comparisons. 2023-05-02 19:47:55 +01:00
00bf42353a Codechange: Place gamelog into its own class, along with internal data.
Data is now stored in vectors to avoid manual memory management and
passing lengths around.
2023-05-02 19:47:55 +01:00
translators
47a8d12f0e Update: Translations from eints
english (au): 14 changes by krysclarke
korean: 14 changes by telk5093
italian: 14 changes by Rivarossi
russian: 15 changes by Ln-Wolf
finnish: 14 changes by hpiirai
turkish: 14 changes by densxd
portuguese: 16 changes by azulcosta
2023-05-02 18:39:14 +00:00
Patric Stout
81d4fa6999 Feature: drop ICU-lx in favour of directly interfacing with harfbuzz
This means we have RTL support again with ICU 58+. It makes use of:
- ICU for bidi-itemization
- ICU for script-itemization
- OpenTTD for style-itemization
- harfbuzz for shaping
2023-05-01 22:17:56 +02:00
Patric Stout
9cb60768fe Codechange: split implementations of ParagraphLayouterFactory into their own file 2023-05-01 22:17:56 +02:00
translators
4cceaae8dc Update: Translations from eints 2023-05-01 18:39:20 +00:00
Tyler Trahan
aa8830f57a Feature: Filter engine build menu by name and NewGRF extra text (#10519) 2023-05-01 17:02:16 +00:00
Michael Lutz
908be59699 Fix: [Win32] Wrong multi-line text layout due to incorrect whitespace handling. 2023-05-01 16:31:59 +02:00
Michael Lutz
715234502c Fix: Typo in variable name. 2023-05-01 16:31:59 +02:00
Rubidium
1f3b7e2efd Codechange: use std::string instead of stredup for saveload error messages 2023-05-01 16:23:24 +02:00
Rubidium
8665404fe0 Codechange: use std::string instead of stredup for missing glyph error messages 2023-05-01 16:23:24 +02:00
Rubidium
a931378c52 Codechange: use std::string instead of stredup/free for ScanProgressWindow 2023-05-01 16:23:24 +02:00
Rubidium
aac95eeaf5 Codechange: use std::string instead of stredup/free for stories 2023-05-01 16:23:24 +02:00
Rubidium
3342967ad9 Codechange: use std::string instead of stredup/free for goals 2023-05-01 16:23:24 +02:00
cc44aa7438 Change: Split Game options into General, Graphics and Sound tabs. (#10674) 2023-05-01 12:58:22 +01:00
003bab3c8a Change: Size space for editbox clear button by interface scale. (#10749) 2023-04-30 23:11:00 +01:00
translators
cf3cb8d2a5 Update: Translations from eints
english (au): 4 changes by krysclarke
vietnamese: 4 changes by KhoiCanDev
korean: 4 changes by telk5093
russian: 1 change by Ln-Wolf
2023-04-30 18:40:41 +00:00
a816dd1d48 Change: Remove {TINY_FONT} from cargo abbreviation strings for other translations. 2023-04-30 11:47:53 +01:00
310b3a67ad Change: Remove {TINY_FONT} from cargo abbreviation strings for English. 2023-04-30 11:47:53 +01:00
0acc57583b Fix: Force cargo abbreviation to small font in station list. 2023-04-30 11:47:53 +01:00
6be6703498 Fix: Linkgraph legend assumes strings are small.
Ensure all linkgraph legend strings are drawn with FS_SMALL forced, so
that it does not rely on NewGRF authors.
2023-04-30 11:47:53 +01:00
35ba49bfb4 Change: Rename text colour NWidgetPart to SetTextStyle and add font size.
This allows to set both text colour and size for any widget with default
drawing.
2023-04-30 11:47:53 +01:00
Tyler Trahan
ba3de0383a Codechange: Pass more std::string to StringFilter::AddLine() (#10743) 2023-04-30 10:23:05 +02:00
Rubidium
ee9239d293 Fix c8299304: retain support ICU < 65 2023-04-30 00:42:15 +02:00
Patric Stout
73bdd4bdd7 Fix: [CI] typo in Windows release jobname (#10742) 2023-04-29 19:59:01 +00:00
translators
de08e29cd9 Update: Translations from eints
english (us): 4 changes by 2TallTyler
2023-04-29 18:42:05 +00:00
Rubidium
ee8b1dfbc3 Fix 4dd5f994: hotkey parsing was broken 2023-04-29 14:56:41 +02:00
Rubidium
397221b94a Codechange: Make ScenarioIdentifier use std::string for the filename 2023-04-29 13:23:34 +02:00
Rubidium
3a822fcd01 Codechange: Make FiosItem's name and title std::string 2023-04-29 13:23:34 +02:00
Rubidium
ee723f26ba Codechange: Make FileToSaveLoad's title std::string and simplify assignments 2023-04-29 13:23:34 +02:00
Rubidium
f0a1ddd81c Codechange: let FiosBrowseTo return a bool 2023-04-29 13:23:34 +02:00
Rubidium
c829930440 Codechange: replace strnatcmp with C++ string capable version 2023-04-29 12:07:45 +02:00
Rubidium
df19673fbd Codechange: let convert_to_fs accept std::string 2023-04-29 12:07:45 +02:00
Rubidium
b5f96808a1 Fix: FormatArrayAsHex returns gibberish instead of a hex array 2023-04-29 11:07:57 +02:00
Kuhnovic
3991e76c96 Fix #8177: Ships with max speed overflow to near-zero speed (#10695) 2023-04-29 09:33:01 +01:00
Rubidium
4dd5f994be Codechange: replace strncasecmp with case ignoring variant of StrStarts/EndsWith 2023-04-29 10:25:25 +02:00
Rubidium
86786a7af6 Codechange: introduce StrEqualsIgnoreCase/StrCompareIgnoreCase to replace strcasecmp 2023-04-29 10:25:25 +02:00
Patric Stout
36a0818bc5 Remove: buying/selling/owning company shares (#10709) 2023-04-29 10:16:49 +02:00
1a24016964 Fix: Set TC_NO_SHADE only for shaded engine in purchase list.
Additionally use TC_FORCE to prevent additional colours in the shaded text.
2023-04-28 23:12:07 +01:00
23c46e1abf Fix: #10735: {POP_COLOUR} fails if string is drawn with extra flags. 2023-04-28 23:12:07 +01:00
translators
3ed8c35dfe Update: Translations from eints
italian: 4 changes by Rivarossi
russian: 4 changes by Ln-Wolf
finnish: 4 changes by hpiirai
turkish: 4 changes by densxd
dutch: 6 changes by Afoklala
portuguese: 4 changes by azulcosta
2023-04-28 18:42:10 +00:00
Rubidium
b221fa3c5a Codechange: use fmt::format_to instead of seprintf to create the search URL 2023-04-28 19:53:03 +02:00
Rubidium
6a8b4f3e10 Codechange: use fmt::format_to instead of seprintf to fill the PNG metadata 2023-04-28 19:53:03 +02:00
Rubidium
ef3beef7e9 Codechange: use fmt::format_to instead of seprintf to write the savegame info 2023-04-28 19:53:03 +02:00
Rubidium
33c4fbff8f Codechange: use fmt::format_to instead of seprintf to fill load crash message 2023-04-28 19:53:03 +02:00
translators
d33993cca3 Update: Translations from eints 2023-04-27 18:39:56 +00:00
Patric Stout
a255b61514 Change: [CI] Use a custom name for matrix runs (#10723)
By default, GitHub adds all arguments of the matrix between ().
This is fine sometimes, but in other times it becomes a very
lengthy line.

With this commit, we decide what is between those (), making it
a lot more readable.
2023-04-27 20:15:09 +02:00
Patric Stout
f5fad88723 Change: base autosaves intervals on real time (instead of game time) (#10655)
There are two fundamental issues with autosave:
- When fast-forwarding, it saves way too often
- When paused, it never saves

Both makes no sense. Autosaves are meant to prevent you from
accidentally losing your work. The emphasis on "your" work.

To solve both issues, the autosave now works on real time. You
can select every 10 / 30 / 60 / 120 minutes, which are similar to
what the setting was in game-months.

When you pause, autosaving will stop. Unless you make any change
to the game; then it will continue to make autosaves, even so
the game is paused. Unpausing / pausing resets this mechanism.
2023-04-27 15:21:29 +00:00
57f2d70fef Change: Use cstdint instead of rolling our own types. (#10651) 2023-04-27 10:04:18 +02:00
Rubidium
9fe853f7b5 Codechange: use fmt::format instead of vseprintf for midi command formatting 2023-04-26 18:46:17 +02:00
Rubidium
c8ff6a9f7c Codechange: replace str_fmt with std::string constructs 2023-04-26 18:46:17 +02:00
Rubidium
fce4b5ea69 Codechange: use Debug over printf for dedicated forking output 2023-04-26 18:46:17 +02:00
Rubidium
75cd790ab9 Codechange: use fmt::format for FormatHexNumber 2023-04-26 18:46:17 +02:00
Rubidium
630d3bc053 Codechange: use fmt::format instead of printf for the NewGRF profiler 2023-04-26 18:46:17 +02:00
Rubidium
3105d0b09e Codechange: replace text-buf printf with fmt::format 2023-04-26 18:46:17 +02:00
Owen Rudge
173ed81dbe Change: [Actions] Upgrade import-codesign-certs dependency in macOS build workflow 2023-04-26 15:10:47 +01:00
Charles Pigott
80bd5ad727 Codechange: Use std::strto* variants everywhere (#10720) 2023-04-26 12:56:14 +01:00
Tyler Trahan
997c936893 Codechange: Don't use bytes for months in graph GUI 2023-04-26 07:14:03 -04:00
Tyler Trahan
930f0a16d8 Codechange: Define Date/Year/Month/Day within TimerGameCalendar class 2023-04-26 07:14:03 -04:00
20d2558f1b Fix: Clear church/stadium flags when copying house substitute specs. 2023-04-26 06:46:07 +01:00
64782cf005 Fix #10627: Houses subsitute specs should only be copied on first definition.
Before #10627, substitue specs were always copied despite redefinition.
2023-04-26 06:46:07 +01:00
7535eb65e2 Codechange: Use vector instead of mallloc/free for Action 6 data. (#10713) 2023-04-26 06:45:11 +01:00
1697dff744 Change: Hide all variants from UI when (display) parent is hidden. (#10708) 2023-04-25 20:34:10 +01:00
translators
5794590b36 Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
polish: 7 changes by pAter-exe
2023-04-25 18:41:18 +00:00
Rubidium
f74e26ca7e Codechange: replace error/usererror printf variant with fmt variant and rename 2023-04-25 17:55:09 +02:00
Rubidium
43c65a3fec Codechange: use std::string for base media filename/warning storage 2023-04-25 15:01:08 +02:00
b8f0513a72 Change: Draw and size video driver info like base set info.
This allows very long video driver information strings to wrap instead
of making the game options window very wide.
2023-04-25 13:27:22 +01:00
9aee502838 Change: Size Game Options description widgets after initial sizing.
Trying to update text widgets with free flowing multiline text during
UpdateWidgetSize(), as the final width is not yet known and so the
calculated height being incorrect, usually resulting in one or more
empty text lines.

The solution is to update the widget heights afterwards during
OnResize(), at which point the final widths are known. The window is
then resized if needed.

(Note this technique needs more attention if width can also change.)
2023-04-25 13:27:22 +01:00
e8df28d7f3 Add: parameter for ReInit() to reposition window to default. 2023-04-25 13:27:22 +01:00
55d981aec3 Add: Helper to update widget vertical size.
This avoids directly setting min_y outside widget code.
2023-04-25 13:27:22 +01:00
Tyler Trahan
6830e5f5f7 Cleanup: Don't use a magic number when closing processing industries (#10710) 2023-04-24 19:58:48 +00:00
Jonathan G Rennison
37392935dd Fix #10707: Incorrect type of days_in_transit in CargoPacket constructor (#10715) 2023-04-24 18:55:16 +00:00
translators
27e9a79988 Update: Translations from eints
finnish: 2 changes by hpiirai
portuguese: 1 change by azulcosta
2023-04-24 18:40:29 +00:00
Patric Stout
1c76e0904d Codechange: revive STR_TINY_BLACK_COMMA from its coma (#10714) 2023-04-24 18:33:39 +00:00
Tyler Trahan
2f495c015a Fix 7c6bf97: Don't change date and shift dates in the wrong order (#10711) 2023-04-24 17:33:03 +00:00
Patric Stout
31ad990831 Codechange: move tick-counter into TimerGameTick (#10712) 2023-04-24 16:55:40 +00:00
Patric Stout
7aa2b9ab0a Codechange: move all date-related variables inside the timer (#10706) 2023-04-24 15:56:01 +00:00
Rubidium
f5f6306af3 Codechange: use string/fmt instead of printf for ShowInfo(F) 2023-04-24 17:51:54 +02:00
Rubidium
8f24901843 Codechange: replace printf with PRINTF macros by fmt::format for scripts 2023-04-24 17:51:25 +02:00
Rubidium
484883e6e1 Cleanup: remove (unused) Squirrel code that used a hack to work around printf safety 2023-04-24 17:51:25 +02:00
Rubidium
5733142b0d Codechange: use string/fmt instead of printf for Squirrel's Raise_Error 2023-04-24 17:51:25 +02:00
Rubidium
8b93e45e22 Codechange: use string/fmt instead of printf for squirrel's PRINTFUNC 2023-04-24 17:51:25 +02:00
075671bcfc Codechange: Rename DECLARE_ENUM_AS_BIT_SET parameter to enum_type.
It works on enums not masks.
2023-04-24 09:17:37 +01:00
9f26e74e1e Codechange: Rename item_t to Item. 2023-04-24 09:17:37 +01:00
c3cea45ebc Codechange: Rename height_t/amplitude_t to Height/Amplitude. 2023-04-24 09:17:37 +01:00
3f811246b1 Codechange: Rename control_point_t to ControlPoint.
The _t suffix is reserved by POSIX 1003.1.
2023-04-24 09:17:37 +01:00
Tyler Trahan
7c6bf977e0 Cleanup: Fix and add comments to date cheat callback (#10699) 2023-04-23 21:20:56 +02:00
translators
e9f6bbada2 Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
galician: 36 changes by pvillaverde
korean: 14 changes by telk5093
italian: 1 change by Rivarossi
russian: 1 change by Ln-Wolf
turkish: 2 changes by densxd
2023-04-23 18:41:11 +00:00
9910240f0e Cleanup: Remove obsolete (Make)EnumPropsT. (#10697)
This was used by the command system to help extract p1/p2 parameters, which no longer happens.
2023-04-23 17:46:14 +01:00
370a8d77a4 Codechange: Use simple assignment to assign specs. 2023-04-23 15:58:27 +01:00
087654501b Codechange: Initialise specs with std::fill/std::copy instead of memset/memcpy. 2023-04-23 15:58:27 +01:00
d0c71f2a9e Codechange: Use reserve/emplace when initializing object definitions.
This avoids unnecessary initialization of objects.
2023-04-23 15:58:27 +01:00
Jonathan G Rennison
a967cc4de2 Fix: Violation of strict weak ordering in engine value/running cost sorter 2023-04-23 12:52:12 +01:00
Jonathan G Rennison
684c7bbc93 Fix: Violation of strict weak ordering in TownRatingSorter
If two unrated town names compare equal in TownNameSorter
2023-04-23 12:52:12 +01:00
translators
e437b8edae Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
vietnamese: 4 changes by KhoiCanDev
italian: 1 change by Rivarossi
russian: 1 change by Ln-Wolf
turkish: 1 change by EndChapter
portuguese: 1 change by azulcosta
2023-04-22 18:39:34 +00:00
Tyler Trahan
f45509848a Fix #10289: Don't silently fail when setting timetable start dates (#10690) 2023-04-21 22:36:06 +00:00
018f0f63a6 Change: Centre company face in scaled widget. (#10688) 2023-04-21 19:54:04 +01:00
translators
6b077ce25c Update: Translations from eints
english (us): 5 changes by 2TallTyler
vietnamese: 1 change by KhoiCanDev
russian: 1 change by Ln-Wolf
turkish: 33 changes by densxd
dutch: 5 changes by Afoklala
2023-04-21 18:42:16 +00:00
Tyler Trahan
ef60a93816 Fix #8302: Improve "Maintenance intervals are in percents" helptext (#10686) 2023-04-21 18:00:41 +00:00
Tyler Trahan
394192dde8 Codechange: Refactor timetable GUI (#10613) 2023-04-21 16:31:26 +01:00
Rubidium
7b539fa7c9 Fix: fmt's {:#04X} yields '0X00', not '0x0000'
Technically the 0X vs 0x is not a big problem, just not pretty. However, the
length also including the 0x results in unexpected behaviour, so it probably
better to not use it.
2023-04-20 21:39:57 +02:00
27b4b5d0a0 Codechange: Make GRF temporary engine data a vector. (#10685)
This replaces manual C-style realloc/memset/free.
2023-04-20 19:38:48 +00:00
translators
b56be83937 Update: Translations from eints
italian: 20 changes by Rivarossi
french: 5 changes by ZarTek-Creole
2023-04-20 18:42:29 +00:00
d5f9e04a55 Change: Failure to load a savegame is critical. (#10682)
Marking the error message critical ensures it is queued if multiple errors occured.
2023-04-20 17:04:07 +01:00
aeonofdiscord
36f5fe19fe Fix #10665: CheckEngines should ignore wagons when determining available vehicles at the start date. (#10673) 2023-04-19 05:41:12 -04:00
Rubidium
7088f5b7c7 Codechange: use string/fmt instead of printf for grfmsg 2023-04-18 23:21:08 +02:00
Rubidium
dfe52da1ea Codechange: use string/fmt instead of print for strgen warnings/errors/fatals 2023-04-18 23:20:53 +02:00
translators
1fd17148e1 Update: Translations from eints
english (au): 1 change by krysclarke
german: 1 change by SecretIdetity
russian: 1 change by Ln-Wolf
finnish: 5 changes by hpiirai
slovak: 15 changes by legitalk
portuguese: 1 change by azulcosta
2023-04-17 18:40:58 +00:00
SamuXarick
f8b5661d28 Change: Allow GS access to ScriptGroup functions 2023-04-17 17:59:16 +02:00
SamuXarick
f225f36c3d Change: Allow GS access to ScriptGameSettings.IsDisabledVehicleType 2023-04-17 17:59:16 +02:00
SamuXarick
fd26a44c9e Change: Allow GS access to more ScriptCompany functions 2023-04-17 17:59:16 +02:00
Andy
8b1960a41c Change: Allow GS access to more ScriptOrder functions 2023-04-17 17:59:16 +02:00
db573c8742 Fix #10660: Sprite Font scale affected by viewport zoom level limits. (#10668) 2023-04-17 00:14:03 +02:00
Charles Pigott
e20a6f8ebb Codechange: Optimise FormatNumber by removing seprintf calls (#10659) 2023-04-17 00:04:24 +02:00
Andy
15c3bc456f Change: extend callback 161 (engine name) with bit 0x22 for context 'Autoreplace - Vehicles in use' (#10666) 2023-04-17 00:02:32 +02:00
d949cfab24 Codechange: Use std:: features for NewGRF town names (#10631)
This removes manual memory (de-)allocation and list counting.
2023-04-16 21:24:54 +01:00
Rubidium
4491e45f3c Update: change {STRING} to {ZEROFILL_NUM} for STR_FORMAT_DATE_TINY/ISO 2023-04-16 21:06:20 +02:00
Rubidium
29b09523d1 Codechange: Use {ZEROFILL_NUM} instead of custom seprintf + {RAW_STRING} 2023-04-16 21:06:20 +02:00
e97bf271dc Codechange: Make SpriteType, CargoSortType, SourceType and ScriptType enum classes. (#10663)
This avoids a (soft) namespace conflict between the four ST_* enums.
2023-04-16 20:00:55 +01:00
translators
32c8e7feb8 Update: Translations from eints
english (au): 4 changes by krysclarke
vietnamese: 31 changes by KhoiCanDev
russian: 4 changes by Ln-Wolf
portuguese: 4 changes by azulcosta
2023-04-16 18:40:39 +00:00
Patric Stout
ed83c4b0da Change: replace per-AI "start_date" with a global "competitors_interval" (#10653)
The per-AI "start_date" is a lot of custom code, and was rarely
used in the way it was meant.

While at it, also ported this part over to the new timer system.
2023-04-16 20:14:22 +02:00
Rubidium
43a7e54067 Add: unit test functionality using catch2 2023-04-16 18:58:21 +02:00
Rubidium
88ead3f102 Add: catch2 v2.13.10 2023-04-16 18:58:21 +02:00
Rubidium
9b56505fec Codechange: split building into a library and executable 2023-04-16 18:58:21 +02:00
Rubidium
9e89eb5726 Codechange: move main function(s) to separate files 2023-04-16 18:58:21 +02:00
7b0797d1cd Codechange: Use unique ptrs for NewGRF specs. 2023-04-16 15:09:10 +01:00
ef6b307465 Change: Use std::vector for NewGRF spec tables.
Pointer space is allocated only for the number of IDs used, instead of
the max number of IDs for each feature.
2023-04-16 15:09:10 +01:00
15e6fc4eeb Codechange: Use iterator when mapping sprite groups. 2023-04-16 15:09:10 +01:00
Tyler Trahan
bc44158f9a Change: Allow overbuilding station and waypoint tiles (#10618) 2023-04-16 09:05:04 +02:00
translators
27b40da06a Update: Translations from eints
catalan: 14 changes by J0anJosep
portuguese: 20 changes by azulcosta
portuguese (brazilian): 15 changes by ericandradex
2023-04-15 18:39:48 +00:00
Charles Pigott
6fc28d649e Cleanup: Unused alloca definitions and includes 2023-04-15 16:57:00 +01:00
Charles Pigott
b282664242 Codechange: Replace all usages of alloca/AllocaM with more modern/less discouraged alternatives 2023-04-15 16:57:00 +01:00
rubidium42
b19f42ecd9 Codechange: Replace some p1/p2 parameter names with better names (#10658) 2023-04-15 15:11:41 +02:00
Patric Stout
387d5eb74f Codechange: validate the developer didn't schedule two timers on the same trigger/priority 2023-04-15 13:58:55 +02:00
Patric Stout
3ebc7ad16e Codechange: migrate all game-time-related timers to the new framework 2023-04-15 13:58:55 +02:00
Patric Stout
1ba4dcc924 Codechange: migrate all Window-related timers to the new framework
This means we also say goodbye to GUITimers.
2023-04-15 13:58:55 +02:00
Patric Stout
5e1bcee39b Codechange: introduce a framework for all our timers
IntervalTimer and TimeoutTimer use RAII, and can be used to replace
all the time-based timeouts, lag-detection, "execute every N" we
have.
As it uses RAII, you can safely use it as static variable, class
member, temporary variable, etc. As soon as it goes out-of-scope,
it will be safely removed.
This allows for much easier to read code when it comes to intervals.
2023-04-15 13:58:55 +02:00
rubidium42
730687080a Fix: Update some network documentation to match the new command system (#10657) 2023-04-15 09:10:09 +00:00
Tyler Trahan
646a7e625b Change: Use seconds for Linkgraph update settings (#10610) 2023-04-14 22:49:12 +02:00
translators
0e915c830c Update: Translations from eints
dutch: 15 changes by Afoklala
2023-04-14 18:39:51 +00:00
Tyler Trahan
8e04cba0c3 Change: Make tick length 27 milliseconds (#10607)
This makes a month last about 60 seconds, allowing the use of real-time units in game.

Co-authored-by: Niels Martin Hansen <nielsm@indvikleren.dk>
2023-04-14 14:50:19 +01:00
e5af5907ec Change: Make all dropdown lists extend width if necessary.
This removes the auto_width parameter from ShowDropDown(At).
2023-04-13 20:57:47 +01:00
5bc9d00735 Cleanup: Let GetStringBoundingBox deal with buffer. 2023-04-13 20:57:47 +01:00
701092003d Fix: DropDownListColourItem didn't provide width nor scale vertical padding. 2023-04-13 20:57:47 +01:00
Jonathan G Rennison
bb988f940e Fix #10638: Incorrect water infra total when building canal over object
In the case where the object is on an unowned canal tile and
the new canal tile is owned
2023-04-13 21:34:36 +02:00
translators
d04aae8428 Update: Translations from eints
danish: 18 changes by bscargo
2023-04-13 18:40:16 +00:00
ff55bfb787 Fix #10343: Don't extend town-disallowed roadtypes. (#10347)
Towns currently don't build disallowed roadtypes, however they should
also not extend disallowed roadtypes as well.

If the roadtype that cannot be extended happens to be the roadtype that
the town was going to build then this restriction is ignored.
2023-04-12 22:30:03 +01:00
5f99c8c4aa Fix: Extra viewport cannot be scrolled with right-click-close. (#10644) 2023-04-12 19:14:48 +00:00
Tyler Trahan
97cfd40649 Fix #10630: Don't allow shifting service date earlier than 0 (#10643) 2023-04-12 18:52:37 +00:00
translators
a0d8545f6c Update: Translations from eints
french: 15 changes by glx22
2023-04-12 18:42:18 +00:00
06b78a7299 Fix: Don't double-pad existing size when adding widget padding.
UpdateWidgetSize's size parameter already includes padding.
2023-04-12 18:43:15 +01:00
d93f96a442 Fix: Account for extra dropdown list padding. 2023-04-12 18:43:15 +01:00
Jonathan G Rennison
e17420777a Fix #10637: Incorrect water infra total when building multi-tile object
Wrong tile used in ownership checks
2023-04-12 16:50:45 +02:00
3b2eb11fe8 Codechange: Use cached name for all station/industry/town name formatting. (#10634)
This reuses an existing name caching mechanism to avoid "recalculating" names every time.
2023-04-11 22:50:22 +02:00
translators
d7f0c5d6d8 Update: Translations from eints
russian: 3 changes by Ln-Wolf
finnish: 7 changes by hpiirai
polish: 17 changes by pAter-exe
2023-04-11 18:42:26 +00:00
translators
9e69556e2f Update: Translations from eints
english (au): 13 changes by krysclarke
english (us): 15 changes by 2TallTyler
russian: 12 changes by Ln-Wolf
2023-04-10 18:39:57 +00:00
ce046f6d17 Fix: Abort loading savegame if road vehicle is on invalid road type. (#10622)
This can happen if NewGRFs are missing so that engine or road type definitions are wrong.
2023-04-10 19:23:18 +01:00
Charles Pigott
ce24709576 Add: Some additional debugging information when chunk sizes are incorrect 2023-04-10 18:58:48 +01:00
Charles Pigott
8aea13a85b Codechange: Use fmt for SlErrorCorruptFmt 2023-04-10 18:58:48 +01:00
246ba6f00a Fix 8361cf5a73: Missing bounds check for house specs. (#10625) 2023-04-10 15:00:34 +00:00
dP
e2f1cd44dc Change: Increase max cargo age and let min cargo payment approach zero. (#10596)
Co-authored-by: Michael Lutz <michi@icosahedron.de>
2023-04-10 12:34:28 +02:00
Artin Alavi
770df65141 Update: [Dev] Improve .editorconfig with C++ formatting rules based on OpenTTD code style (#10104) 2023-04-09 22:39:41 +02:00
translators
58e629ca84 Update: Translations from eints
korean: 8 changes by telk5093
russian: 7 changes by Ln-Wolf
finnish: 8 changes by hpiirai
2023-04-09 18:39:31 +00:00
078e27bd84 Fix #10619: Crash loading linkgraph for older savegames. (#10620) 2023-04-09 19:28:55 +01:00
Rubidium
c6ff7dad68 Add: compile time "unit tests" for GetPartialZ consistent 2023-04-09 19:00:26 +02:00
Rubidium
41ef7c88af Codechange: make a numer of Slope related functions constexpr 2023-04-09 19:00:26 +02:00
Rubidium
9d2a0f3d0b Change: make GetPartialZ consistent, meaning Z of adjacent slopes continue
Previously, on a straight line of a one corner up slope with the adjacent
steep sloop the Z would increase one step every two sub pixels, except for one
case where one sub pixel is skipped. Similarly, a steep slope with two
adjacent one corner up slopes, would have a bump in the height line along the
diagonal whenever it enters/leaves the steep slope tile.
2023-04-09 19:00:26 +02:00
Rubidium
1fcd69096c Fix: do not update a RV's Z-position when stationary while turning
When the direction of a RV changes the Z-position update logic was called,
which did nothing to the Z-position because that is only changed every other
step. By chance/luck this never triggered with RV's turning around, until
making the partial Z calculations consistent and moving the locations where
the Z-position is changed, causing the Z-position to be changed twice for
the RV that stayed at the same location.
2023-04-09 19:00:26 +02:00
Rubidium
e8af8daa68 Codechange: pass "ground vehicle" to GetTileSlopeZ since for tunnel/bridges there are two states
Previously it checked the position in non-driving direction to "guess" whether
a ground vehicle was using the function, so on tunnels/bridges it could either
return the Z of the (virtual) ground compared to the Z of the path the vehicle
would take.
2023-04-09 19:00:26 +02:00
Alberth289346
1321e48465 Fix: Update top toolbar tooltips for added features. (#10616) 2023-04-09 13:52:04 +02:00
Tyler Trahan
97bdf99239 Codechange: Add a property to graph windows for whether to draw dates (#10608) 2023-04-08 19:10:17 +00:00
translators
39c6b3def1 Update: Translations from eints
english (au): 2 changes by krysclarke
russian: 2 changes by Ln-Wolf
2023-04-08 18:46:15 +00:00
Tyler Trahan
0de5eb53fa Codechange: Use constants for service interval max/min/default values (#10611) 2023-04-08 18:04:30 +00:00
Tyler Trahan
1691640603 Fix: Specify units for value of share trading age setting (#10612) 2023-04-08 17:51:52 +00:00
f1144de509 Feature: Separate rail/road and sea/air velocity units, and add knots. (#10594)
This is achieved by packing vehicle type along with the velocity so that
the string system can decode and pick the appropriate unit.
2023-04-08 12:26:13 -04:00
glx22
3a48d6e60f Fix 991a797: [Script] Allow STRINGN consumption to be different than expected 2023-04-08 00:14:12 +02:00
Jonathan G Rennison
43cea852a6 Fix 41b414b: Validate RAW_STRING parameter values in game_script mode 2023-04-08 00:14:12 +02:00
47e12a8790 Codechange: Check that CompanyMask fits into 16 bits during compilation. 2023-04-07 22:09:55 +01:00
5199881a8d Codechange: Use correct type for linkgraph company mask. 2023-04-07 22:09:55 +01:00
65e0b0dcb7 Codechange: Be consistent with how company masks are set to all. 2023-04-07 22:09:55 +01:00
08977828cc Fix: Check ID for name is within bounds. 2023-04-07 22:09:28 +01:00
cd6c04a663 Fix: Check station ID is within bounds when copying layouts. 2023-04-07 22:09:28 +01:00
8361cf5a73 Fix: Check sprite group mapping ID is within bounds of feature. 2023-04-07 22:09:28 +01:00
96f4eb3681 Codechange: Check NewGRF feature is defined before processing any sprite group mapping.
Previously this was checked after loading ids, or repeatedly checked for
each item.
2023-04-07 22:09:28 +01:00
04215afe3f Codechange: Replace roadstop spec limit magic number with constant. 2023-04-07 22:09:28 +01:00
translators
9246789fd3 Update: Translations from eints
spanish (mexican): 2 changes by GNosii
vietnamese: 2 changes by KhoiCanDev
czech: 1 change by jachymozo
romanian: 10 changes by bnegrut
danish: 3 changes by bscargo
2023-04-07 18:39:12 +00:00
Loïc Guilloux
e4c511d403 Fix #10578: Allow to select any version of AI/GS from GUI (#10604) 2023-04-07 19:33:07 +02:00
82c70ed3b8 Change: Expose ObjectSpec vector to simplify iteration. 2023-04-02 22:42:38 +01:00
1f46f080f0 Codechange: Store objectspecs in std::vector instead of flat array. 2023-04-02 22:42:38 +01:00
93197f58b7 Codechange: Bind objectspecs to classes once all finalised. 2023-04-02 22:42:38 +01:00
02961fd7af Codechange: Use std::vector for NewGRF class lists. 2023-04-02 22:42:38 +01:00
73474b08fe Fix: Clicking on editbox clear button didn't take account of padding. (#10583) 2023-03-31 16:07:15 +01:00
c1077212d7 Codechange: Use a shared_ptr for viewport overlay. (#10586) 2023-03-31 16:06:36 +01:00
translators
c905824248 Update: Translations from eints
chinese (traditional): 14 changes by inAndyPao
danish: 1 change by bscargo
2023-03-28 18:43:33 +00:00
Tyler Trahan
e26d3de5fb Doc: Add guide to releasing OpenTTD (#10563) 2023-03-26 11:08:37 +02:00
Tyler Trahan
3611082f8e Codechange: [CodeQL] Disable CodeQL check on trivial switch statements (#10537) 2023-03-26 09:35:44 +02:00
Loïc Guilloux
9642e87bc8 Fix: [Script] Access to enum/consts defined outside of main.nut (#10573) 2023-03-25 23:07:47 +01:00
Tyler Trahan
0bf6f82305 Cleanup: Don't mix switches and early returns in widget selection 2023-03-25 18:03:16 -04:00
Tyler Trahan
066ae6f3fb Codechange: Simplify some CodeQL-flagged trivial switches 2023-03-25 18:03:16 -04:00
translators
a15e584e40 Update: Translations from eints
japanese: 27 changes by fmang
chinese (simplified): 12 changes by XiaoJi-Game
2023-03-25 18:41:51 +00:00
translators
24e9af83aa Update: Translations from eints
japanese: 22 changes by fmang
2023-03-24 18:44:41 +00:00
translators
83eb73a9b2 Update: Translations from eints
japanese: 12 changes by fmang
2023-03-23 18:42:29 +00:00
translators
1d915214a1 Update: Translations from eints
japanese: 31 changes by fmang
2023-03-21 18:42:37 +00:00
translators
d15a14bd9e Update: Translations from eints
japanese: 32 changes by fmang
danish: 7 changes by bscargo
2023-03-20 18:45:00 +00:00
Tyler Trahan
e5438891e2 Cleanup: Keep spacing saveload versions by groups of five (#10576) 2023-03-19 11:02:54 -04:00
translators
1424b7b49e Update: Translations from eints
french: 14 changes by ZarTek-Creole
2023-03-18 18:42:21 +00:00
translators
3254d65b3e Update: Translations from eints
swedish: 17 changes by joeax910
czech: 13 changes by jachymozo
danish: 3 changes by bscargo
2023-03-17 18:43:43 +00:00
translators
0bf6d80cd7 Update: Translations from eints
danish: 161 changes by bscargo
2023-03-16 18:45:39 +00:00
Rubidium
24b5033a06 Fix #10568: "can savegame be loaded check" failed in dedicated server
* If loading fails, it usually returns SL_REINIT which doesn't trigger check
 * If savegame has NewGRFs, it complains NewGRFs are not allowed in intro game
2023-03-15 22:14:29 +01:00
translators
be69aa6257 Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
korean: 3 changes by telk5093
german: 30 changes by Wuzzy2
slovak: 14 changes by legitalk
dutch: 12 changes by Afoklala
2023-03-11 18:41:57 +00:00
Limyx826
64719f0e1c Doc: Add Coding Style into the repo for easier access (#10512) 2023-03-10 13:40:12 -05:00
e999aa2923 Fix: Don't (briefly) switch from title-only playlist on menu screen.
Switching playlist while on the menu screen now only changes the playlist
that will be used when out of the menu screen.
2023-03-09 20:35:24 +00:00
3b90b85439 Change: Allow jukebox lists to fill window width. 2023-03-09 20:35:24 +00:00
0c4e2ce114 Change: Resize jukebox when changing music set. 2023-03-09 20:35:24 +00:00
1ec34acb51 Fix: Truncated music-set song names cause warning log.
The music-set does not need to be selected for this to occur.

Resolved by using std::string instead of fixed buffer for song names,
which avoids manual string copying and removes the length limit.
2023-03-09 20:35:24 +00:00
2d3250923c Fix #10554: Let Scrollbar::SetPosition clamp instead of assert. (#10555) 2023-03-09 10:19:58 -05:00
Rubidium
1e4a89177e Fix: crashes to desktop from game scripts when companies disappear
When a game script is in company mode, it pretends to be another company. When
that company disappear (bankruptcy/merger), the game script still uses that
company and it keeps calling functions as if it is that company.

For example, ScriptEngine::IsBuildable internally dereferences Company without
checks, causing a null dereference for any ScriptEngine function when called
from a company scope of a company that has disappeared.

Guard against this by extending the ScriptCompanyScope::IsValid check to also
check for the company still being active.
2023-03-08 22:33:47 +01:00
Rubidium
717f79ff22 Add: deity mode enforcement checks to functions with command or company access
Command functions are those that call ScriptObject::Command, and functions
with company access are any that call ScriptObject::GetCompany. This is a bit
over-protective, but having the check everywhere makes it easier to validate
that no check is missing automatically instead of by review.
2023-03-08 22:33:47 +01:00
Rubidium
8d443d1379 Add: company mode enforcement checks to functions with command or company access
Command functions are those that call ScriptObject::Command, and functions
with company access are any that call ScriptObject::GetCompany. This is a bit
over-protective, but having the check everywhere makes it easier to validate
that no check is missing automatically instead of by review.
2023-03-08 22:33:47 +01:00
Rubidium
534f2419ad Add: precondition checks to functions that work with both valid company and deity
These are functions that either use ScriptObject::Command or ScriptObject::GetCompany.
This is a bit over-protective, but having the check everywhere makes it easier to
validate that no check is missing automatically instead of by review.

At this moment these checks will not do anything useful, as either IsValid or
IsDeity from ScriptCompanyMode returns true, but that will change later.
2023-03-08 22:33:47 +01:00
Rubidium
2fffde0891 Add: workflow and script for checking missing mode enforcements 2023-03-08 22:33:47 +01:00
Rubidium
a79f97c022 Change: upon an invalid company mode, set ERR_PRECONDITION_INVALID_COMPANY instead of ERR_PRECONDITION_INVALID 2023-03-08 22:33:47 +01:00
Joan Josep
d80f193e74 Fix: Improve grfmessage for ShipVehicleChangeInfo. (#10558) 2023-03-08 20:59:01 +00:00
translators
4af7f3e645 Update: Translations from eints
catalan: 13 changes by J0anJosep
2023-03-08 18:48:34 +00:00
Jonathan G Rennison
c74dfe393f Fix #10556: Duplication of road infrastructure count updates (#10557)
When building a road stop
2023-03-08 18:38:19 +00:00
Rubidium
3287acd114 Fix 13528bfcd0: bank balance command allows int64, GS was limited to int32 2023-03-07 23:20:04 +01:00
b6609d1833 Fix: Network server highlight invisible with RTL layout. 2023-03-07 22:05:22 +00:00
translators
df2b66ad5d Update: Translations from eints
english (au): 14 changes by krysclarke
romanian: 3 changes by bnegrut
finnish: 10 changes by hpiirai
2023-03-07 18:49:32 +00:00
Rubidium
83946ca31d Codechange: use GSCompanyMode::IsValid, IsDeity, and the precondition helpers
Direct 1:1 replacements in the code, and comments now refer to either
GSCompanyMode::IsValid or GSCompanyMode::IsDeity instead of several variations
on "company mode active" or "no company mode active".
2023-03-06 22:34:09 +01:00
Rubidium
cada2ca310 Add: GSCompanyMode::IsValid and IsDeity, and precondition enforcement helpers 2023-03-06 22:34:09 +01:00
translators
665a73b3c7 Update: Translations from eints
english (us): 12 changes by 2TallTyler
korean: 14 changes by telk5093
portuguese: 12 changes by azulcosta
polish: 16 changes by pAter-exe
2023-03-06 18:49:27 +00:00
glx22
ca149447d7 Codechange: Use SQInteger for generic numbers in script_window 2023-03-06 00:32:12 +01:00
glx22
f752d96125 Codechange: Use SQInteger for generic numbers in script_vehicle 2023-03-06 00:32:12 +01:00
glx22
4e48bf2e16 Codechange: Use SQInteger for generic numbers in script_town 2023-03-06 00:32:12 +01:00
glx22
18fe0a4046 Codechange: Use SQInteger for generic numbers in script_tilelist 2023-03-06 00:32:12 +01:00
glx22
cada18a6f8 Codechange: Use SQInteger for generic numbers in script_tile 2023-03-06 00:32:12 +01:00
glx22
07b73a8c02 Codechange: Use SQInteger for generic numbers in script_subsidy 2023-03-06 00:32:12 +01:00
glx22
cd80b31d19 Codechange: Use SQInteger for generic numbers in script_storypage 2023-03-06 00:32:12 +01:00
glx22
a9a55f2153 Codechange: Use SQInteger for generic numbers in script_station 2023-03-06 00:32:12 +01:00
glx22
446ebaa6b9 Codechange: Use SQInteger for generic numbers in script_road 2023-03-06 00:32:12 +01:00
glx22
4f6a2f31b5 Codechange: Use SQInteger for generic numbers in script_rail 2023-03-06 00:32:12 +01:00
glx22
cb2e76aae3 Codechange: Use SQInteger for generic numbers in script_priorityqueue 2023-03-06 00:32:12 +01:00
glx22
777b4d0987 Codechange: Use SQInteger for generic numbers in script_order 2023-03-06 00:32:12 +01:00
glx22
49ea69fdef Codechange: Use SQInteger for generic numbers in script_objecttype 2023-03-06 00:32:12 +01:00
glx22
0293fd41e5 Codechange: Use SQInteger for generic numbers in script_news 2023-03-06 00:32:12 +01:00
glx22
f22903ab14 Codechange: Use SQInteger for generic numbers in script_newgrf 2023-03-06 00:32:12 +01:00
glx22
ca67075397 Codechange: Use SQInteger for generic numbers in script_map 2023-03-06 00:32:12 +01:00
glx22
a225fda9fe Codechange: Use SQInteger for generic numbers in script_list 2023-03-06 00:32:12 +01:00
glx22
74ab9ee9dd Codechange: Use SQInteger for generic numbers in script_league 2023-03-06 00:32:12 +01:00
glx22
367b2ba6d1 Codechange: Use SQInteger for generic numbers in script_infrastructure 2023-03-06 00:32:12 +01:00
glx22
5eaf9d39bf Codechange: Use SQInteger for generic numbers in script_industrytype 2023-03-06 00:32:12 +01:00
glx22
6671994655 Codechange: Use SQInteger for generic numbers in script_industry 2023-03-06 00:32:12 +01:00
glx22
8eb35633ec Codechange: Use SQInteger for generic numbers in script_group 2023-03-06 00:32:12 +01:00
glx22
6ca8499e6a Codechange: Use SQInteger for generic numbers in script_goal 2023-03-06 00:32:12 +01:00
glx22
e784915b27 Codechange: Use SQInteger for generic numbers in script_gamesettings 2023-03-06 00:32:12 +01:00
glx22
6b8b4c392f Codechange: Use SQInteger for generic numbers in script_engine 2023-03-06 00:32:12 +01:00
glx22
2f40bf8097 Codechange: Use SQInteger for generic numbers in script_date 2023-03-06 00:32:12 +01:00
glx22
424ae74504 Codechange: Use SQInteger for generic numbers in script_companymode 2023-03-06 00:32:12 +01:00
glx22
89c0841d0a Codechange: Use SQInteger for generic numbers in script_company 2023-03-06 00:32:12 +01:00
glx22
7727323dbe Codechange: Use SQInteger for generic numbers in script_cargomonitor 2023-03-06 00:32:12 +01:00
glx22
40424601c6 Codechange: Use SQInteger for generic numbers in script_cargo 2023-03-06 00:32:12 +01:00
glx22
83826b1793 Codechange: Use SQInteger for generic numbers in script_bridgelist 2023-03-06 00:32:12 +01:00
glx22
58bf2f7176 Codechange: Use SQInteger for generic numbers in script_bridge 2023-03-06 00:32:12 +01:00
glx22
73561802cb Codechange: Use SQInteger for generic numbers in script_airport 2023-03-06 00:32:12 +01:00
glx22
b6f3552e4b Fix: [Script] Inconsistent precondition failure return values 2023-03-06 00:32:12 +01:00
glx22
e06a666fa2 Fix: remove ScriptController constructor from API documentation 2023-03-06 00:32:12 +01:00
glx22
67a4c5e0db Codechange: Use {fmt} for script_admin JSON generation 2023-03-06 00:32:12 +01:00
glx22
ce8cde3b8d Fix: [Script] Detect circular references in ScriptText 2023-03-05 22:24:08 +01:00
glx22
9a957f1d4b Change: [Script] Improve ScriptText validation error messages 2023-03-05 22:24:08 +01:00
Rubidium
8fa61533f0 Fix 30ae072: when a road type is hidden, towns may not build them even when that flag is set 2023-03-05 22:01:54 +01:00
translators
e60632bce6 Update: Translations from eints
italian: 12 changes by Rivarossi
russian: 14 changes by Ln-Wolf
finnish: 2 changes by hpiirai
portuguese (brazilian): 14 changes by ericandradex
2023-03-05 18:44:04 +00:00
Rubidium
30ae07269d Fix: game scripts must not build with non-existing road types 2023-03-05 07:17:38 +01:00
dP
01ebfad809 Fix 3719f60: Crash when copying non-station orders (#10540) 2023-03-04 22:52:30 +00:00
translators
16a7bc54b3 Update: Translations from eints
finnish: 2 changes by hpiirai
catalan: 2 changes by J0anJosep
2023-03-04 18:44:24 +00:00
Jonathan G Rennison
87f4d37de3 Fix #10522: Link graph line tooltip test for vertical lines (#10524) 2023-03-03 17:37:17 -05:00
Tyler Trahan
3719f60de0 Add: Use specific error message when vehicle cannot go to station/waypoint 2023-03-03 17:11:14 -05:00
Tyler Trahan
44848f4edf Add: CommandCost supports an optional second error string 2023-03-03 17:11:14 -05:00
dP
e3169c73bd Fix: Restore using founder client name as company manager name (#10535) 2023-03-03 16:04:02 -05:00
translators
ec8b2836df Update: Translations from eints
english (us): 2 changes by 2TallTyler
dutch: 2 changes by Afoklala
polish: 3 changes by pAter-exe
2023-03-03 18:44:33 +00:00
translators
58aa769282 Update: Translations from eints
vietnamese: 2 changes by KhoiCanDev
italian: 2 changes by Rivarossi
russian: 2 changes by Ln-Wolf
turkish: 3 changes by EndChapter
portuguese: 2 changes by azulcosta
2023-03-02 18:50:41 +00:00
Loïc Guilloux
2a2e51765a Cleanup 54db96b: Left-over function declaration (#10528) 2023-03-01 23:53:50 +01:00
translators
9bdcbc5af7 Update: Translations from eints
french: 3 changes by glx22
2023-03-01 18:47:27 +00:00
Jonathan G Rennison
0e4b716815 Fix: O(N^2) cost of Station::RecomputeCatchmentForAll
Station::RemoveFromAllNearbyLists does not need to be called when
all station nearby lists have been cleared and are being regenerated.
2023-03-01 16:54:57 +01:00
Jonathan G Rennison
5d0ad5625b Fix : [NewGRF] Object and road stop ignore property handlers (#10525)
* Fix: IgnoreObjectProperty did not handle object property 0x18

* Fix: IgnoreRoadStopProperty did not handle properties 0x0E - 0x12, 0x15
2023-03-01 01:19:39 +01:00
Zachary
e17c82e32b Add: maximum number of companies allowed to the client list 2023-02-28 20:52:46 +01:00
translators
6f9b3fa964 Update: Translations from eints
chinese (traditional): 7 changes by inAndyPao
2023-02-28 18:45:57 +00:00
glx22
41b414bc1c Change: [Script] Restore support of {RAW_STRING} in ScriptText 2023-02-28 18:53:17 +01:00
glx22
991a797e09 Change: [Script] Validate ScriptText parameters type and amount 2023-02-28 18:53:17 +01:00
Rubidium
728973859d Change: [Script] Automate the ScriptObject reference counting 2023-02-28 18:53:17 +01:00
glx22
a1fc4d5c0e Codechange: [Script] Merge the 3 ScriptText param arrays 2023-02-28 18:53:17 +01:00
glx22
af15dca316 Change: [Script] Extract params info from GS strings 2023-02-28 18:53:17 +01:00
Tyler Trahan
6e52ceab96 Feature: Industry directory text filter (#10518) 2023-02-28 12:20:41 -05:00
Rubidium
1eefe1c3a0 Codechange: hide Tile(Extended) into the Tile structure 2023-02-28 07:11:48 +01:00
Rubidium
580d0a6343 Codechange: make use of Tile in for all direct map accesses 2023-02-28 07:11:48 +01:00
Rubidium
7a6452d3ef Codechange: introduce Tile class for accessing map data of a single tile 2023-02-28 07:11:48 +01:00
Rubidium
7a1816a6cd Codechange: rename Tile to TileBase to be able to introduce a new Tile class 2023-02-28 07:11:48 +01:00
Rubidium
0fb0469e47 Codechange: introduce iterator to iterate over the Tiles of a Map
Note: this version is using TileIndex, but that changes later
2023-02-28 07:11:48 +01:00
Eric Long
20a1b24b45 Fix: build on platforms without native atomic 2023-02-27 17:11:29 +01:00
Chenshu Yu
eabb9db0bb Fix #9810: 'Rebuilding' a through road stop costs money (#9852) 2023-02-27 08:59:42 +00:00
Patric Stout
6fcc8727f5 Change: [Actions] cancel previous run if pushing new PR
Lately we had a few times that people pushed to their PR branch
a few times to make small changes. Sadly, this triggers all CIs
every time, which takes ~20 minutes. As we are limited in the
amount of runners we get assigned to us, this means all other CI,
even for other repositories within OpenTTD, are delayed too.

We can avoid this by simply cancelling old runs when a new PR is
pushed. There is a downside: sometimes people already push a new
commit, but still want to know if the old one passed. That will
no longer be possible with this change.
2023-02-26 23:33:15 +01:00
dP
b0542c8c49 Codechange: Don't store tree counter in the map array (#10018) 2023-02-26 16:39:44 -05:00
SamuXarick
6eabbaa751 Fix #10469, 5e14a20: [Script] League Table rating element is a int64 everywhere else 2023-02-26 22:25:13 +01:00
Michael Lutz
aab580e0ac Codechange: [Linkgraph] Drop node/edge wrappers from LinkGraph. 2023-02-26 21:41:24 +01:00
Michael Lutz
4d3da0cf14 Codechange: [Linkgraph] Drop node/edge wrappers from LinkGraphJob. 2023-02-26 21:41:24 +01:00
Michael Lutz
7352f812e6 Codechange: [Linkgraph] Only store present link graph edges and not all possible edges. 2023-02-26 21:41:24 +01:00
Michael Lutz
178249e7cc Codechange: Saveload macros for entries with a custom table name. 2023-02-26 21:41:24 +01:00
Michael Lutz
8f851ead70 Codechange: [Linkgraph] Split annotation for demand between nodes from the edge annotations. 2023-02-26 21:41:24 +01:00
Michael Lutz
564de01d66 Remove: SmallMatrix be gone. 2023-02-26 21:41:24 +01:00
Michael Lutz
fe27db3dfd Codechange: [Linkgraph] Store edges in each node and not in a global matrix. 2023-02-26 21:41:24 +01:00
Niels Martin Hansen
2fee8ecdda Add #7525: Allow autoreplace with same model vehicle 2023-02-26 21:29:25 +01:00
Jonathan G Rennison
4c1406a4b5 Add: NewGRF road stops 2023-02-26 21:28:30 +01:00
Tyler Trahan
a18182e24b Revert 92c7551: Line drawing algorithm fix broke other cases (#10497)
This reverts commit 92c755161d.
2023-02-26 19:23:31 +00:00
translators
07fbd19da3 Update: Translations from eints
luxembourgish: 8 changes by phreeze83
2023-02-26 18:45:57 +00:00
Rubidium
947a789bf6 Codechange: split large function into smaller steps and simplify logic 2023-02-25 23:57:36 +01:00
Rubidium
8cbf1be9d6 Codechange: split large function into smaller functions with self-explanatory names 2023-02-25 23:57:36 +01:00
Rubidium
a409e4b026 Add: documention to large functions that have too little documentation according to CodeQL 2023-02-25 23:57:36 +01:00
translators
2561fad5d4 Update: Translations from eints
romanian: 1 change by bnegrut
2023-02-25 18:45:15 +00:00
dP
c73b88ddca Fix: Don't send unused tile field over the network (#10507) 2023-02-24 22:50:11 +01:00
Michael Lutz
9b3326e3fd Codechange: [Script] Use std::vector instead of a hand-rolled alternative. 2023-02-24 21:46:27 +01:00
Michael Lutz
ca3cb4d2ef Codechange: [Script] Use a class template instead of a function template for squirrel type conversion.
Class templates allow using partial template specialization, which is useful in
case one wants to have a type conversion on a type that is itself templated.
2023-02-24 21:46:27 +01:00
translators
187d330177 Update: Translations from eints
spanish (mexican): 1 change by GNosii
2023-02-24 18:48:34 +00:00
SamuXarick
b52b29b1a4 Change: Avoid crashing to the side of a train
When a road vehicle is already running on a multi level crossing, and a train shows up ahead, don't make the road vehicle crash on the side of the train.
2023-02-22 20:09:02 +01:00
SamuXarick
8351b97f52 Add: [Script] Labels for negative values of a setting 2023-02-21 00:28:21 +01:00
SamuXarick
376820c0b6 Doc: [Script] Update info descriptions 2023-02-21 00:28:21 +01:00
SamuXarick
bb2ac8b3c4 Fix: [Script] Save config item values up to 10 digits + 1 for sign + 1 for termination, enough to fit min and max int 2023-02-21 00:28:21 +01:00
SamuXarick
fde7028a95 Fix #10059: [Script] Let custom values on a config item be up to 10 digits + 1 for sign 2023-02-21 00:28:21 +01:00
SamuXarick
7b1fd3e37f Fix #10059: [Script] Clamp config item values to int32
Also prevent random_deviation to be below 0.
2023-02-21 00:28:21 +01:00
Nik Nyby
92c755161d Fix #10222: Adjust line drawing algorithm (#10491) 2023-02-20 16:18:25 -05:00
translators
8778949b6a Update: Translations from eints
english (us): 1 change by nikolas
galician: 18 changes by pvillaverde
2023-02-20 18:47:32 +00:00
translators
9ade3345f7 Update: Translations from eints
english (us): 3 changes by nikolas
galician: 1 change by pvillaverde
2023-02-19 18:43:37 +00:00
translators
4a8b8807e6 Update: Translations from eints
vietnamese: 6 changes by KhoiCanDev
korean: 1 change by telk5093
2023-02-18 18:44:22 +00:00
2376112c77 Fix #10477: Not enough space for text due to rounding down (OSX) (#10489) 2023-02-18 05:50:20 -05:00
SamuXarick
3df9321a65 Fix: Some Script::IsValidVehicle checks need to be complemented with IsPrimaryVehicle
Add: [Script] ScriptVehicle.IsPrimaryVehicle
2023-02-18 09:58:02 +01:00
glx22
3559576166 Codechange: [Script] Don't expose static buffers outside of ScriptText 2023-02-17 21:28:14 +01:00
glx22
e735370318 Change: [Script] A ScriptText with too many parameters is now a fatal error
It should never happen as adding/setting parameters already checks that anyway.
2023-02-17 21:28:14 +01:00
translators
2fdfc38da8 Update: Translations from eints
korean: 6 changes by telk5093
slovak: 8 changes by legitalk
catalan: 3 changes by J0anJosep
turkish: 5 changes by EndChapter
dutch: 1 change by Afoklala
portuguese (brazilian): 8 changes by ericandradex
polish: 2 changes by pAter-exe
2023-02-17 18:47:31 +00:00
Loïc Guilloux
4072dcff49 Fix #10486: [Script] Debug window requires AIs to be started before GS (#10487) 2023-02-17 12:24:51 +01:00
Loïc Guilloux
27cbb81df5 Fix: [Actions] vcpkg needs pkg-config to build zlib on macOS (#10488) 2023-02-16 22:35:51 +01:00
Patric Stout
fdfcb09aa3 Fix #10131: actually cancel downloads when pressing cancel 2023-02-15 23:48:06 +01:00
Patric Stout
dea2dea881 Fix: reset content download progress to zero if falling back to TCP
Otherwise this chain of events can happen:
- You already have a (partial) file downloaded
- You start the download, and HTTP fails
- This resets the download progress to the current size of the file
- The TCP download starts at a very large value (UINT32_MAX - filesize)

It now resets to 0% done when any negative value is being given.
As added bonus, we no longer have to query how much was already
downloaded.
2023-02-15 23:48:06 +01:00
Patric Stout
1c17556f96 Codechange: replace instance of char * with std::string 2023-02-15 23:48:06 +01:00
Patric Stout
0722bb3bf4 Change: try to detect the CA file/path for CURL (#10481)
The default is given compile-time, not run-time. So libcurl is
of no use to us.

Current list is kindly borrowed from
https://go.dev/src/crypto/x509/root_linux.go
2023-02-15 22:58:43 +01:00
Patric Stout
16352559f2 Change: release with (much) newer versions of dependencies for Generic Linux (#10484) 2023-02-15 22:18:23 +01:00
Patric Stout
ea90fa24f8 Codechange: move curl into a thread so simplify code (#10480)
With a thread, we can just run curl_easy_perform() and let CURL
and threads handle the blocking part.

With async solution there are too many things to keep track of,
and it makes "when to update the GUI" tricky. By using a thread
that all gets a lot simpler, as the game-thread and download-thread
run side-by-side.

This is similar to how the WinHttp backend already works.
2023-02-15 21:56:19 +01:00
translators
228b34c2bf Update: Translations from eints
english (au): 1 change by krysclarke
czech: 2 changes by jachymozo
finnish: 1 change by hpiirai
2023-02-14 18:46:38 +00:00
dP
fe2c8a1240 Codechange: Decouple INDUSTRY_CTRL into separate commands (#10475) 2023-02-14 11:29:11 +01:00
frosch
d7fcb420c4 Fix: compilation with libcurl from 2013. 2023-02-13 22:45:07 +01:00
frosch
274bcf8d80 Fix 64523709: rpm uses different package names than deb. 2023-02-13 22:45:07 +01:00
translators
04847b1208 Update: Translations from eints
english (us): 1 change by 2TallTyler
portuguese: 2 changes by ppxppy
2023-02-13 18:47:38 +00:00
translators
695ce0ab09 Update: Translations from eints
swedish: 3 changes by joeax910
italian: 1 change by Rivarossi
russian: 1 change by Ln-Wolf
ukrainian: 1 change by serg-bloim
latvian: 7 changes by lexuslatvia
2023-02-12 18:45:01 +00:00
Patric Stout
64523709bf Add: use https:// for content-service connections (#10448)
This requires the use of WinHTTP (for Windows) or libcurl (for all
others except Emscripten). Emscripten does not support http(s)
calls currently.

On Linux it requires ca-certificates to be installed, so the HTTPS
certificate can be validated. It is really likely this is installed
on any modern machine, as most connections these days are HTTPS.

(On MacOS and Windows the certificate store is filled by default)

Reminder: in case the http(s):// connection cannot be established,
OpenTTD falls back to a custom TCP-based connection to fetch the
content from the content-service. Emscripten will always do this.
2023-02-12 12:07:31 +01:00
translators
09f7f32b8d Update: Translations from eints
ukrainian: 2 changes by serg-bloim
2023-02-11 18:44:57 +00:00
Loïc Guilloux
a2c8168924 Fix #10465: Delay closing of network join progress window (#10466) 2023-02-11 12:32:45 +01:00
Bilongozhko, Serhii (Contractor)
35ad964c6b Feature: Ctrl+Click to reset late counter for the entire vehicle group. 2023-02-11 09:48:09 +01:00
SamuXarick
231935fccd Change: Show buy company dialog window even when playing in the AI company 2023-02-11 09:43:47 +01:00
SamuXarick
43ce73db86 Fix: [Script] Use Money instead of int32 for presenting the value of a company to AIs 2023-02-11 09:43:47 +01:00
Loïc Guilloux
6b99b6672e Fix: [Script] ScriptBase::Rand() return value was between -MIN(int32) and MAX(int32) (#10443)
Also ensure the parameters for ScriptBase::RandRange() and ScriptBase::Chance() are in [0-MAX(uint32)] range
2023-02-10 19:55:59 +01:00
translators
7bd475b86c Update: Translations from eints
english (au): 2 changes by krysclarke
estonian: 107 changes by RM87
romanian: 2 changes by bnegrut
finnish: 8 changes by hpiirai
dutch: 4 changes by Afoklala
portuguese: 2 changes by azulcosta
polish: 2 changes by pAter-exe
2023-02-10 18:48:19 +00:00
glx22
3278f4c7bb Fix #10280, 59645c6: Ignore double-click for unavailable town actions 2023-02-10 19:39:21 +01:00
glx22
d6aa526b69 Fix #10461, 59645c6: Properly check for _local_company validity 2023-02-10 19:39:21 +01:00
translators
59251d3c6b Update: Translations from eints
english (us): 2 changes by 2TallTyler
estonian: 110 changes by RM87
czech: 5 changes by jacobczsk
italian: 11 changes by Rivarossi
russian: 2 changes by Ln-Wolf
2023-02-09 18:45:50 +00:00
translators
b083584649 Update: Translations from eints
arabic (egypt): 30 changes by AviationGamerX
portuguese: 1 change by azulcosta
2023-02-08 18:47:55 +00:00
Tyler Trahan
f12498b633 Add: Show NewGRF name in NewGRF-created errors (#10457) 2023-02-07 15:13:32 -05:00
translators
0c36e4a771 Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
vietnamese: 2 changes by KhoiCanDev
luxembourgish: 5 changes by phreeze83
catalan: 3 changes by J0anJosep
french: 11 changes by ZarTek-Creole, 5 changes by glx22
2023-02-07 18:45:46 +00:00
dP
b5bc001d42 Codechange: Swap comments for CommandHelper::Post overloads (#10454) 2023-02-07 13:55:46 +00:00
Owen Rudge
f951ce6931 Fix: Ensure logo for Windows Store common assets package is named correctly 2023-02-07 09:23:44 +00:00
translators
cb2944205c Update: Translations from eints
english (au): 4 changes by krysclarke
swedish: 16 changes by joeax910
english (us): 2 changes by 2TallTyler
chinese (simplified): 2 changes by XiaoJi-Game
hebrew: 3 changes by Boltyansky
romanian: 10 changes by kneekoo
russian: 5 changes by Ln-Wolf
portuguese: 2 changes by azulcosta
polish: 4 changes by pAter-exe
2023-02-06 18:44:47 +00:00
translators
7c998d46bd Update: Translations from eints
spanish (mexican): 22 changes by VMMF
chinese (simplified): 2 changes by XiaoJi-Game
turkish: 2 changes by EndChapter
2023-02-05 18:43:07 +00:00
glx22
b080f24bd8 Codechange: move windows common to AI and GS out of ai_gui 2023-02-05 19:27:25 +01:00
glx22
78e3c93a25 Fix: caption for GS settings window opened from debug window 2023-02-05 19:27:25 +01:00
glx22
cef9931e53 Cleanup: GS don't have "start_date" 2023-02-05 19:27:25 +01:00
translators
6aafccfb22 Update: Translations from eints
korean: 2 changes by telk5093
spanish: 2 changes by MontyMontana
portuguese: 2 changes by azulcosta
2023-02-04 18:44:14 +00:00
translators
b364b41768 Update: Translations from eints
english (us): 2 changes by 2TallTyler
finnish: 2 changes by hpiirai
catalan: 2 changes by J0anJosep
dutch: 2 changes by Afoklala
2023-02-03 18:44:54 +00:00
translators
e41af1f2bb Update: Translations from eints
portuguese (brazilian): 8 changes by ericandradex
2023-02-02 18:44:54 +00:00
SamuXarick
1f194eb94e Fix: [Script] Incorrect value for GOAL_INVALID (#10436)
* Fix: [Script] Incorrect value for GOAL_INVALID

* Cleanup: Remove unused static variable
2023-02-01 23:35:51 +01:00
Rubidium
bf8b32d193 Change: explicitly allow initial loan of 0, however show warning in UI 2023-02-01 21:41:18 +01:00
Rubidium
b7b7c11b90 Change #10077: make maximum loan a positive multiple of the loan interval
And set the minimum maximum loan to the value of loan interval, so there is
always an amount of money to lend. Compared to being allowed to set max loan
to 0 and never be allowed to lend any money.
2023-02-01 21:41:18 +01:00
SamuXarick
d0639cdc28 Fix: [Script] Incorrect subsidy SourceID value used 2023-02-01 21:17:16 +01:00
SamuXarick
4fc4874a30 Add: [Script] Let random road layout be a choice 2023-02-01 21:15:13 +01:00
SamuXarick
184ff92057 Cleanup: [Script] Pass new_rating directly to CmdTownRating (#10441) 2023-02-01 13:48:39 -05:00
translators
654a77c4f7 Update: Translations from eints
luxembourgish: 21 changes by phreeze83
2023-02-01 18:47:29 +00:00
Byoungchan Lee
12f9fbcf39 Fix: [CMake] remove cpack warning on fedora when lsb_release exists (#10437) 2023-02-01 07:41:41 +00:00
Rubidium
31869501ee Fix: make script goals work with the whole range of ClientIDs 2023-01-31 20:09:48 +01:00
Rubidium
67e1d1ad89 Fix: no need to cast enums down to int32; they will be automatically promoted to int64 2023-01-31 20:09:48 +01:00
translators
1897e98c3d Update: Translations from eints
slovak: 10 changes by legitalk
2023-01-31 18:45:28 +00:00
Michael Lutz
05ed9f56fd Feature: [NewGRF] Engine name callback. 2023-01-30 22:00:56 +01:00
Michael Lutz
2d73076056 Add: [NewGRF] Second vehicle property for additional callback flags. 2023-01-30 22:00:56 +01:00
Michael Lutz
f5394ed2ef Change: [NewGRF] Extend the D8xx (DCxx) string area up to FFFF.
This adds the Exxx and Fxxx blocks to the usable range for NewGRF
local strings. TTDPatch uses these ranges for internal strings, but as
we don't support any of them anyway, it is "free" real estate for us.
2023-01-30 22:00:56 +01:00
translators
43657cf65d Update: Translations from eints
chinese (traditional): 9 changes by wpi3
2023-01-30 18:45:30 +00:00
Loïc Guilloux
07b40c02fe Fix #10361, fe30f66: Don't try to give saved data to a dead script (#10433) 2023-01-29 22:27:29 +00:00
Jonathan G Rennison
9c915f05ec Fix: Water infrastructure accounting when building docks 2023-01-29 23:15:53 +01:00
Jonathan G Rennison
b82bcac3cd Fix #10419: Water infrastructure accounting when building ship depots 2023-01-29 23:15:53 +01:00
Rubidium
4e65ec1dc4 Codechange: do not declare functions in blocks 2023-01-29 20:28:45 +01:00
translators
5a4f0498fe Update: Translations from eints
hebrew: 6 changes by haimlm
catalan: 4 changes by J0anJosep
turkish: 7 changes by ahmetlii
2023-01-29 18:42:05 +00:00
Rubidium
8be908c919 Fix #10430, Fix 6ba55e6: display chain window causing assert 2023-01-29 18:11:38 +01:00
rubidium42
6ba55e663e Codechange: do not hide variables with other variables 2023-01-29 07:21:34 +01:00
rubidium42
1951af07c0 Codechange: do not hide parameters with local variables 2023-01-29 07:21:34 +01:00
Patric Stout
be0d65d978 Add: [Actions] upload releases to GOG automatically 2023-01-28 20:41:08 +01:00
Patric Stout
146bd74077 Change: [Actions] release Windows Store files to CDN
Currently they had a name that the rest of our system cannot
deal with correctly. "cert.pfx" is also not very descriptive from
a system as a whole.

As such, we now name it like any other file, so it can be published
safely to the CDN.
2023-01-28 20:41:08 +01:00
Patric Stout
425ba82676 Change: [Actions] split GitHub workflows into several smaller ones 2023-01-28 20:41:08 +01:00
Patric Stout
9fd88af537 Remove: [Actions] Ubuntu/Debian release binaries (instead, use the Generic) 2023-01-28 20:41:08 +01:00
Rubidium
f001e84e5e Codechange: use RAII to automatically restore _cur_dpi after use 2023-01-28 20:33:02 +01:00
Rubidium
b7a5d8e296 Codechange: add annotation to selectively force inlining in debug build 2023-01-28 20:32:45 +01:00
SamuXarick
df89c34e03 Fix 7e1e275: Measure AI Collect Garbage performance (#9924) 2023-01-28 20:18:28 +01:00
translators
4a58d197ee Update: Translations from eints
japanese: 26 changes by Azusa257
vietnamese: 4 changes by KhoiCanDev
chinese (simplified): 4 changes by XiaoJi-Game
french: 8 changes by glx22
2023-01-28 18:44:03 +00:00
Rubidium
04d10b3d2d Codechange: instead of global pointer to stack variable, just put variable in that global
Removes one indirection and a dangling pointer to a stack location
2023-01-28 17:23:30 +01:00
Rubidium
d51d08ddcb Codechange: put stack variables in global variables for gamelog/crashlog 2023-01-28 17:23:30 +01:00
Rubidium
ed7685910d Codechange: pass large objects by reference instead of value
Especially when they get passed on directly to the next function or via a
constructor into an instance variable
2023-01-28 13:43:21 +01:00
translators
dbc666905d Update: Translations from eints
czech: 10 changes by jacobczsk
dutch: 4 changes by Afoklala
2023-01-27 18:45:27 +00:00
Rubidium
7e1d272397 Cleanup: remove unused static variables 2023-01-27 07:05:49 +01:00
Rubidium
00721787e1 Fix: wrong type for INVALID_LINK_GRAPH_JOB 2023-01-27 07:05:49 +01:00
Rubidium
755e41de9f Codechange: make rounding code clearer
-O1 already optimizes it to the original hand optimized magic code
2023-01-26 23:47:55 +01:00
Rubidium
71b46db8d0 Cleanup: remove commented out code 2023-01-26 23:47:55 +01:00
Rubidium
5863d78cb4 Codechange: use commented out code, or guard by #ifdef 2023-01-26 23:47:55 +01:00
Rubidium
ae422be979 Cleanup: remove/replace trailing ; with . in comments 2023-01-26 23:47:55 +01:00
Henry Wilson
0b2567d882 Codechange: Remove shift as fast-forward key when _DEBUG is defined 2023-01-26 22:15:06 +01:00
SamuXarick
46dc6da270 Codechange: Make void tiles flood edge tiles, instead of edge tiles flooding themselves (#8517) 2023-01-26 21:57:25 +01:00
ede1201b6a Codechange: Rename override manager variables. 2023-01-26 21:39:16 +01:00
bcc53c5ad5 Codechange: Add missing this-> in override manager.
Variable scope is also tweaked in a couple of cases reducing line count.
2023-01-26 21:39:16 +01:00
eedb786872 Codechange: Use vector for NewGRF spec overrides.
This replaces C-style memory management.
2023-01-26 21:39:16 +01:00
translators
07940726d3 Update: Translations from eints
korean: 4 changes by telk5093
2023-01-26 18:45:34 +00:00
Rubidium
2fd99467ea Fix: scripts are not aware of nullptr, they only know null 2023-01-26 16:07:14 +01:00
Rubidium
f9a473bef7 Fix: missing/duplicate documentation tags for scripts 2023-01-26 16:07:14 +01:00
Rubidium
3112b387e7 Fix: warnings about obsolete settings/setting values in Doxygen configurations 2023-01-26 16:07:14 +01:00
Rubidium
41fa94bc56 Fix: scripts cannot call constructors of ScriptEvents, so remove from the documentation 2023-01-25 22:28:30 +01:00
Rubidium
042f90a9dd Fix: no ScriptEvent sub class should export constructors to scripts 2023-01-25 22:28:30 +01:00
merni-ns
2d0c1ffdb7 Change #10255: Reduce basic thickness of linkgraph GUI lines (#10410)
From 3px to 2px (multiplied by UI scale).
2023-01-25 18:06:19 +00:00
translators
01a2449489 Update: Translations from eints
finnish: 8 changes by hpiirai
polish: 4 changes by pAter-exe
2023-01-24 18:44:59 +00:00
4dfd6a096f Fix #10220: Don't select unselectable engine as default. (#10404) 2023-01-24 00:05:42 +00:00
translators
97844df123 Update: Translations from eints
spanish: 4 changes by MontyMontana
2023-01-23 18:43:48 +00:00
Tyler Trahan
9c5de7fd72 Fix #10395: When loading old saves, don't forcibly bar level crossings (#10400) 2023-01-23 18:08:19 +01:00
Rubidium
8aeef665c7 Fix #10377, Fix 94167df: bad sorting of rail vehicles when primary variant is missing 2023-01-22 21:13:17 +01:00
translators
7d502e2857 Update: Translations from eints
english (us): 4 changes by 2TallTyler
romanian: 10 changes by bnegrut
russian: 4 changes by Ln-Wolf
portuguese: 4 changes by azulcosta
2023-01-22 18:42:21 +00:00
SamuXarick
b2a5ebcfc4 Fix 3c047b1: AIGroup.GetProfitLastYear could get values different than those displayed in GUI (#10227)
* Change: Store "all time" and "since minimum age" last year profits on groups

* Fix: Update last year profit for groups when copying vehicle statistics on autoreplace

* Codechange: Refactor profit last year

* Change: Rename some group related items for clarity

* Change: Reorder the fields in GroupStatistics

That way less memory gets wasted.
2023-01-22 08:14:02 -05:00
translators
8b5fa2cc7b Update: Translations from eints
english (au): 4 changes by krysclarke
2023-01-21 18:42:26 +00:00
Rubidium
7cdc23fd64 Codechange: hide the map's size related fields in the Map structure 2023-01-21 17:11:40 +01:00
Rubidium
de6bc8e692 Codechange: move TILE_MASK to Map::WrapToMap 2023-01-21 17:11:40 +01:00
Rubidium
fe2bcd2a58 Codechange: migrate size related functions to Map structure 2023-01-21 17:11:40 +01:00
Rubidium
d481f78b24 Codechange: add map size related functions to Map structure 2023-01-21 17:11:40 +01:00
Rubidium
9c1a3b17e3 Codechange: use MapLogY() instead of FindFirstBit(MapSizeY()), MapSize() instead of MapSizeX() * MapSizeY() 2023-01-21 17:11:40 +01:00
Rubidium
22d3de8b67 Codechange: use ScriptMap size functions instead of global functions 2023-01-21 17:11:40 +01:00
Rubidium
953445a5ac Codechange: use MakeSea/AllocateMap in the oldloader instead of MemSetT 2023-01-21 17:11:40 +01:00
Andy
3b0b572ebf Change: Log AI/GS Squirrel crashes in white text for readability (#10375) 2023-01-20 22:42:57 +01:00
translators
5eb2e0fd3d Update: Translations from eints
dutch: 4 changes by Afoklala
2023-01-20 18:46:24 +00:00
Francis Herne
01be423237 Fix #10362: NewGRF bridges without speed limits.
For bridges, a max speed of 0xFFFF (i.e. no effective limit)
 is no longer displayed as a limit in the UI.

A max speed of 0 is also considered unlimited, for similarity to the
 roadtype and railtype interface.
2023-01-19 22:24:33 +01:00
translators
3c80f2d14a Update: Translations from eints
english (au): 6 changes by krysclarke
chinese (simplified): 3 changes by XiaoJi-Game, 1 change by ZZY2357
arabic (egypt): 11 changes by AviationGamerX
korean: 3 changes by telk5093
indonesian: 8 changes by K4smun1
2023-01-19 18:45:02 +00:00
translators
83d5e681fc Update: Translations from eints
vietnamese: 6 changes by chupper100
italian: 4 changes by Rivarossi
tamil: 10 changes by merni-ns
2023-01-18 18:46:14 +00:00
5801442780 Fix: Switch to OWNER_TOWN prevented OWNER_DEITY test during industry prospecting. (#10360) 2023-01-17 17:33:03 -05:00
Rubidium
8d8519c3f6 Fix #10368, Fix 994bf19: server restarting game caused clients to hit assertion
Upon closing the EndGameWindow, triggered from UnInitWindowSystem, the
HighScoreWindow would be opened and _z_windows would not be empty.
2023-01-17 22:48:39 +01:00
translators
dcc06f44bc Update: Translations from eints
english (us): 6 changes by 2TallTyler
catalan: 6 changes by J0anJosep
spanish: 5 changes by MontyMontana
portuguese: 4 changes by azulcosta
polish: 4 changes by pAter-exe
2023-01-17 18:43:58 +00:00
translators
8a6f4c22c9 Update: Translations from eints
finnish: 2 changes by hpiirai
french: 2 changes by glx22
portuguese: 2 changes by azulcosta
portuguese (brazilian): 2 changes by ericandradex
polish: 2 changes by pAter-exe
2023-01-16 18:44:06 +00:00
Tyler Trahan
dbf69fde53 Fix #10363: CargoDist setting helptext shouldn't suggest symmetric distribution for diamonds in subtropic (#10364)
* Fix #10363: CargoDist setting helptext shouldn't suggest symmetric distribution for diamonds in subtropic

* Fix: Always capitalize the first word of a sentence, even if a quoted setting name
2023-01-16 11:55:44 -05:00
translators
750d89d37b Update: Translations from eints
russian: 2 changes by Ln-Wolf
turkish: 2 changes by EndChapter
2023-01-15 18:44:57 +00:00
Rubidium
a4a819c983 Fix #9865: removing files with the console always failed 2023-01-15 14:47:05 +01:00
Rubidium
1ed0b35520 Fix #10009: bad overflow protection when taking out loans 2023-01-15 12:04:50 +01:00
2355882ec1 Codechange: Remove object enabled flag and shuffle members. (#10358)
`enabled` flag is replaced with IsEnabled() which checks if views is
non-zero.

ObjectSpec is shuffled to reduce its memory footprint.
2023-01-15 10:58:03 +00:00
Rubidium
8f9a60893d Fix #10177: company list password padlock showed after switching to single player 2023-01-15 11:52:51 +01:00
Rubidium
c578917783 Fix #10057: FallbackParagraphLayout fails to properly wrap
... during the first word after a new run has been started.
2023-01-15 11:43:22 +01:00
SamuXarick
96ec9908a0 Codechange: refactor removal of desert around river tiles 2023-01-15 00:43:41 +01:00
Rubidium
20a9e13272 Fix: inconsistent definition of copy constructor and assignment 2023-01-15 00:24:20 +01:00
Rubidium
6dfd2cad69 Fix: comparison result is always the same warnings 2023-01-15 00:24:20 +01:00
b4f0450974 Change: Display font status as aa/noaa instead of true/false. (#10352) 2023-01-14 22:39:15 +00:00
Rubidium
921c6591f9 Codechange: do not use interactive random anymore for script configuration 2023-01-14 22:00:11 +01:00
Rubidium
c5ff61c5f2 Add: script specific Randomizer instances 2023-01-14 22:00:11 +01:00
Rubidium
6abad681bd Codechange: move choice for randomizer of scripts to a single location 2023-01-14 22:00:11 +01:00
Rubidium
3373128233 Codechange: pass the randomizer directly to the town name generation 2023-01-14 22:00:11 +01:00
Rubidium
b3b8c3fd2d Codechange: pass the randomizer to use directly to the company face generation 2023-01-14 22:00:11 +01:00
rubidium42
5e6dac6fd4 Add: enable CodeQL code scanning
As a replacement to the now deprecated LGTM(.com)
2023-01-14 21:58:18 +01:00
8149ba338f Change: Check glyph size before trying to render it.
This change of order ensures that the "Font glyph is foot large" occurs
even if the glyph is too large for an alloca() allocation.
2023-01-14 20:50:59 +00:00
fa0c67b10a Change: Remove guess-work from calls to GetGlyphOutline().
This API method is intended to be called twice, so don't attempt to guess
the required size.
2023-01-14 20:50:59 +00:00
5370e910d3 Change: Use std::vector for fallback font list. 2023-01-14 20:50:59 +00:00
Rubidium
90f1768006 Codechange: add non-nullptr asserts in cases where it should never be nullptr
Though where similar calls are checked for nullptr as in those instances of
the use of that function it can actually return nullptr. In other words, write
down the assumption that the function never returns nullptr in an assert.
2023-01-14 21:15:23 +01:00
Rubidium
bcfe0fb076 Codechange: introduce GetMainWindow() to properly account for nullptr checks
Some nullptr checks have been removed as they were not triggered with nullptr
with the null video driver and in dedicated server mode.
2023-01-14 21:15:23 +01:00
Rubidium
9c70c38c5e Fix: check for the existence of shadow and rotor vehicles for aircraft
Instead of just assuming that it exists in the savegame that got loaded.
2023-01-14 21:15:23 +01:00
translators
5ddfd38de6 Update: Translations from eints
norwegian (bokmal): 1 change by buzzCraft
2023-01-14 18:43:25 +00:00
Jonathan G Rennison
10e76b2788 Fix #10032: Capacities of articulated vehicles in build window
See also: #9954
2023-01-14 18:52:01 +01:00
Tyler Trahan
07fba75238 Fix: Various Wide River issues (#10348) 2023-01-14 08:20:19 -05:00
Tyler Trahan
2206c73156 Feature: Set a custom number of industries in map generation window (#10340) 2023-01-14 05:12:29 -05:00
Tyler Trahan
5c64cdcb79 Feature: Press Ctrl to build a diagonal area of trees (#10342) 2023-01-13 18:04:30 -05:00
Rubidium
b951332def Codechange: use smart pointers when creating StringIterators 2023-01-13 21:09:40 +01:00
Rubidium
b35c791d05 Codechange: use smart pointers when cloning iterators 2023-01-13 21:09:40 +01:00
Rubidium
f667a831a5 Codechange: unify creation of diagonal/orthogonal iterator using smart pointers 2023-01-13 21:09:40 +01:00
6a0d1c7c19 Fix: Link variants to parents when finalising engines. (#10346)
This ensures that definition-order of engines within the NewGRF does not matter.
2023-01-13 19:22:31 +00:00
Tyler Trahan
dced2d8c30 Fix #10333, c53f29d: Only show industry prospecting errors to local company (#10338) 2023-01-12 14:03:39 -05:00
translators
b05c21203a Update: Translations from eints
arabic (egypt): 20 changes by AviationGamerX
2023-01-12 18:47:22 +00:00
Tyler Trahan
5a2907a99f Change: Remove land generator setting from World Generation GUI (#10093) 2023-01-12 13:26:18 -05:00
translators
80322b85c2 Update: Translations from eints
swedish: 7 changes by joeax910
japanese: 17 changes by scabtert
luxembourgish: 14 changes by phreeze83
lithuanian: 80 changes by devastatorius
2023-01-11 18:47:32 +00:00
09a32f2ce1 Fix #10335: Set initial scrollbar count for object GUI. (#10336)
This previously happened when the window was resized by itself which was fixed by #10196. Explicitly set the count instead.
2023-01-11 18:26:38 +00:00
translators
70157b2ad5 Update: Translations from eints
luxembourgish: 3 changes by phreeze83
hebrew: 125 changes by haimlm
2023-01-10 18:45:18 +00:00
translators
9d13213c61 Update: Translations from eints
spanish (mexican): 3 changes by absay
2023-01-09 18:47:47 +00:00
translators
81c5c16477 Update: Translations from eints
galician: 1 change by NicoSGF64
romanian: 8 changes by ALEX11BR
2023-01-08 18:42:25 +00:00
c18a171028 Fix #10331: Starting new company during load must happen after AI start. (#10332)
This situation occurs when loading a savegame in single-player which only
has AI companies.
2023-01-08 18:09:38 +00:00
translators
7460fdb298 Update: Translations from eints
chinese (simplified): 7 changes by HansKaffee
turkish: 13 changes by rustoocas
2023-01-07 18:43:34 +00:00
blschachte
6b68de1f3e Doc: Fix typo in COMPILING.md (#10329) 2023-01-07 17:32:25 +00:00
Rubidium
46dfb309bc Fix #10309: [SDL] Uninitialized width and height when turning off full screen 2023-01-07 15:46:00 +01:00
translators
29af0f8c7b Update: Translations from eints
swedish: 18 changes by joeax910
chinese (simplified): 2 changes by HansKaffee
romanian: 3 changes by ALEX11BR
slovak: 15 changes by legitalk
tamil: 21 changes by Aswn
2023-01-06 18:46:19 +00:00
Rubidium
0251786f46 Fix: virtual call from constructor
That fills an instance variable that is only read from the Game Options window
and that is overwritten when the video driver is started. Since you cannot get
into the Game Options window without starting the video driver, it is just
pointless and wrong code that would never be noticed by the end user.
2023-01-06 19:34:35 +01:00
Rubidium
c1ff471c77 Fix: bad oddness checks
Modulo on a signed number returns negative values for negative values, so
i % 2 == 1 will only return true for positive odd numbers, whereas i % 2 != 0
returns true for both positive and negative odd numbers.
2023-01-06 19:34:35 +01:00
Rubidium
f7af9a299a Codechange: prevent suspicious pointer scaling 2023-01-06 19:34:35 +01:00
Rubidium
170f37d07f Codechange: silence some potentially uninitialized local variable errors
In these cases technically they are false positives, however dismissing the
alerts when the underlying code may make them true positives does not seem
like the safest solution.
2023-01-06 19:34:35 +01:00
Rubidium
496ec1f012 Fix: use reference and array indexing to prevent suspicious pointer scaling 2023-01-06 19:34:35 +01:00
Rubidium
fbd0f5ad7d Fix: inconsistent allocation error handling
Mix-and-matching std::bad_alloc exception handling with nullptr checks
2023-01-06 19:34:35 +01:00
Rubidium
3c54344825 Fix: comparison of narrow type with wide type in loop condition
Technically this can't be triggered with the currently returned values though.
2023-01-06 19:34:35 +01:00
Charles Pigott
e00996a18a Change: Big UFO disaster targets current location of a random train (#10290) 2023-01-06 13:05:09 +00:00
1b1aa682a6 Fix: Don't assume engclass 2 should be elrail. (#10315)
When disabling/enabling elrail, there is an assumption that `engclass` of 2
means the engine will run on elrail. While this holds for default engines,
NewGRFs can do other things.

To resolve this we store the intended railtype so that toggling elrail will
restore to the correct type.
2023-01-06 00:44:57 +00:00
Loïc Guilloux
8f350c9ae6 Fix: [Actions] preview_build failure due to git upgrade (#10323) 2023-01-05 23:25:45 +00:00
Rubidium
51049946d1 Fix: prevent corrupted GRF files to allocate stupid amounts of memory 2023-01-05 20:11:59 +01:00
translators
58068883f8 Update: Translations from eints
swedish: 33 changes by joeax910
arabic (egypt): 11 changes by AviationGamerX
luxembourgish: 3 changes by Gubius
greek: 85 changes by SStelioss
indonesian: 55 changes by indrabagus, 20 changes by K4smun1
serbian: 527 changes by nkrs
latvian: 82 changes by lexuslatvia
polish: 2 changes by pAter-exe
2023-01-05 18:48:43 +00:00
Rubidium
752cd5c0da Cleanup 84b71f7: remove G5 detector as it's not referenced anymore
The last supported Mac OS X for G5 is 10.5.8 and support for < 10.7 has already been removed.
2023-01-04 22:42:23 +01:00
Rubidium
375a5b8e3f Codechange: refactor FindClosestDepot to not use pointers, but return a struct 2023-01-04 22:30:48 +01:00
translators
b3907b1359 Update: Translations from eints
swedish: 39 changes by DonaldDuck313, 9 changes by joeax910
chinese (traditional): 62 changes by wpi3
greek: 8 changes by SStelioss
indonesian: 29 changes by indrabagus
serbian: 528 changes by nkrs
ukrainian: 82 changes by StepanIvasyn
turkish: 4 changes by jnmbk
french: 19 changes by glx22
2023-01-04 18:45:02 +00:00
Rubidium
a0694759a1 Fix: do not allow more palette colours than there are indices for the colours
Or: do not pass unchecked size from BMP file into memory allocation
2023-01-04 18:36:49 +01:00
translators
3af2c7fff6 Update: Translations from eints
swedish: 9 changes by joeax910
norwegian (bokmal): 7 changes by buzzCraft
chinese (traditional): 48 changes by wpi3
galician: 98 changes by pvillaverde
vietnamese: 13 changes by myquartz
czech: 42 changes by vladoschreiner, 40 changes by PatrikSamuelTauchim, 19 changes by adamek0202, 3 changes by LubosKolouch
chinese (simplified): 52 changes by HansKaffee
luxembourgish: 148 changes by phreeze83
hungarian: 50 changes by PstasDev, 23 changes by baliball
german: 69 changes by Wuzzy2, 4 changes by Luensche
romanian: 3 changes by kneekoo
ukrainian: 45 changes by StepanIvasyn
catalan: 12 changes by J0anJosep
turkish: 9 changes by Anceph
french: 1 change by Athozus
portuguese (brazilian): 9 changes by ericandradex
2023-01-03 18:45:43 +00:00
Patric Stout
1fb101eabb Codechange: address CodeQL issue "Multiplication result converted to larger type" (#10306)
Most are very unlikely to ever be triggered in our codebase; two
stand out: linkgraph and money cheat. Those, potentially, could
wrap earlier than expected.
2023-01-02 20:30:02 +00:00
translators
fcbe390353 Update: Translations from eints
dutch: 10 changes by Afoklala
polish: 33 changes by pAter-exe
2023-01-02 18:46:20 +00:00
Loïc Guilloux
91ca088065 Fix #10304, fe30f66: [Scripts] Don't start GS in intro (#10305) 2023-01-02 02:13:16 +01:00
Michael Lutz
150f05dc15 Change: Heading for 14 now. (#10302) 2023-01-01 22:52:23 +01:00
5e22788664 Fix #10220: Adding unavailable variants failed for non-rail engines. (#10297)
Unavailable parent variant engine for non-rail engines was added to the
wrong (temporary) list so the hierarchy was not added correctly.
2022-12-31 10:10:25 +00:00
translators
22035b7eab Update: Translations from eints
english (us): 10 changes by 2TallTyler
chinese (simplified): 1 change by lysinelai
korean: 13 changes by telk5093
catalan: 1 change by DiogoMCampos
2022-12-30 18:42:42 +00:00
Charles Pigott
67f02e20de Change: Display text files in black (#10291) 2022-12-30 10:31:02 +00:00
glx22
012fd2be0d Codechange: Suppress warnings when asserts are disabled 2022-12-30 02:17:38 +01:00
glx22
ffc1f7ce56 Fix 57717a2: [CMake] Don't apply 'cl' workaround to 'clang-cl' 2022-12-30 02:17:38 +01:00
clienthax
25f247047d Update: emsdk to 3.1.28 and lzma (for emsdk) to 5.4.0 (#10234)
Co-authored-by: Patric Stout <truebrain@openttd.org>
2022-12-29 23:34:45 +01:00
translators
f90156f74c Update: Translations from eints
romanian: 2 changes by bnegrut
spanish: 2 changes by MontyMontana
2022-12-29 18:43:05 +00:00
translators
918b2cb3ee Update: Translations from eints
english (au): 10 changes by krysclarke
italian: 3 changes by Rivarossi
russian: 3 changes by Ln-Wolf
finnish: 3 changes by hpiirai
spanish: 15 changes by MontyMontana
portuguese: 6 changes by azulcosta
portuguese (brazilian): 2 changes by DiogoMCampos
2022-12-28 18:44:23 +00:00
Loïc Guilloux
fe30f66570 Fix #9720: Delay start of GS/AI to after loading of savegame (#9745) 2022-12-28 05:02:26 +01:00
f7e2b6ef12 Change: Make vehicle list dropdown buttons resize to fit strings. (#10286) 2022-12-27 18:39:37 +00:00
Francis Herne
6caed5f15e Add: Slope-aware and roadtype-specific one-way sprites. (#10282) 2022-12-26 15:06:21 -05:00
translators
7a18631291 Update: Translations from eints
italian: 10 changes by bagnacauda
romanian: 91 changes by bnegrut
russian: 6 changes by Ln-Wolf
finnish: 9 changes by hpiirai
portuguese: 8 changes by azulcosta
2022-12-26 18:42:39 +00:00
9e56e16147 Fix: Local authority window rating list height ignored icon sizes. (#10285)
Only font height was taken into account, so the list was broken if icon
sizes were taller than font height.
2022-12-26 18:26:01 +00:00
961e66df30 Fix #10224: Don't fiddle with fast-forward when saving. (#10230)
The original comment about saving with fast-forward on was written 18 years
ago, and predates lots of changes to how saveload work.
2022-12-26 00:05:14 +01:00
Michael Lutz
3d3ed87d99 Fix: Bad alignment of button icons when using the original baseset. (#10200) 2022-12-25 18:03:39 -05:00
4f26f6b8aa Cleanup: Simplify GRFLabel linked-list with std::vector. (#10284) 2022-12-25 22:32:22 +00:00
Daniel Robinson
c53f29df53 Fix #10181: Show error message on failed industry prospecting (#10202) 2022-12-25 23:12:06 +01:00
Didac Perez Parera
35d55bd534 Feature: Expand all towns in the scenario editor (#10215) 2022-12-25 19:42:50 +01:00
Tyler Trahan
4ffe7e0477 Fix #10198: Rearrange Intro GUI to make button rows narrower (#10203) 2022-12-25 13:26:26 -05:00
Tyler Trahan
8063fcb6e0 Feature: Ctrl-click to bulk edit timetable speeds/waiting times (#10265) 2022-12-25 13:20:31 -05:00
efa20dd969 Change: Support engine property 0xC6 in purchase list. 2022-12-25 16:41:58 +00:00
cbf48c4dd9 Change: Add extra random seed to StartupEngines().
This means that calling reset_engines will rerandomise introduction dates
and reliability.

Probably not necessary.
2022-12-25 16:41:58 +00:00
74180efe7f Change: Attempt to improve randomisation of reliability 2022-12-25 16:41:58 +00:00
3485709f53 Add: Additional vehicle flags to control variants. 2022-12-25 16:41:58 +00:00
898dadadb2 Change: Mark build/autoreplace windows dirty less often in monthy loop.
These window classes were marked dirty for every engine that had
reliability calculated every month.
2022-12-25 16:41:58 +00:00
85814b29d4 Feature: Vehicle add-ons can now group engines in purchase list.
Grouped engines are collapsed by default but can be expanded. This allows
similar engines to be grouped together to avoid cluttering the list.

Suggested uses for this are e.g.:
* Liveries; same stats but different paint job.
* Re-gearing; engine design is mostly the same but different stats.

... but avoiding complex hidden cargo subtype refit systems.

Grouped engines are otherwise separate, so can be independently
autoreplaced, even between variants.
2022-12-25 16:41:58 +00:00
94167dfd34 Change: Add variant hierarchy to build vehicle window list. 2022-12-25 16:41:58 +00:00
c11db7d593 Change: Clear last variant when engine becomes unavailable. 2022-12-25 16:41:58 +00:00
d7f561a400 Change: Add variant property to engines. 2022-12-25 16:41:58 +00:00
c8cc61d889 Fix #10150: Force FS_SMALL for small viewport signs. (#10283)
* Fix #10150: Force FS_SMALL for small viewport signs.

This is a workaround for string widths being different with mixed
font-sizes.

* Fix: Flag small sign shadow as small text.

(This method of drawing shadows is hilarious and needs replacing, but
this is a quick fix.)
2022-12-25 13:29:38 +00:00
23eec0b7b3 Fix #8971: Resize QueryStrings with interface scale change. (#10281)
* Fix: Use width of caret symbol '_' for text entry.

This replaces an arbitrary pixel width with the space actually required.

* Fix #8971: Update QueryString sizes with interface scale change.
2022-12-25 00:40:55 +00:00
translators
3451c0a82c Update: Translations from eints
russian: 3 changes by Ln-Wolf
latvian: 21 changes by lexuslatvia
dutch: 3 changes by Afoklala
portuguese: 3 changes by azulcosta
portuguese (brazilian): 13 changes by ericandradex
2022-12-24 18:43:00 +00:00
glx22
04ee86d3ac Add: 'font' console command to configure fonts 2022-12-23 23:23:03 +01:00
glx22
e6c857cdba Codechange: [windows] cache the actually loaded font name 2022-12-23 23:23:03 +01:00
glx22
af3df959c2 Codechange: reduce code duplication 2022-12-23 23:23:03 +01:00
7b5edba76c Change: Support flipping shorter engines without NewGRF support. (#10262)
* Change: Support flipping shorter engines without NewGRF support.
* Cleanup: Remove write-only prop27_set temporary flag.
2022-12-23 21:02:14 +00:00
a971eee2e0 Cleanup: Replace foundation drawing magic numbers.
Use TILE_SIZE or TILE_HEIGHT as appropriate instead.
2022-12-23 15:43:11 +00:00
138198e971 Change: Separate ground sprite from foundation sprite offsets. 2022-12-23 15:43:11 +00:00
002fe67bef Add: Optionally disable child sprites drawing relative to parent sprites offsets. 2022-12-23 15:43:11 +00:00
Jonathan G Rennison
14c1266bbc Fix: Wrong type cast for selected AI/GS script info in AIListWindow
This resulted in technically undefined behaviour when listing GSs
2022-12-22 21:26:27 +01:00
Jonathan G Rennison
d4c530904c Fix #10274: Use after free when rescanning scripts with GS selected 2022-12-22 21:23:48 +01:00
f6e7e44169 Fix #10151: Use smaller padding for viewport signs. (#10272)
Before variable-scaling, the padding was always 1x1 pixel. This was
changed to be scaled, except using the wrong dimension of 2x1 pixels
instead of 1x1 pixel.
2022-12-21 22:21:50 +00:00
Loïc Guilloux
c179c10048 Fix #10263, ccefa76: [scripts] restore tile validation for commands (#10269) 2022-12-21 02:37:59 +01:00
translators
a857ed8240 Update: Translations from eints
finnish: 13 changes by hpiirai
spanish: 1 change by MontyMontana
2022-12-20 18:41:59 +00:00
c962c77306 Fix: Incorrect available height for dropdowns due to unsigned promotion. (#10264)
Dropdowns which are taller than the main window should automatically have
a scrollbar added. This did not work for toolbar dropdown as the location
near the top of the window resulted in an unsigned underflow.
2022-12-20 09:39:23 -05:00
03c1b5169c Fix #10260: Incorrect rect height drawing image in vehicle details. (#10261) 2022-12-19 21:01:17 +00:00
dde15a403c Fix #10257: Incorrect wire position on sloped bridge heads. (#10258) 2022-12-19 20:16:26 +00:00
translators
2012998563 Update: Translations from eints
finnish: 3 changes by hpiirai
2022-12-19 18:42:04 +00:00
translators
e5720325ff Update: Translations from eints
english (au): 3 changes by krysclarke
english (us): 3 changes by 2TallTyler
2022-12-18 18:39:25 +00:00
daaa058493 Change: Vertically centre sprite font relative to TrueType font. 2022-12-18 11:46:01 -05:00
8599041ce4 Fix: GetDefaultFontHeight() is static, don't use -> 2022-12-18 11:46:01 -05:00
translators
888c9172e0 Update: Translations from eints
spanish (mexican): 3 changes by absay
korean: 1 change by telk5093
2022-12-17 18:40:23 +00:00
1eecbd39ed Change: Use lowered not disabled widget for current tab. (#10252)
While tab-buttons are not often used, all other similar occurences use
lowered rather than disabled widgets, so use them for train detail
window too.
2022-12-17 18:04:39 +00:00
Czcibor Bohusz-Dobosz
7425660b3e Change: Set minimum macOS version to 10.13 (#10253) 2022-12-17 18:35:45 +01:00
5eb7e1d3ab Fix: Improve sprite aligner list size and alignment. 2022-12-17 15:38:28 +00:00
8adc47858d Change: Set minimal size on aligner buttons. 2022-12-17 15:38:28 +00:00
33eb9688cf Add: Sprite centre and crosshair toggles on sprite aligner. 2022-12-17 15:38:28 +00:00
Loïc Guilloux
c50fabb574 Fix #10208: allow to use specific underlay for road/tram tunnels (#10233) 2022-12-17 09:01:47 -05:00
131b7f5127 Fix: Vertically centre chat prompt. (#10250) 2022-12-17 12:22:02 +00:00
2TallTyler
0116a422ea Cleanup: Refactor Wide Rivers code slightly 2022-12-16 17:43:33 -05:00
2TallTyler
d67259334a Fix #10218: Sloped river tiles need water both up and downstream 2022-12-16 17:43:33 -05:00
Jonathan G Rennison
c7d7658004 Fix #10214: CMD_CREATE_LEAGUE_TABLE did not set CMD_STR_CTRL 2022-12-16 21:07:36 +01:00
Jonathan G Rennison
1a05e95945 Fix #10214: League and graph buttons in toolbar not having a default action 2022-12-16 21:07:36 +01:00
Jonathan G Rennison
e0cb31ff07 Fix #10214: Header and footer missing from league table saveload 2022-12-16 21:07:36 +01:00
Loïc Guilloux
4f9893cc98 Fix 55a1171: Restore skipping of "colour" character (#10244) 2022-12-16 01:56:25 +01:00
c448eb04d8 Fix #10242: Allow a space for text shadow when clipping WWT_EMPTY/WWT_TEXT. (#10243) 2022-12-15 23:21:10 +00:00
Loïc Guilloux
2848483810 Fix #10206: Disable scripts in intro game (#10241) 2022-12-15 21:43:07 +01:00
Eddi-z
8db4892f49 Codechange: Reshuffle debuglevels in fileio to address spammyness (#10240) 2022-12-15 13:25:06 -05:00
translators
ac12028278 Update: Translations from eints
spanish: 2 changes by MontyMontana
portuguese (brazilian): 86 changes by ericandradex
2022-12-14 18:45:21 +00:00
translators
7e7e1183cf Update: Translations from eints
finnish: 1 change by hpiirai
2022-12-13 18:43:24 +00:00
translators
fd5de3b366 Update: Translations from eints
spanish (mexican): 7 changes by absay
romanian: 5 changes by bnegrut
finnish: 108 changes by hpiirai
2022-12-12 18:46:56 +00:00
translators
49c121ec29 Update: Translations from eints
vietnamese: 38 changes by KhoiCanDev
2022-12-11 18:44:33 +00:00
daacde4496 Fix #10147: Sound effect volume slider no longer set volume. (#10228) 2022-12-10 15:51:45 +00:00
translators
2756741575 Update: Translations from eints
italian: 11 changes by Rivarossi
2022-12-09 18:43:26 +00:00
translators
5cef40591b Update: Translations from eints
slovak: 2 changes by legitalk
2022-12-08 18:43:04 +00:00
Michael Lutz
d5fc423793 Fix #10223: Crash when vehicle cloning fails on order cloning. 2022-12-08 00:09:12 +01:00
translators
985f487065 Update: Translations from eints
spanish: 1 change by MontyMontana
2022-12-05 18:43:08 +00:00
53b827c460 Fix: Maximum space for engine preview image was never scaled. (#10219) 2022-12-05 17:57:27 +00:00
Loïc Guilloux
13d2d11fa8 Fix #10216: Initialise RoadStop caches before using them and don't try to teleport crashed vehicles (#10217) 2022-12-05 12:46:46 +01:00
translators
2c5eb206d4 Update: Translations from eints
vietnamese: 39 changes by KhoiCanDev
spanish: 2 changes by MontyMontana
2022-12-04 18:40:57 +00:00
Michael Lutz
ab9d77ebbe Add: [Script] Regression for ScriptAccounting. 2022-12-04 11:27:24 +01:00
Michael Lutz
1c205b2cda Fix #10212: [Script] Nested ScriptAccounting scopes are not restored properly. 2022-12-04 11:27:24 +01:00
1131608eb4 Fix #10114: Incorrect drag-highlight position with non-power-of-2 scaling. (#10211) 2022-12-03 09:31:52 +00:00
translators
644012dea2 Update: Translations from eints
dutch: 7 changes by Afoklala
2022-12-02 18:45:14 +00:00
translators
a7f78af4aa Update: Translations from eints
chinese (simplified): 3 changes by XiaoJi-Game
2022-12-01 18:47:04 +00:00
485368f607 Fix: Missing extra padding when drawing tooltip text. (#10201)
* Fix: Missing extra padding when drawing tooltip text.

This padding is included when calculating the size of the tooltips, the
difference caused a mismatch in height for some tooltips.

* Codechange: Don't draw grey panel underneath tooltip.

This removes the default framerect padding so it is now added explicitly.
SetMinimalSize is also removed as this is overridden in UpdateWidgetSize
anyway.
2022-11-29 18:55:02 +00:00
translators
3100c6e7d0 Update: Translations from eints
chinese (simplified): 30 changes by XiaoJi-Game
2022-11-29 18:44:34 +00:00
387c57b023 Fix eb4ba1991: Signal icons incorrectly positioned in UI. (#10199) 2022-11-28 20:03:27 +00:00
translators
41c893dd4e Update: Translations from eints
chinese (simplified): 13 changes by XiaoJi-Game
russian: 4 changes by Ln-Wolf
slovak: 7 changes by legitalk
catalan: 77 changes by J0anJosep
turkish: 7 changes by EndChapter
polish: 7 changes by pAter-exe
2022-11-28 18:45:52 +00:00
eaf1e33bd7 Fix #10021: Object GUI resized when switching between different objects. (#10196)
* Fix: Scale object gui margin by interface scale.

* Fix: Improve padding on object info text.

* Fix #10021: Resizing for 1/2/4 object views didn't account for interface scale.

As halving and doubling padding is problematic due to rounding, it is now
added on lower view counts instead of removing on higher view counts.
2022-11-28 00:27:57 +00:00
translators
978f5b9341 Update: Translations from eints
english (au): 3 changes by krysclarke
english (us): 7 changes by 2TallTyler
korean: 52 changes by telk5093
russian: 4 changes by Ln-Wolf
spanish: 6 changes by MontyMontana
portuguese: 3 changes by azulcosta
2022-11-27 18:46:09 +00:00
Tyler Trahan
1c82200e0f Doc: Prepare for 13.0-beta2 release (#10149) 2022-11-27 13:20:07 -05:00
a7ffd47c64 Fix #10191: Incorrect refit highlight position. (#10195)
Refit highlight was not correct for non-power-of-2 interface scale.
2022-11-27 15:13:09 +00:00
translators
35c4af5cb7 Update: Translations from eints
english (au): 4 changes by krysclarke
spanish: 10 changes by MontyMontana
portuguese: 62 changes by azulcosta
2022-11-26 18:45:39 +00:00
Bernard Teo
8a78fa7121 Feature: Contextual actions for vehicles grouped by shared orders (#8425) 2022-11-26 18:03:21 +01:00
dP
5e14a20b3b Feature: [GS] Scriptable league tables (#10001) 2022-11-26 18:03:03 +01:00
translators
b9ce3de23d Update: Translations from eints
slovak: 72 changes by legitalk
2022-11-25 18:46:07 +00:00
Tyler Trahan
b846c574d7 Update: Developer credits (#10190) 2022-11-24 16:08:33 -05:00
stormcone
e29547a3a2 Feature: Show the cargoes the vehicles can carry in the vehicle list window (#8304) 2022-11-24 20:58:10 +00:00
translators
d780ca74ed Update: Translations from eints
italian: 50 changes by Rivarossi
2022-11-24 18:46:20 +00:00
Tyler Trahan
0fc7cdb1e4 Change: Allow building canal by area outside editor (#10173) 2022-11-23 17:48:19 -05:00
53682b4b6b Fix #10114: Wonky depot layout. (#10191)
Depot lists internal layout was not handled well. This is improved by
throwing more Rects at it:
- Vehicle images are now be vertically centred in the rect.
- Image clipping is relaxed to cover the rect, improving larger sprites.
- Outline highlight is now aware of bevel thickness.
2022-11-23 21:01:09 +00:00
translators
e85d2603d9 Update: Translations from eints
italian: 27 changes by Rivarossi
2022-11-23 18:44:39 +00:00
translators
afbad255d3 Update: Translations from eints
turkish: 44 changes by EndChapter
spanish: 1 change by MontyMontana
2022-11-21 18:47:58 +00:00
translators
62125c9e76 Update: Translations from eints
korean: 3 changes by telk5093
turkish: 33 changes by EndChapter
2022-11-20 18:46:46 +00:00
a7adadcf9b Fix: Indent production in industry window and resolve button issues. (#10184)
Industry production used to be indented, although a different amount than
the industry accepts list. This is now added back, with the standard indent
width.

Additionally the cheat-mode production modifier buttons now support RTL and
the list height now takes account of the button height.
2022-11-19 21:18:53 +00:00
translators
a942028803 Update: Translations from eints
dutch: 42 changes by Afoklala
french: 12 changes by glx22
2022-11-18 18:49:43 +00:00
a044e8e007 Fix: Scale minimum visible caption by interface scale. (#10180) 2022-11-17 22:45:15 +00:00
translators
3040efdb10 Update: Translations from eints
spanish (mexican): 74 changes by absay
russian: 2 changes by Ln-Wolf
spanish: 6 changes by MontyMontana
polish: 1 change by pAter-exe
2022-11-17 18:47:07 +00:00
60404c3aea Fix #8770: Centre vehicle status bar icon.
The icon is now centred within its scaled bounding box, which intentionally
leaves a little space around the icon when not at 1/2/4x scale.
2022-11-17 09:12:07 +00:00
9bf24ec56f Codechange: Reorder and properly declare DrawSpriteIgnorePadding().
Parameters have been rearranged to be closer to those of the standard
DrawSprite() function, and PaletteID can now be set.
2022-11-17 09:12:07 +00:00
c81c242c5a Fix: Crash if error message window is too wide for screen. (#10172)
This doesn't seem new, just easier to trigger with new scaling.
2022-11-17 09:10:47 +00:00
6ea3e7e487 Fix #10164: Incorrect slider handle position in RTL. (#10175) 2022-11-16 19:02:51 +00:00
translators
bc5cd4eeda Update: Translations from eints
russian: 3 changes by Ln-Wolf
spanish: 55 changes by MontyMontana
polish: 32 changes by pAter-exe
2022-11-16 18:48:29 +00:00
translators
d30345edfb Update: Translations from eints
english (au): 3 changes by krysclarke
spanish (mexican): 3 changes by absay
english (us): 3 changes by 2TallTyler
russian: 2 changes by Ln-Wolf
french: 11 changes by ZarTek-Creole
portuguese: 3 changes by azulcosta
polish: 28 changes by pAter-exe
2022-11-15 18:47:23 +00:00
translators
cbb2d5303d Update: Translations from eints
spanish (mexican): 14 changes by absay
english (us): 20 changes by 2TallTyler
russian: 5 changes by Ln-Wolf
portuguese: 44 changes by azulcosta
2022-11-14 18:50:11 +00:00
Tyler Trahan
0d631a6fda Change: Reword Finance window's Net Profit to Profit 2022-11-13 19:01:43 -07:00
Tyler Trahan
adf94d7970 Change: Add a Total caption to each category of the finance window 2022-11-13 19:01:43 -07:00
Tyler Trahan
bba1a16836 Change: Make Company GUI Bank Balance text white 2022-11-13 19:01:43 -07:00
translators
553e5e6bbe Update: Translations from eints
english (au): 20 changes by krysclarke
spanish (mexican): 7 changes by absay
korean: 20 changes by telk5093
russian: 13 changes by Ln-Wolf
spanish: 74 changes by MontyMontana
2022-11-13 18:50:23 +00:00
cea62ef73d Fix #10161: Ignore ascender in FallbackLayouter for non-built-in fonts. (#10169) 2022-11-13 17:10:34 +00:00
Tyler Trahan
89a2d0a605 Fix #10154: Don't inconsistently set random company face in network games (#10157) 2022-11-13 11:30:46 -05:00
translators
ced4258969 Update: Translations from eints
english (au): 18 changes by krysclarke
spanish (mexican): 23 changes by absay
english (us): 18 changes by 2TallTyler
korean: 33 changes by telk5093
russian: 18 changes by Ln-Wolf
french: 31 changes by glx22
2022-11-12 18:47:48 +00:00
dff03124e5 Change: Use modalpopup padding for error/query windows. 2022-11-12 18:28:39 +00:00
ecb5393c55 Change: Standardize progress bar layout.
Progress bars are drawn differently depending on when it was added, with
different layouts and sizes.

This change adds a standard padding size to use, and makes all progress
bars visually similar, with scaled padding.
2022-11-12 18:28:39 +00:00
920e588334 Change: Use standard dimensions instead of custom widths. 2022-11-12 18:28:39 +00:00
9666e46739 Feature: Variable GUI scale.
GUI scale is now variable from 100% to 500%, and no longer restricted to
powers-of-2.
2022-11-12 18:28:39 +00:00
13d271217f Change: Sprite-scale inter-character spacing of fonts. 2022-11-12 18:28:39 +00:00
ed60c88b0a Change: Use power-of-2 scaling for some dimensions in GUI.
These are related to drawing sprites that are normally drawn on the
landscape, and should therefore still follow power-of-2 scaling to fit
correctly.
2022-11-12 18:28:39 +00:00
062ea68422 Change: Scale position of font shadow. 2022-11-12 18:28:39 +00:00
dd90d79e7b Add: Setting to toggle thin vs chunky (scaled) bevels. 2022-11-12 18:28:39 +00:00
e554fd7808 Change: Hide WidgetDrawDistances from general use. 2022-11-12 18:28:39 +00:00
890b2666d3 Change: Use scaled WidgetDimensions. 2022-11-12 18:28:39 +00:00
61da064b82 Fix: Settings GUI sprite size. 2022-11-12 18:28:39 +00:00
123983743f Change: Add optional text labels to slider widget. 2022-11-12 18:28:39 +00:00
f0ae111c4a Change: Put ends of slider under centre of control knob. 2022-11-12 18:28:39 +00:00
64a1fc174f Change: Scale thickness of slider bevel. 2022-11-12 18:28:39 +00:00
1180c95372 Codechange: Add parameters to change range of slider widget. 2022-11-12 18:28:39 +00:00
d35f1d3d06 Codechange: Rename slider widget functions to be less specific. 2022-11-12 18:28:39 +00:00
23a8222200 Change: Split vscroll and hscroll padding.
Vertical and horizontal scrollbars are different sizes, this allows
different padding for each type.
2022-11-12 18:28:39 +00:00
90ce704366 Change: Use scaled WidgetDimensions for core widgets. 2022-11-12 18:28:39 +00:00
0bb9a45785 Change: Simplify drawing widget image buttons. 2022-11-12 18:28:39 +00:00
d0add1e07f Change: Ignore offsets when drawing GUI sprite. 2022-11-12 18:28:39 +00:00
b5693becdc Add: Define scaled WidgetDimensions.
Includes RectPadding container.
2022-11-12 18:28:39 +00:00
b6ed595176 Codechange: Prefer suggested widget padding. 2022-11-12 18:28:39 +00:00
0108e9f387 Change: Set up suggested widget padding for panel, frame and inset.
Window handlers are free to ignore the suggested padding, however some
handlers have logic that assumes this information was already provided.
2022-11-12 18:28:39 +00:00
68423c40c5 Fix: Off-by-one in GetAlignedPosition(). 2022-11-12 18:28:39 +00:00
47f4fc6a70 Add: NWidgetPart SetPadding via RectPadding 2022-11-12 18:28:39 +00:00
dd9f6bc803 Change: Use RectPadding Horizontal()/Vertical() helpers. 2022-11-12 18:28:39 +00:00
04cbe57d2a Change: Use RectPadding for widget padding/uz_padding. 2022-11-12 18:28:39 +00:00
75b222b0d9 Add: RectPadding type.
This is similar to Rect but specifies padding to apply to a Rect.
2022-11-12 18:28:39 +00:00
5786d49143 Change: Use Rect when drawing build engine list. 2022-11-12 18:28:39 +00:00
46a1ab0937 Change: Use Rect when drawing infrastructure window. 2022-11-12 18:28:39 +00:00
c9a81fd67b Change: Use Rect for drawing vehicle details. 2022-11-12 18:28:39 +00:00
3ff05321dc Change: Use standard padding for AI Debug window. 2022-11-12 18:28:39 +00:00
1f1378c129 Change: Align picker previews to button centre. 2022-11-12 18:28:39 +00:00
cb059fc081 Change: Use Rect for QueryString editor. 2022-11-12 18:28:39 +00:00
fea7247072 Change: Use standard 'frametext' padding for settings window. 2022-11-12 18:28:39 +00:00
6f95e04005 Change: Use Rect helpers for widget drawing.
This replaces repetitive and sometimes unwieldy use of constants.
2022-11-12 18:28:39 +00:00
cb10ed1509 Change: Move error window padding to widget level.
This simplifies calculation during drawing.
2022-11-12 18:28:39 +00:00
cd0d5a771d Fix: Engine preview text overly padded.
WIP_EP_QUESTION is already padded at the widget level, so no need to apply
extra padding to left/right.
2022-11-12 18:28:39 +00:00
f5f035a22b Codechange: Make use of Rect Width/Height helpers. 2022-11-12 18:28:39 +00:00
632464a623 Codechange: Use Rect in DropDownListItem::Draw(). 2022-11-12 18:28:39 +00:00
d8e01f8aa5 Codechange: Add some Rect helpers.
Shrink/Expand/Translate are marked nodiscard as they provide a new Rect
rather than modifying the original Rect.
2022-11-12 18:28:39 +00:00
17d1fe26c2 Codechange: Helpers to allow passing a Rect to some functions. 2022-11-12 18:28:39 +00:00
eb4ba1991b Change: Use CenterBounds function in more places.
CenterBounds may have a 1 pixel difference so the result is not exactly
the same.
2022-11-12 18:28:39 +00:00
18201dfbc3 Cleanup: Simplify CenterBounds() 2022-11-12 18:28:39 +00:00
ab55d3e1fa Change: Rearrange layouts of station/depot picker windows. 2022-11-12 18:28:39 +00:00
Jonathan G Rennison
7c3c92f8b8 Fix #10155: SyncCompanySettings sending old instead of new setting values (#10158) 2022-11-12 17:24:31 +00:00
Joel-Milligan
59645c6733 Change: Remove scrollbar from town authority actions panel (#9928) 2022-11-11 23:52:38 +01:00
Jonathan G Rennison
64b437fa89 Fix: Data race with mixer thread performance measurements 2022-11-11 23:48:24 +01:00
Jonathan G Rennison
0fae0599b7 Fix: Data race on effect volume setting with mixer thread 2022-11-11 23:48:24 +01:00
Jonathan G Rennison
a962d7476b Fix: Data races on MixerChannel active states 2022-11-11 23:48:24 +01:00
Artin Alavi
5d6cdf4385 Feature: Allow AI/GS to be fully modified in scenario editor (#10152) 2022-11-11 23:48:07 +01:00
translators
3f579fa7dc Update: Translations from eints
dutch: 12 changes by Afoklala
2022-11-11 18:54:11 +00:00
Artin Alavi
cbac243216 Feature: [UI] Split AI/Game Script configuration windows and add them to world gen window (#10058) 2022-11-10 21:39:09 +01:00
Artin Alavi
fd4f148c62 Feature: Hotkey to honk a vehicle's horn (#10110) 2022-11-10 21:36:18 +01:00
translators
27e1d057c5 Update: Translations from eints
english (au): 12 changes by krysclarke
spanish (mexican): 24 changes by absay
english (us): 12 changes by 2TallTyler
russian: 12 changes by Ln-Wolf
french: 1 change by glx22
portuguese: 16 changes by azulcosta
2022-11-10 18:50:49 +00:00
translators
e2f661b281 Update: Translations from eints
spanish: 24 changes by MontyMontana
2022-11-09 18:50:46 +00:00
stormcone
0d303d6c3f Feature: Add cargo filter support to vehicle list. (#8308) 2022-11-08 21:11:16 +01:00
SamuXarick
a8a7f95665 Change: Allow to build dock on clearable watered object tiles (#8514) 2022-11-08 21:04:14 +01:00
Henry Wilson
59dbcdb5ba Feature: Display power-to-weight ratio in ground vehicle details GUI 2022-11-08 21:02:08 +01:00
Henry Wilson
b304c06a4a Codechange: Use override specifier for Train and RoadVehicle structs 2022-11-08 21:02:08 +01:00
Henry Wilson
89cf0d5da8 Codechange: Factor cargotype weight conversion magic numbers 2022-11-08 21:02:08 +01:00
Didac Perez Parera
019dcb7b7b Change: Let AI developers edit non-editable AI/Game Script Parameters (#8895) 2022-11-08 18:23:34 +00:00
Aaron Kofsky
ede0560f9b Feature: Add buttons to toggle music in the Game Options menu (#9727) 2022-11-08 18:21:52 +00:00
Tyler Trahan
31d08421ab Update: Rename mapgen Sea Level string in other language files 2022-11-08 11:12:14 -07:00
Tyler Trahan
62a15734fe Codechange: Rename mapgen Sea Level string 2022-11-08 11:12:14 -07:00
SamuXarick
60ccab3c52 Fix #9908: Close company windows only after all its infrastructure is removed (#9912) 2022-11-08 09:44:17 -05:00
larryfenn
d738cd235f Change: Automatic screenshot numbering with a filename ending in '#' (#9781) 2022-11-08 11:13:16 +00:00
SamuXarick
b7abaa55a3 Codechange: Improve performance when calculating company value (#9901) 2022-11-08 11:11:24 +00:00
SamuXarick
8c4a70e05e Fix: Refresh company window when switching companies (#9910) 2022-11-07 17:54:04 -05:00
translators
b6a899eb2b Update: Translations from eints
slovak: 62 changes by legitalk
2022-11-07 18:48:23 +00:00
Jonathan G Rennison
e931f3061f Fix: Dereference of past-the-end iterator in linkgraph overlay tooltip (#10145) 2022-11-07 00:16:38 +01:00
translators
7711907a6b Update: Translations from eints
german: 16 changes by SecretIdetity
tamil: 3 changes by merni-ns
2022-11-06 18:47:19 +00:00
22803f997b Codechange: Use std::vector for station speclist
This removes manual memory allocation, although we still manage the list
size in roughly the same way.
2022-11-06 16:50:42 +01:00
Jonathan G Rennison
4dc741a8a0 Fix #10011: Incorrect infrastructure totals when overbuilding bay road stop (#10143)
Fix https://github.com/OpenTTD/OpenTTD/issues/10011
2022-11-06 16:46:11 +01:00
Loïc Guilloux
c294e8b19f Codechange: [MinGW] use pe-bigobj-x86-64 format for x64 debug builds (#10142) 2022-11-06 11:24:35 +01:00
Tyler Trahan
0172eb39a2 Fix #10135: Cost of building multiple objects might not match test (#10137) 2022-11-05 14:46:44 -04:00
Tyler Trahan
c719ba560e Fix 03cc0d6: Mark level crossings dirty when removing road from them, not from bridges (#10138) 2022-11-05 14:46:19 -04:00
frosch
fea6a34684 Codechange: SetDParamStr borrows contents from std::string::c_str(). Prevent calling it with temporaries. (#10136) 2022-11-05 17:14:10 +01:00
krysclarke
21cea308f9 Codechange: Move Sound Driver parameter name listings (#10127) 2022-11-05 15:42:20 +01:00
Jonathan G Rennison
3b3c9c1c3a Fix #10129: Use after free in GRFLoadConfig invalid GRF error path (#10130) 2022-11-05 15:17:18 +01:00
translators
d48a48b2cf Update: Translations from eints
russian: 16 changes by Ln-Wolf
dutch: 16 changes by Afoklala
2022-11-04 18:52:05 +00:00
f24286a1ae Fix: Ensure 31-bit shifts are unsigned. (#10128)
Shifting a signed 32-bit integer by 31 bits is undefined behaviour.
A few more than necessary are switched to unsigned for consistentency.
2022-11-04 07:15:59 +00:00
translators
accbfd502e Update: Translations from eints
english (au): 16 changes by krysclarke
english (us): 16 changes by 2TallTyler
korean: 14 changes by telk5093
hungarian: 15 changes by PstasDev
french: 18 changes by glx22
portuguese: 16 changes by azulcosta
polish: 22 changes by pAter-exe
2022-11-03 18:55:35 +00:00
hallonsoda79
0d51460f27 Fix #10023: Allow negative input in text fields when needed (#10112) 2022-11-02 20:54:07 +01:00
translators
71663bbaee Update: Translations from eints
hungarian: 11 changes by PstasDev
2022-11-02 18:53:51 +00:00
Rubidium
648cd1076b Update: other language files after string renames 2022-11-02 17:58:44 +01:00
Rubidium
d5aafaee15 Codechange: rename and move some strings to make them more consistent with the rest of the strings 2022-11-02 17:58:44 +01:00
4031894aef Cleanup: Remove svn-style $Id$ comments. (#10122) 2022-11-01 18:24:31 -06:00
Michael Lutz
35d9cea487 Fix: Too many braces make old gcc sad. (#10116) 2022-11-02 00:53:44 +01:00
frosch
aa06b73137 Codechange: Use positional parameters in the base language either for all or for no parameters. (#10111)
This should make it less confusing to translators.
2022-11-01 22:22:04 +01:00
Tyler Trahan
c19abebf8d Feature: Multi-track level crossings (#9931) 2022-11-01 16:51:23 -04:00
Tyler Trahan
c65a2799c9 Fix #10117: Decrement object burst limit after build check 2022-11-01 13:58:52 -06:00
Michael Lutz
c4e655b1d4 Remove: [Actions] Ubuntu Bionic and Debian Buster from release workflow. (#10115) 2022-10-31 22:37:01 +01:00
Michael Lutz
ac7780af96 Doc: Prepare for 13.0-beta1 release 2022-10-31 21:57:51 +01:00
Michael Lutz
b9635c4712 Doc: Forwardport changelog & doc changes from 12.x branch 2022-10-31 21:57:51 +01:00
translators
36084684ba Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
2022-10-31 18:56:54 +00:00
translators
bf8dc7b157 Update: Translations from eints
frisian: 60 changes by Bouke
tamil: 9 changes by merni-ns
2022-10-30 18:50:24 +00:00
translators
191ea087eb Update: Translations from eints
frisian: 9 changes by Bouke
2022-10-29 18:49:26 +00:00
Nicolas Chappe
8bf56f39f2 Fix #9708: [Linkgraph] Don't assume vehicles have a non-zero max speed 2022-10-29 18:39:03 +02:00
Nicolas Chappe
f8a7b76675 Fix #9665: [Linkgraph] Fix travel times of non-direct journeys 2022-10-29 18:39:03 +02:00
Nicolas Chappe
c5369caa45 Fix: [Linkgraph] possible rounding errors for travel times of low-capacity links 2022-10-29 18:39:03 +02:00
Nicolas Chappe
25b3ff6423 Cleanup: simplify LinkRefresher::RefreshStats 2022-10-29 18:39:03 +02:00
translators
b0fd51a5ef Update: Translations from eints
korean: 1 change by telk5093
german: 5 changes by MagnumSociety
2022-10-27 18:57:01 +00:00
translators
bfa155eb06 Update: Translations from eints
frisian: 91 changes by Bouke
dutch: 3 changes by Bouke
french: 9 changes by glx22
2022-10-25 19:25:45 +00:00
Artin Alavi
dd44f2139e Fix c536bde: Remove problematic inline specifier (#10109) 2022-10-25 04:41:27 +02:00
translators
845174914d Update: Translations from eints
frisian: 8 changes by Bouke
english (us): 1 change by 2TallTyler
dutch: 7 changes by Bouke
polish: 5 changes by pAter-exe
2022-10-24 19:08:45 +00:00
Loïc Guilloux
0afa6f2424 Codechange: [CMake] Auto-fill list of #include in script_window.hpp (#10103) 2022-10-24 12:35:58 +02:00
translators
4052feef1f Update: Translations from eints
english (au): 1 change by krysclarke
english (us): 1 change by 2TallTyler
russian: 1 change by Ln-Wolf
portuguese: 1 change by azulcosta
polish: 3 changes by pAter-exe
2022-10-23 18:58:18 +00:00
b04298f131 Fix #9087: NewGRF invalidation calls ReInitAllWindows with wrong parameter. (#10102) 2022-10-23 14:21:10 +01:00
Michael Lutz
3a11a2ed0e Fix a9a21e78: Depots aren't really stations. 2022-10-23 14:03:38 +02:00
Tyler Trahan
1e3e30c096 Fix a394be2: Spell Maintenance correctly (#10097) 2022-10-23 13:01:36 +01:00
ef8322ba25 Change: Add panel widget to waypoint GUI. 2022-10-23 00:07:15 +01:00
translators
e7a16f4514 Update: Translations from eints
english (au): 3 changes by krysclarke
vietnamese: 7 changes by KhoiCanDev
catalan: 7 changes by J0anJosep
2022-10-22 18:58:11 +00:00
Artin Alavi
c536bde19e Fix #8252: Remove duplicate functionality in screenshot.cpp 2022-10-22 20:51:02 +02:00
Nicolas Chappe
721d98a7d0 Feature: Constantly update destination of 'any depot' orders 2022-10-22 14:19:08 +02:00
Nicolas Chappe
a4052ca348 Codechange: Add VehicleOrderSaver::Restore() 2022-10-22 14:19:08 +02:00
Nicolas Chappe
7e7d943526 Codechange: [YAPF] Allow to retrieve the final tile of the calculated path 2022-10-22 14:19:08 +02:00
Nicolas Chappe
227626b0b7 Change: [YAPF] All compatible depots are targets for 'any depot' orders 2022-10-22 14:19:08 +02:00
Nicolas Chappe
a9a21e784d Codechange: Always set the ODATFB_NEAREST_DEPOT flag for 'any depot' orders 2022-10-22 14:19:08 +02:00
Tyler Trahan
4daad7f348 Change: Don't make wide rivers using original landscape generator 2022-10-22 12:16:56 +02:00
Henry Wilson
a394be2780 Feature: Airport construction GUI displays infrastructure cost 2022-10-22 12:16:46 +02:00
translators
30ff89cac0 Update: Translations from eints
frisian: 33 changes by Bouke
spanish (mexican): 10 changes by absay
english (us): 4 changes by 2TallTyler
korean: 7 changes by telk5093
dutch: 3 changes by Afoklala
2022-10-21 19:00:44 +00:00
Tyler Trahan
664771d085 Feature: Wide rivers 2022-10-20 21:17:35 +02:00
translators
520520c11c Update: Translations from eints
frisian: 82 changes by Bouke
russian: 10 changes by Ln-Wolf
portuguese: 3 changes by azulcosta
2022-10-20 19:08:43 +00:00
glx22
87d1bd895a Fix f6530f3c2: [Actions] set-output was not correctly converted 2022-10-20 19:22:01 +02:00
glx22
8ffe59373f Update: [Actions] use annotation-check v3 2022-10-20 19:22:01 +02:00
Loïc Guilloux
f6530f3c2d Codechange: [Actions] set-output is deprecated (#10089) 2022-10-19 21:05:11 +02:00
Nicolas Chappe
864771ca09 Feature: [Linkgraph] Show a tooltip with statistics when hovering a link 2022-10-18 22:03:39 +02:00
Nicolas Chappe
7c79a2a767 Change: Do not generate hover events at each frame 2022-10-18 22:03:39 +02:00
Nicolas Chappe
e660860d4b Codechange: Simplify logic of mouse loop 2022-10-18 22:03:39 +02:00
Nicolas Chappe
65530a76f6 Codechange: Allow use of SetDParam for tooltips 2022-10-18 22:03:39 +02:00
Bouke Haarsma
93d2d4590f Fix #9995: Adjust viewport zoom level for HiDPI displays
On HiDPI screens the zoom level is increased for detailed rendering. This causes hard-coded zoom levels to be off by this adjustment. To fix these default zoom levels, we scale the zoom level based on `_gui_zoom` to get the scaled zoom level.
2022-10-18 22:03:21 +02:00
Tyler Trahan
47a998fb0c Feature: Towns don't build parallel, redundant bridges 2022-10-18 22:02:45 +02:00
translators
252111512f Update: Translations from eints
frisian: 17 changes by Bouke
english (au): 1 change by krysclarke
russian: 1 change by Ln-Wolf
dutch: 4 changes by Bouke
portuguese: 4 changes by azulcosta
2022-10-18 19:05:11 +00:00
translators
35c1aeb6d1 Update: Translations from eints
english (au): 3 changes by krysclarke
english (us): 3 changes by 2TallTyler
russian: 3 changes by Ln-Wolf
2022-10-17 19:13:33 +00:00
Tyler Trahan
f7eb0ffc37 Feature: Purchase land multiple tiles at a time 2022-10-17 20:41:47 +02:00
Michael Lutz
8e6ed8d5e9 Fix db98cedb: Swap the tile parameter validation around as only the first TileIndex is automatically validated. 2022-10-17 07:54:58 +01:00
Michael Lutz
10daaca5ea Fix db98cedb: Swap parameters for CmdRemoveRailroadTrack, too. 2022-10-17 07:54:58 +01:00
krysclarke
a0342fb170 Fix: Typo and grammatical correction in CONTRIBUTING.md (#10085) 2022-10-17 07:52:14 +01:00
translators
3b071f47e4 Update: Translations from eints
vietnamese: 1 change by KhoiCanDev
2022-10-16 18:54:39 +00:00
Jonathan G Rennison
47456ac672 Change: Reduce number of instructions in AlphaBlendTwoPixels 2022-10-16 18:55:09 +02:00
Jonathan G Rennison
f9cdb5b610 Fix: Correctly set alpha of output in AlphaBlendTwoPixels
Match alpha behaviour of ComposeColourRGBA
2022-10-16 18:55:09 +02:00
glx22
da1a0d042e Fix: don't use animated SSE4 Draw() when animation is disabled 2022-10-16 18:55:09 +02:00
SamuXarick
c7505539af Fix #9869: remove docking tile when doing a clear square
Terraforming through objects placed on water didn't properly remove docking tiles as expected.

By moving some logic regarding removal of docking tiles into DoClearSquare, the issue is solved, while also simplifying code, avoiding repetition elsewhere.
2022-10-16 18:29:03 +02:00
SamuXarick
be7db78767 Add: ScriptCargo::GetWeight regression tests 2022-10-16 18:28:28 +02:00
SamuXarick
8d0d45c431 Add: ScriptCargo::GetWeight to get cargo weights 2022-10-16 18:28:28 +02:00
Tyler Trahan
3d45bc4abe Feature: Build objects by area 2022-10-16 18:28:08 +02:00
Michael Lutz
bd357656ba Codechange: [NewGRF] Replace magic number for default object size by a constant. 2022-10-16 18:28:08 +02:00
SamuXarick
e604b76d18 Fix: List a max of four share owners instead of three
An AI company may have four different share owners, but the company information window is limited to display a max of three. This commit increases that limit.
2022-10-16 18:27:54 +02:00
SamuXarick
3dda8c9bad Fix: ScriptRoad::HasRoadType really check for RoadType
Script::HasRoadType was only checking if the tile had the same RoadTramType as that of the RoadType provided.
Now it really checks RoadType against RoadType.
2022-10-16 18:27:23 +02:00
Bouke Haarsma
45d98f689a Fix #9993: Handle DPI changes on macOS and Windows 2022-10-16 16:52:14 +02:00
Bouke Haarsma
bda602f4b0 Fix: reduce framerate overhead on train ticks
Tick() is a noop for all but front-engine / crashed vehicles. Starting a framerate is rather cheap, but not free, and introduces a lot of overhead for such close loops.
2022-10-16 15:13:29 +02:00
frosch
f4e2a462fe Cleanup: Remove unused flag sprites. 2022-10-16 14:56:52 +02:00
5cc1a48db7 Change: Use NC_BIGFIRST in group window.
This means we no longer need to manually calculate the size of other
widgets in the window to determine how much space we need, as the widget
system will automatically fill as much as possible.
2022-10-16 14:56:34 +02:00
ba94efba87 Change: Add flag to apply resize to largest resize step first.
Resize step is normally allocated equally amongst all resizable widgets.
With this flag, we allocate as much as possible from the largest
resize step first.
2022-10-16 14:56:34 +02:00
dc1b84aa1e Cleanup: Text widgets are capable of drawing text without assistance.
Remove custom text drawing of some widgets in favour of standard text
widgets.
2022-10-16 14:24:51 +02:00
0e3400894f Cleanup: Remove redundant WWT_PANEL SetDataTips.
WWT_PANEL defaults to 0x0 data and no tooltip, so no need to declare
the same in the widget tree.
2022-10-16 14:24:51 +02:00
296af146fb Change: Default widget text colour to black.
TC_FROMSTRING really means blue, and we almost never actually use
blue text.
2022-10-16 14:24:51 +02:00
Tyler Trahan
db98cedb7e Fix #9883: Show cost/income float over end tile of rail or road construction 2022-10-16 14:15:31 +02:00
3e86f337a8 Change: Simplify graph's company key window. 2022-10-11 08:36:59 +01:00
ccb62c3a55 Change: Simplify industry-cargoes widgets. 2022-10-11 08:36:59 +01:00
edbf99ed17 Change: Use standard sizing for AI competitor limit buttons. 2022-10-11 08:36:59 +01:00
33704269bd Change: Simplify widget layout of settings window. 2022-10-11 08:36:59 +01:00
686204ff1c Change: Simplify widget layout of story book window. 2022-10-11 08:36:59 +01:00
e8edecf6b1 Change: Adjust layout of file windows to fix overlapping widgets. 2022-10-11 08:36:59 +01:00
fc944829e1 Change: Don't use zero-sized plane for World Generation window.
Use of zero-sized plane causes the window size calculation to change
depending on which plane is displayed. Instead use an empty plane so
that largest of the planes is taken into account for sizing.
2022-10-11 08:36:59 +01:00
Bouke Haarsma
887b760c88 Change: Strip symbols from bundles except macOS (#10072) 2022-10-10 13:42:54 +01:00
Charles Pigott
9059215b3b Fix #10073: Stop truncating output of list_ai and friends commands 2022-10-10 13:42:07 +01:00
Charles Pigott
24f3022ee0 Fix #10074: list_ai console commands and friends were missing help text 2022-10-10 13:42:07 +01:00
translators
c482f05616 Update: Translations from eints
english (au): 7 changes by krysclarke
2022-10-07 19:02:50 +00:00
Bouke Haarsma
d0dcb6547e Change: Don't strip symbols from bundles (#10071) 2022-10-07 12:56:45 +02:00
translators
633b903f16 Update: Translations from eints
turkish: 7 changes by kgecmen
2022-10-05 19:06:12 +00:00
Bouke Haarsma
c7f55a058b Fix: link overlay line width on HiDPI displays (#10064) 2022-10-04 11:58:58 +02:00
af6c4d50ce Change: Tidy up coverage area label widget layout.
Label is now centered properly and uses standard spacing.
2022-10-03 22:14:18 +01:00
8626090b24 Codechange: Draw station acceptance text in its own widget. 2022-10-03 22:14:18 +01:00
translators
f011a559d0 Update: Translations from eints
latvian: 1 change by lexuslatvia
2022-10-02 18:55:38 +00:00
Jonathan G Rennison
73e5c57e6b Fix 5e413c9d: Last sprite offset in GRF file was not recorded (#10062)
A line was missed when preparing PR #9988, as this had been added
in a commit prior to the one which the PR was immediately based on
2022-09-29 11:56:42 +02:00
Bouke Haarsma
f3fd9b5895 Codechange: typo in code comment (#10061) 2022-09-29 00:12:21 +01:00
translators
d843c8bd48 Update: Translations from eints
italian: 5 changes by Rivarossi
polish: 1 change by pAter-exe
2022-09-27 19:02:05 +00:00
translators
e5203f3409 Update: Translations from eints
vietnamese: 7 changes by KhoiCanDev
german: 6 changes by Wuzzy2
2022-09-26 18:59:27 +00:00
frosch
bdc17b18e1 Cleanup: The readme is for people building/packaging OpenTTD. Player-focussed manuals are in the Wiki. (#10026) 2022-09-26 18:17:36 +02:00
Tyler Trahan
faa382beda Doc: Add Discord link in README and CONTRIBUTING (#10043) 2022-09-26 18:17:08 +02:00
translators
761105aaa4 Update: Translations from eints
russian: 1 change by Ln-Wolf
catalan: 1 change by J0anJosep
2022-09-25 18:53:51 +00:00
b00e18fe9f Cleanup: Remove unused GetUnicodeGlyph() 2022-09-25 18:34:24 +01:00
2cdd8b7429 Change: Separate fontcache implementations. 2022-09-25 18:34:24 +01:00
f6ad8e1c9c Change: Rename some freetype things to fontcache.
The font cache supports more than just FreeType as a font provider, but still used freetype in some naming.

This now uses more suitable terms.
2022-09-25 18:34:24 +01:00
273988551d Fix: font_win32.cpp compile failure with WITH_FREETYPE 2022-09-25 18:34:24 +01:00
0c20a5f39f Fix: Open scenario editor date query once. (#10050)
Clearing `_left_button_clicked` causes the button callback to be fired
constantly while the mouse button is held.
2022-09-25 16:08:52 +01:00
Loïc Guilloux
93b711d70d Fix #10048: Don't relocate company HQ on the same exact location (#10049) 2022-09-24 21:56:23 +02:00
translators
70d33dc71f Update: Translations from eints
spanish (mexican): 1 change by absay
chinese (simplified): 1 change by XiaoJi-Game
korean: 1 change by telk5093
2022-09-24 18:54:01 +00:00
translators
2b29f1a181 Update: Translations from eints
english (us): 1 change by 2TallTyler
dutch: 15 changes by Bouke
portuguese: 1 change by azulcosta
2022-09-23 18:57:59 +00:00
d7ceb7efea Change: Use widget string parameters for face window. (#10046)
The face window previously drew the buttons of face settings itself.
Instead we can provide parameters for each widget and let the widget
system draw the buttons.
2022-09-23 17:09:35 +01:00
69527abb6f Fix 9aef7b8c: Don't dispatch hover event if already hovering. (#10042)
This fixes the timed tooltip window being (invisibly) destroyed and
reconstructed every frame.

This also affects the unused OnHover() window event.
2022-09-22 20:38:11 +01:00
translators
1f04cc62d9 Update: Translations from eints
welsh: 8 changes by Osian
korean: 6 changes by telk5093
2022-09-22 18:54:52 +00:00
607ef09fa5 Fix: File list mouse hover behaviour. (#10040)
Hover highlight was visible even if the mouse pointer was in a different
window. Resolved by using OnMouseOver() instead of OnMouseLoop().
2022-09-21 12:08:11 +01:00
dP
548f0496a9 Change: Make _tick_counter 64bit to avoid wrapping (#10035) 2022-09-21 12:42:29 +02:00
Tyler Trahan
164ec3ac07 Fix: Disable "turn around" button for other companies' road vehicles (#10033) 2022-09-21 12:39:56 +02:00
Tyler Trahan
07443969f9 Fix ca19a0d: Network hosts also use favorite face 2022-09-21 12:39:07 +02:00
Tyler Trahan
6d84b1e108 Fix ca19a0d: Send the proper network command when loading favorite face 2022-09-21 12:39:07 +02:00
Tyler Trahan
a4e00c5cb5 Fix #9989: Zero Net Profit is neither negative nor positive (#9991) 2022-09-21 12:38:03 +02:00
Jonathan G Rennison
5e413c9dcd Fix #9804: Only apply sprite_zoom_min setting when sprites available (#9988)
Only discard sprite zoom levels when a suitable higher zoom level is
defined in the same colour mode

This is to avoid placeholder or empty sprites being used, causing
visual artefacts
2022-09-21 12:37:11 +02:00
Jonathan G Rennison
20f7ff8ac0 Codechange: Fix unnecessary string reallocation in IConsoleLine constructor 2022-09-21 12:32:07 +02:00
Jonathan G Rennison
0a7ffae0d9 Fix #10010: Memory leak in IConsolePrint in non-dedicated case 2022-09-21 12:32:07 +02:00
0bac74ec2b Fix #10038: Missing upper bounds check when loading custom playlists (#10039) 2022-09-21 08:31:59 +01:00
f59f0195e3 Fix: Wrong string used to determine size of zoomed out station sign. (#10036) 2022-09-20 20:54:42 +01:00
fa5e2ca276 Cleanup: Tweak panel layout of Online Players window.
This ensures panel borders not hidden behind other widgets.
2022-09-20 07:51:25 +01:00
8e9ca5ebcb Fix: Online Players list mouse hover behaviour.
Hover highlight was visible even if the mouse pointer was in a different
window, and the window refreshed itself every frame if the mouse pointer
was not over its matrix widget.

Resolved by using OnMouseOver() instead of OnMouseLoop(), and only
redrawing if the hover position has changed.
2022-09-20 07:51:25 +01:00
translators
81388d9425 Update: Translations from eints
chinese (simplified): 7 changes by XiaoJi-Game
2022-09-17 18:56:59 +00:00
translators
0c8db77154 Update: Translations from eints
dutch: 6 changes by Afoklala
2022-09-16 19:03:57 +00:00
translators
b38051c9ad Update: Translations from eints
galician: 11 changes by pvillaverde
polish: 5 changes by pAter-exe
2022-09-15 18:58:38 +00:00
translators
984e0b1263 Update: Translations from eints
spanish (mexican): 5 changes by absay
catalan: 6 changes by J0anJosep
2022-09-14 18:59:16 +00:00
translators
d29289addb Update: Translations from eints
english (us): 6 changes by 2TallTyler
russian: 2 changes by Ln-Wolf
portuguese: 6 changes by azulcosta
2022-09-13 18:59:58 +00:00
Loïc Guilloux
57717a20d3 Fix #9966: workaround a VS2022 optimisation bug (#10029) 2022-09-13 12:27:49 +02:00
dP
64453cb134 Fix: Incorrect player name in online players window (#10013) 2022-09-12 09:18:41 +01:00
Stephan Sokolow
e5643c65c1 Change: Use the Simulation subcategory in openttd.desktop (#10015)
Add the XDG Menu Spec-defined Simulation "Additional Category" so launchers can subcategorize the Games menu/section more effectively.
2022-09-12 09:18:13 +01:00
Andy
129979acf7 Change: 'string' is spurious in 'Filter string:' labels for filter UI widgets (#10022) 2022-09-12 09:17:18 +01:00
Andy
039f90d05f Feature: add sticky pin to Object Selection UI panel (#10019) 2022-09-11 22:15:02 +02:00
frosch
e2c46fda3f Fix: [NewGRF] Ensure that stations always have an even number of sprite layouts.
The drawing code has a special fallbacks for zero layouts, but fails hard for one layout.
(odd numbers >= 3 are weird, but do not fail as badly as 1)
2022-09-11 21:26:06 +02:00
frosch
5c66de860d Fix: [NewGRF] Result bit 0 of callback 14 was not ignored in the GUI. 2022-09-11 21:26:06 +02:00
frosch
f7022925d3 Cleanup: [NewGRF] Callback 14 used a weird value for var10 in the GUI.
The value 0x2110000 probably originated from a mixup between callback 14 (sprite layout) and 24 (tile layout).
The latter does indeed use a var10 value like that.
2022-09-11 21:26:06 +02:00
Andy
a06d323f03 Feature: add shade widget to Object Selection UI panel (#10020) 2022-09-11 21:22:06 +02:00
f279fc5772 Fix: DrawStringMultiLine() could overdraw (#10014)
This function did not take the line height into account when checking text will fit before the bottom bounds.
2022-09-10 17:48:38 +01:00
translators
0355299639 Update: Translations from eints
dutch: 36 changes by Bouke
2022-09-08 19:01:47 +00:00
translators
0c848a9b3b Update: Translations from eints
dutch: 2 changes by Bouke
2022-09-07 18:59:13 +00:00
Bouke Haarsma
18c210b013 Fix: title positioning on HiDPI displays 2022-09-07 01:32:37 +02:00
2d2a5dd966 Fix: Change duration of news window scroll depending on GUI zoom. 2022-09-06 19:57:09 +01:00
8b989d4999 Fix: Update news window viewport if GUI zoom is changed. 2022-09-06 19:57:09 +01:00
translators
57fa8690df Update: Translations from eints
dutch: 1 change by Bouke
2022-09-05 18:56:06 +00:00
Patric Stout
8ac0ab47b0 Update: to all the friends we have lost and those we have gained (#10000) 2022-09-04 22:01:08 +02:00
Patric Stout
15f4d7c04c Remove: [GitHub] old configuration file for stale-bot (#9998)
This bot was deactivated months (years?) ago.
2022-09-04 21:42:08 +02:00
frosch
54ac304828 Fix: [NewGRF] Upper 16 random bits should be the same for all station tiles in callback 140. (#9992) 2022-09-03 22:37:03 +02:00
dP
c839950791 Cleanup: Remove duplicate command_type.h include (#9986) 2022-09-01 18:15:07 +02:00
frosch
9529703cab Codechange: When checking industry placement conditions, perform cheap checks first. (#9987)
1. Built-in checks on industry level.
2. Built-in checks on industry tiles.
3. NewGRF-defined checks on industry level.
4. NewGRF-defined checks on industry tiles.
2022-09-01 18:13:43 +02:00
Aaron Katzin
2fe8a257ac Add: [Actions] Ubuntu Jammy Jellyfish (22.04) build for releases (#9881) 2022-08-31 16:11:34 +02:00
Loïc Guilloux
31668b8f94 Fix #9914, 86818e5: prevent more useless pathfinder run for blocked vehicles (#9917) 2022-08-31 12:52:13 +02:00
Tyler Trahan
788b06fe0f Change: New player companies use favorite manager face, if saved (#9895) 2022-08-30 16:26:02 +02:00
Joel-Milligan
3937953f72 Fix #9363: Rebuild client list on reinit event (#9929) 2022-08-30 14:56:19 +02:00
Niels Martin Hansen
5a0dd7e322 Fix #9971: Don't assert that time moves forward 2022-08-27 22:59:36 +02:00
Niels Martin Hansen
4253db28fa Fix #9972: Add some missing fill/resize flags on Framerate window widgets 2022-08-27 22:20:01 +02:00
translators
db378e746b Update: Translations from eints
korean: 2 changes by telk5093
2022-08-27 18:56:07 +00:00
Niels Martin Hansen
e6aab701c9 Fix #9977: Use a deque rather than linked list for console buffer 2022-08-27 16:03:41 +02:00
Niels Martin Hansen
aaab0610eb Fix: Only apply debuglevel changes after successful parse 2022-08-27 09:17:09 +02:00
Niels Martin Hansen
c6953f13e4 Fix #9940: Print debuglevel parse errors to console when changed from console 2022-08-27 09:17:09 +02:00
translators
dcdc8d187c Update: Translations from eints
dutch: 1 change by Bouke
2022-08-26 18:58:27 +00:00
frosch
acf9d786f1 Fix: [NewGRF] Default value of RailVehicleInfo::railveh_type was inconsistent with other default properties. (#9967)
If a NewGRF assigned neither "power" nor "dual-headed" properties,
then "railveh_type" defaulted to "singlehead-engine", while "power=0" said "it's a wagon".
2022-08-26 20:50:33 +02:00
glx22
bba6ad1f4e Fix #9935: Use more selectivity when building SSE specific code 2022-08-26 19:36:18 +02:00
translators
e9507e7ffa Update: Translations from eints
latvian: 31 changes by lexuslatvia
2022-08-25 18:57:10 +00:00
translators
04911822c1 Update: Translations from eints
indonesian: 1 change by K4smun1
2022-08-24 19:01:19 +00:00
glx22
e3968cdf65 Fix #9974, aa5a8fe: strftime buffer maxsize is off by one
strftime() return value doesn't count NULL character, but buffer size must include it.
2022-08-23 17:53:59 +02:00
translators
882b8f45d9 Update: Translations from eints
hungarian: 31 changes by andrejmoltok
romanian: 27 changes by andrejmoltok
2022-08-22 18:57:23 +00:00
translators
417f9bb48d Update: Translations from eints
french: 1 change by glx22
hindi: 18 changes by baijuch
2022-08-21 18:53:43 +00:00
translators
88a046a76e Update: Translations from eints
korean: 7 changes by telk5093
2022-08-19 19:00:39 +00:00
translators
be352ce1b6 Update: Translations from eints
catalan: 11 changes by J0anJosep
2022-08-09 18:54:56 +00:00
translators
eb805b77b7 Update: Translations from eints
german: 1 change by SecretIdetity
2022-08-08 18:54:30 +00:00
SamuXarick
374f0c7d11 Fix 6fe445e: Removing rail station parts without ctrl pressed was also removing tracks
The behaviour of holding ctrl key is swapped
2022-08-07 10:58:43 +02:00
translators
6893135fef Update: Translations from eints
english (au): 536 changes by krysclarke
2022-08-06 18:54:39 +00:00
translators
5a404a17ee Update: Translations from eints
korean: 1 change by telk5093
polish: 1 change by pAter-exe
2022-08-02 18:53:52 +00:00
translators
6b4fd01eeb Update: Translations from eints
italian: 1 change by Rivarossi
2022-08-01 18:59:48 +00:00
translators
b7462934e2 Update: Translations from eints
dutch: 1 change by Afoklala
2022-07-31 18:52:44 +00:00
translators
ccb9d99880 Update: Translations from eints
arabic (egypt): 13 changes by AviationGamerX
persian: 16 changes by pooyana84
finnish: 33 changes by lanurmi
2022-07-29 18:55:22 +00:00
translators
e3759931e7 Update: Translations from eints
english (us): 1 change by 2TallTyler
arabic (egypt): 62 changes by AviationGamerX
turkish: 1 change by ahmetlii
2022-07-28 18:56:27 +00:00
translators
97d79c8e52 Update: Translations from eints
spanish (mexican): 1 change by absay
catalan: 1 change by J0anJosep
2022-07-27 18:54:03 +00:00
translators
d1d7e47896 Update: Translations from eints
russian: 1 change by Ln-Wolf
portuguese: 1 change by azulcosta
2022-07-25 18:56:07 +00:00
translators
77a8e3b649 Update: Translations from eints
polish: 1 change by pAter-exe
2022-07-24 18:55:01 +00:00
Nicolas Chappe
6d154e72dd Fix #8584: Vehicles with shared orders getting invalid or unexpected start dates 2022-07-24 09:28:01 +02:00
translators
67608350b6 Update: Translations from eints
finnish: 45 changes by lanurmi
portuguese (brazilian): 29 changes by rodigu
2022-07-23 18:52:50 +00:00
Jonathan G Rennison
67331fe946 Fix #9951: Scenario editor random industries button and persistent storage (#9952)
BasePersistentStorageArray::SwitchMode was not called
2022-07-21 16:21:38 +01:00
translators
8f772352ce Update: Translations from eints
italian: 1 change by Rivarossi
2022-07-20 18:57:16 +00:00
translators
b199779ad4 Update: Translations from eints
chinese (simplified): 26 changes by ZZY2357
korean: 1 change by telk5093
2022-07-19 18:55:56 +00:00
Patric Stout
77a85e9b4c Fix: CmdSetAutoReplace didn't validate group type and engine type match (#9950)
Basically, you could setup an auto-replace in a group for trains
to replace a ship with another ship.

Most of the code is surprisingly okay with this, it is only the
group statistics that doesn't like this.
2022-07-09 20:06:22 +02:00
Patric Stout
979704271b Fix: reverse train direction command did not validate the given vehicle properly (#9947)
You could give a wagon in the chain to reverse (which makes no
functional sense ofc). In result, only parts of the vehicle were
reversing, leading to weird crashes.
2022-07-09 12:28:20 +02:00
Patric Stout
055121df80 Fix: depot-related commands did not validate depot tiles properly (#9948)
The bug comes in two slices:

1) the functions never actually checked if "tile" was a depot tile.
   This allowed executing the function on tile 0, where are the
   things like shadows of aircrafts are.
2) BuildDepotVehicleList() first checked if a vehicle is in a depot
   before checking if it was a primary vehicle. This is invalid
   for aircraft.

Fixing the first hides the second, and fixing the second makes the
first non-exploitable. But, fixing both felt like the best thing
to do.
2022-07-09 12:28:09 +02:00
Patric Stout
100aca1848 Fix: CmdRemoveRoadStop didn't validate the height property properly (#9945)
Height was a unsigned 32bit integer, where TileAddWrap uses a
signed 32bit integer for the height. In result, there was an
implicit cast from unsigned to signed, messing things up.

But looking at it from a functional perspective, allowing such
large values is not sensible. In fact, width is restricted to
just a 8bit integer. By changing height to a 8bit integer too,
the implicit cast will never make a positive value negative anymore.
2022-07-09 12:27:58 +02:00
Patric Stout
9957675a66 Fix: autoreplace command did not validate the vehicle argument properly (#9946)
It first checked if the vehicle was in the depot, which for some types
is only a valid action for the primary vehicle. Afterwards, it checked
if the vehicle was a primary vehicle.
2022-07-09 11:25:17 +02:00
Patric Stout
4651ad94fe Fix: commands with a RoadType in their arguments were not validated properly (#9944)
Although it was checked that RoadType was not 63 (INVALID_ROADTYPE),
and all values lower than 63 are fine, it also allowed values higher
than 63. As the RoadType is a "byte", it could contain values up
to 255.
2022-07-09 10:03:57 +02:00
Patric Stout
6810d09c1b Fix: commands with Axis in their arguments were not validated properly (#9943)
When you don't type an Enum, it is a signed value. To validate
if an Axis is valid, it is checked to be lower than AXIS_END. Which
is the case for any value below 0.
2022-07-09 10:03:41 +02:00
Michael Lutz
dd93244853 Fix: The first tile in commands received from a client wasn't validated properly. 2022-07-08 22:37:41 +02:00
Jonathan G Rennison
19af139631 Fix #9937: Station industries_near incorrect after removing part moved sign
RecomputeCatchment was being called before moving the sign tile
instead of afterwards
2022-06-29 12:49:55 +02:00
translators
f72b9fa767 Update: Translations from eints
italian: 22 changes by Rivarossi
2022-06-28 18:54:28 +00:00
translators
ffd3c11ba7 Update: Translations from eints
italian: 8 changes by Rivarossi
spanish: 19 changes by MontyMontana
2022-06-24 18:48:39 +00:00
translators
68257e0d7d Update: Translations from eints
turkish: 1 change by jnmbk
spanish: 12 changes by MontyMontana
2022-06-23 18:50:06 +00:00
translators
f64cf8679d Update: Translations from eints
chinese (traditional): 6 changes by wpi3
italian: 2 changes by Rivarossi
turkish: 1 change by jnmbk
2022-06-21 18:47:23 +00:00
translators
278c1d06cf Update: Translations from eints
italian: 6 changes by Rivarossi
turkish: 37 changes by jnmbk
2022-06-20 18:48:32 +00:00
translators
79af42e992 Update: Translations from eints
czech: 9 changes by LubosKolouch
2022-06-19 18:45:14 +00:00
Jonathan G Rennison
4acccc232a Fix #9925: Industry tile layout validation for layouts of only one tile 2022-06-18 22:02:08 +02:00
translators
814c61a321 Update: Translations from eints
tamil: 20 changes by Aswn
2022-06-11 18:44:50 +00:00
Niels Martin Hansen
470c902bdc Fix #9918: Reset industy last production year on scenario start 2022-06-09 23:03:25 +02:00
Niels Martin Hansen
2cdb0cb084 Codechange: Factor out OnStartScenario function 2022-06-09 23:03:25 +02:00
translators
0d3756818f Update: Translations from eints
korean: 1 change by telk5093
2022-06-07 18:48:01 +00:00
translators
8cdf303e72 Update: Translations from eints
indonesian: 30 changes by indrabagus
2022-06-06 18:49:24 +00:00
translators
0a3d5f5ff8 Update: Translations from eints
italian: 1 change by Rivarossi
2022-06-02 18:51:19 +00:00
glx22
aeeee9f18e Fix #9909, 13528bf: Left-over unused parameter breaks overload resolution 2022-06-01 19:24:48 +02:00
glx22
675cf7a8ee Fix 6fe445e: [Script] Respect joining adjacent when building an airport 2022-05-31 23:14:47 +02:00
translators
9fca8af586 Update: Translations from eints
spanish (mexican): 7 changes by absay
2022-05-31 18:49:21 +00:00
translators
a59c19c6c2 Update: Translations from eints
chinese (traditional): 24 changes by Tetrapod1206
italian: 6 changes by Rivarossi
2022-05-30 18:48:34 +00:00
Niels Martin Hansen
5587e439a9 Fix: Industry layouts with zero regular tiles should be invalid 2022-05-29 16:34:30 +02:00
translators
578bb6638f Update: Translations from eints
chinese (traditional): 120 changes by wpi3
vietnamese: 2 changes by KhoiCanDev
2022-05-28 18:47:05 +00:00
translators
e3a4524133 Update: Translations from eints
chinese (traditional): 130 changes by Tetrapod1206, 10 changes by wpi3
italian: 6 changes by Rivarossi
2022-05-27 18:52:21 +00:00
glx22
906613e83a Change: [CMake] Disable newgrf scan for regression check 2022-05-27 19:57:50 +02:00
glx22
ed1457dca3 Fix 55170ae: [Script] Building two-way signals could end up one-way 2022-05-27 19:57:50 +02:00
translators
992c72c0cb Update: Translations from eints
chinese (traditional): 365 changes by wpi3
2022-05-26 18:50:37 +00:00
translators
57230c559b Update: Translations from eints
swedish: 18 changes by joeax910
vietnamese: 26 changes by KhoiCanDev
2022-05-25 18:51:33 +00:00
translators
d89e7484c8 Update: Translations from eints
swedish: 15 changes by joeax910
2022-05-24 18:51:54 +00:00
translators
59f16b1a38 Update: Translations from eints
korean: 5 changes by telk5093
russian: 12 changes by Ln-Wolf
2022-05-23 18:50:50 +00:00
translators
8d8f45f0dd Update: Translations from eints
russian: 25 changes by Ln-Wolf
2022-05-22 18:48:51 +00:00
translators
3a2c0531b6 Update: Translations from eints
italian: 1 change by Rivarossi
polish: 2 changes by pAter-exe
2022-05-21 18:48:45 +00:00
translators
b1e24a0ae3 Update: Translations from eints
italian: 22 changes by Rivarossi
2022-05-20 18:50:57 +00:00
translators
9d979a6d23 Update: Translations from eints
spanish (mexican): 1 change by absay
german: 25 changes by SecretIdetity
2022-05-18 18:48:29 +00:00
translators
9842e8b762 Update: Translations from eints
spanish (mexican): 8 changes by absay
czech: 18 changes by adamek0202
russian: 1 change by Ln-Wolf
catalan: 5 changes by J0anJosep
2022-05-17 18:46:43 +00:00
translators
f8c6034b93 Update: Translations from eints
spanish (mexican): 21 changes by absay
italian: 1 change by Rivarossi
russian: 12 changes by Ln-Wolf
2022-05-16 18:50:05 +00:00
translators
fd1aa154f4 Update: Translations from eints
italian: 1 change by Rivarossi
russian: 16 changes by Ln-Wolf
2022-05-15 18:47:13 +00:00
translators
adc76cca54 Update: Translations from eints
catalan: 2 changes by J0anJosep
2022-05-14 18:48:27 +00:00
Frazer Smith
9bdc1e8f04 Update: bump peter-evans/repository-dispatch from 1 to 2 2022-05-14 16:58:10 +02:00
Frazer Smith
19b838dd60 Update: bump actions/download-artifact from 2 to 3 2022-05-14 16:58:10 +02:00
Frazer Smith
9162ac9d37 Update: bump actions/checkout from 2 to 3 2022-05-14 16:58:10 +02:00
Frazer Smith
2a2f80bb71 Update: bump actions/cache from 2 to 3 2022-05-14 16:58:10 +02:00
Frazer Smith
33dabc42bb Update: bump actions/upload-artifact from 2 to 3 2022-05-14 16:58:10 +02:00
benda
6540948ace Fix: Company values do not properly account for shares (#9770)
Co-authored-by: Charles Pigott <charlespigott@googlemail.com>
2022-05-14 16:57:47 +02:00
Tyler Trahan
fa562ba041 Fix #9712: Cap town bridge length at original 11-tile limit (#9890) 2022-05-14 16:55:39 +02:00
Tyler Trahan
37d318c410 Fix #9870: Don't update infrastructure totals when overbuilding object on canal 2022-05-14 16:54:36 +02:00
translators
24d7697acc Update: Translations from eints
spanish: 1 change by frosch123
2022-05-14 12:03:15 +00:00
translators
1eed52f294 Update: Translations from eints
swedish: 7 changes by translators
norwegian (bokmal): 1 change by translators
spanish (mexican): 41 changes by translators
japanese: 28 changes by translators
english (us): 4 changes by translators
vietnamese: 7 changes by translators
estonian: 60 changes by translators
korean: 9 changes by translators
greek: 4 changes by translators
hungarian: 2 changes by translators
indonesian: 5 changes by translators
italian: 12 changes by translators, 1 change by Rivarossi
german: 33 changes by translators
romanian: 11 changes by translators
russian: 4 changes by translators
finnish: 2 changes by translators
ukrainian: 5 changes by translators
slovak: 9 changes by translators
catalan: 14 changes by translators
turkish: 1 change by translators
danish: 1 change by translators
latvian: 5 changes by translators
dutch: 5 changes by translators
spanish: 98 changes by translators
portuguese: 6 changes by translators
portuguese (brazilian): 2 changes by translators, 1 change by marlondantas
polish: 13 changes by translators
2022-05-14 11:39:04 +00:00
translators
84aec4fcb8 Update: Translations from eints
english (us): 2 changes by 2TallTyler
italian: 2 changes by Rivarossi
russian: 5 changes by Ln-Wolf
dutch: 2 changes by Afoklala
french: 25 changes by glx22
portuguese: 2 changes by azulcosta
2022-05-13 18:49:07 +00:00
Tyler Trahan
ebc76a4200 Change: Use an indent, not a dash, to list train capacity 2022-05-12 16:59:52 +02:00
translators
646d160c38 Update: Translations from eints
italian: 3 changes by Rivarossi
2022-05-11 21:23:39 +00:00
translators
273b33b087 Update: Translations from eints
swedish: 5 changes by joeax910
2022-05-11 18:48:28 +00:00
translators
8d51156150 Update: Translations from eints
spanish (mexican): 20 changes by absay
italian: 7 changes by Rivarossi
2022-05-10 18:48:56 +00:00
translators
867f6a5964 Update: Translations from eints
spanish (mexican): 9 changes by absay
polish: 3 changes by pAter-exe
2022-05-09 18:50:02 +00:00
translators
9c58ea7a37 Update: Translations from eints
swedish: 2 changes by joeax910
spanish (mexican): 62 changes by absay
korean: 25 changes by telk5093
polish: 72 changes by pAter-exe
2022-05-08 18:45:02 +00:00
translators
5e5f864990 Update: Translations from eints
english (us): 1 change by 2TallTyler
italian: 1 change by Rivarossi
2022-05-07 18:44:57 +00:00
Niels Martin Hansen
0dce7bf85d Add: Commandline option to skip NewGRF scanning 2022-05-07 10:17:26 +02:00
Niels Martin Hansen
588fee5473 Codechange: Document the _ship_subcoord table 2022-05-06 22:56:01 +02:00
translators
c6e4fa7df1 Update: Translations from eints
italian: 11 changes by Rivarossi
dutch: 24 changes by Afoklala
2022-05-06 18:47:14 +00:00
Charles Pigott
146827c458 Fix #9877: GS could trigger 'Cost: 0' cost message (#9878) 2022-05-05 19:51:56 +01:00
translators
142321da79 Update: Translations from eints
spanish (mexican): 1 change by absay
russian: 4 changes by Ln-Wolf
catalan: 20 changes by J0anJosep
french: 1 change by glx22
portuguese: 1 change by azulcosta
2022-05-05 18:47:52 +00:00
translators
1ed212775c Update: Translations from eints
galician: 27 changes by pvillaverde
2022-05-04 18:48:05 +00:00
Owen Rudge
5a6ea11ead Feature: [Actions] Package builds for the Windows Store automatically 2022-05-04 11:40:49 +01:00
Niels Martin Hansen
5b86bce7b2 Change: Log video driver info string instead of just name in crashlog 2022-05-03 21:03:30 +02:00
Niels Martin Hansen
345dcd3c7b Add: Show current video driver info in Options window 2022-05-03 21:03:30 +02:00
translators
be72f1e54b Update: Translations from eints
spanish (mexican): 18 changes by absay
italian: 30 changes by Rivarossi
russian: 17 changes by Ln-Wolf
portuguese: 25 changes by azulcosta
2022-05-03 18:51:46 +00:00
translators
b8565d8cac Update: Translations from eints
spanish (mexican): 10 changes by absay
english (us): 23 changes by 2TallTyler
russian: 22 changes by Ln-Wolf
french: 24 changes by glx22
2022-05-02 18:52:18 +00:00
translators
e5c1865e76 Update: Translations from eints
swedish: 5 changes by joeax910
spanish (mexican): 3 changes by absay
korean: 3 changes by telk5093
italian: 56 changes by Rivarossi
german: 3 changes by danidoedel
romanian: 1 change by ALEX11BR
ukrainian: 8 changes by StepanIvasyn
2022-05-01 18:45:22 +00:00
Loïc Guilloux
7331149dde Codechange: [CMake] Pass API files list via a file to minimise command line length (#9874) 2022-05-01 00:39:59 +02:00
glx22
fb1ac307a4 Fix 44f2ef1: [strgen] Allow gender for {CARGO_SHORT} 2022-04-30 20:38:35 +02:00
Tyler Trahan
ec90fb4c99 Fix #6544: Don't join AI company when loading network game in singleplayer 2022-04-30 19:36:09 +02:00
Andrew Zhou
5ea55f3948 Fix: Prevents crash when no industries are present 2022-04-30 19:29:03 +02:00
Andy
1cfdbb4dea Change: increase vehicle sprite stack from 4 layers to 8 (#9863) 2022-04-26 19:07:44 +02:00
Tyler Trahan
41de69c5b7 Feature: Improved Finance window 2022-04-25 21:51:51 +02:00
Tyler Trahan
f4ca94d3f6 Codechange: Revenue is not the same as Income
Income is revenue minus costs. Let's name things correctly (without breaking the script API).
2022-04-25 21:51:51 +02:00
Tyler Trahan
e79724ea22 Feature: Alternative linkgraph colour schemes (#9866) 2022-04-25 19:32:55 +02:00
Jonathan G Rennison
b3893878bb Fix #9867: Industry::stations_near not filled at industry creation 2022-04-25 19:32:22 +02:00
translators
ed0b0b80d3 Update: Translations from eints
spanish (mexican): 84 changes by absay
italian: 16 changes by Rivarossi
2022-04-23 18:51:15 +00:00
translators
4e09dbc86e Update: Translations from eints
spanish (mexican): 137 changes by absay
italian: 10 changes by Rivarossi
2022-04-22 18:52:06 +00:00
translators
cc4186410b Update: Translations from eints
spanish (mexican): 8 changes by absay
italian: 13 changes by Rivarossi
2022-04-21 18:55:24 +00:00
translators
869b645708 Update: Translations from eints
italian: 33 changes by Rivarossi
polish: 5 changes by pAter-exe
2022-04-20 18:48:43 +00:00
translators
6c161ad18a Update: Translations from eints
italian: 2 changes by Rivarossi
2022-04-19 18:52:14 +00:00
Nik Nyby
44713a68ed Add: [CMake] support rpm for fedora and rhel (#9861) 2022-04-19 02:11:42 +02:00
Nik Nyby
6204020b6a Fix: CMake error message grammar (#9860) 2022-04-19 01:33:29 +02:00
translators
6cb668955e Update: Translations from eints
italian: 7 changes by Rivarossi
2022-04-18 18:52:51 +00:00
translators
585e49a597 Update: Translations from eints
italian: 2 changes by Rivarossi
2022-04-17 18:51:06 +00:00
Joan Josep
bcf26f8ec0 Doc: Fix some spelling mistakes (to->two, tileindex->TileIndex). (#9857) 2022-04-17 19:00:00 +02:00
translators
98bdf01967 Update: Translations from eints
italian: 5 changes by Rivarossi
romanian: 7 changes by alexban011
2022-04-16 18:49:12 +00:00
Loïc Guilloux
ef4b699f40 Fix #9853, 648ee88: incorrect merge of guiflags and flags for osk_activation (#9855) 2022-04-15 22:57:47 +02:00
translators
a24ba6c264 Update: Translations from eints
italian: 2 changes by Rivarossi
2022-04-15 18:51:10 +00:00
translators
3cf0e95f6e Update: Translations from eints
italian: 1 change by Rivarossi
2022-04-12 18:50:59 +00:00
translators
7c40967c1f Update: Translations from eints
polish: 14 changes by pAter-exe
2022-04-11 18:52:50 +00:00
translators
385c2f1381 Update: Translations from eints
polish: 4 changes by pAter-exe
2022-04-10 18:48:55 +00:00
translators
49b8eac2dc Update: Translations from eints
chinese (simplified): 3 changes by HansKaffee
italian: 30 changes by Rivarossi
polish: 14 changes by pAter-exe
2022-04-09 18:48:36 +00:00
translators
1ae34ca62d Update: Translations from eints
catalan: 4 changes by J0anJosep
dutch: 5 changes by Afoklala
polish: 43 changes by pAter-exe
2022-04-08 18:51:47 +00:00
translators
bd6531d0d0 Update: Translations from eints
vietnamese: 4 changes by KhoiCanDev
2022-04-07 18:50:52 +00:00
translators
5dd9400fe2 Update: Translations from eints
english (us): 4 changes by 2TallTyler
2022-04-06 18:48:53 +00:00
translators
ee105257ff Update: Translations from eints
russian: 4 changes by Ln-Wolf
french: 4 changes by glx22
2022-04-05 18:51:24 +00:00
translators
a6ada35259 Update: Translations from eints
portuguese: 4 changes by azulcosta
2022-04-04 18:51:31 +00:00
translators
c36fc98137 Update: Translations from eints 2022-04-03 18:49:03 +00:00
Tyler Trahan
1c580d1612 Change: Improve "local authority rating" setting name and helptext 2022-04-02 22:50:28 +02:00
Tyler Trahan
f92cf38ab5 Feature: Allow disabling local authority control of company actions 2022-04-02 22:50:28 +02:00
Patric Stout
8537fa7206 Fix: [Actions] Remove Ubuntu:groovy from release pipeline (#9845)
It no longer exists upstream. Let's focus on LTS only for now.
2022-04-02 12:36:15 +02:00
Aaron Katzin
148695c571 Fix #9736: Duplicate multiplayer window opens upon canceling password entry (#9842) 2022-04-02 10:37:07 +02:00
Owen Rudge
1bfbcff71e Change: [Actions] Switch back to primary source for 'gon' in macOS build job
This reverts commit 7a97a33598.
2022-03-31 13:00:35 +01:00
Owen Rudge
7a97a33598 Fix: [Actions] Switch source for 'gon' in macOS build job 2022-03-28 21:56:24 +01:00
ALEX11BR
61c6fd3055 Fix: correct some mistaken Romanian real towns 2022-03-26 09:08:46 +01:00
Michael Lutz
8d54f76539 Fix #9837, 46bd2f1c: Road build with wrong half-tile ends. 2022-03-20 12:56:03 +01:00
Dave Shifflett
0d9fdeda8e Feature: Allow Shift+Insert as paste in edit box (#9836) 2022-03-15 22:33:22 +01:00
Loïc Guilloux
1a17b6c8f6 Change: [Actions] Remove VS2017 and restore VS2019 for CI (#9835) 2022-03-13 16:05:24 +01:00
Michael Lutz
08a5478a93 Add: [NewGRF] Map seed as global variable.
This is useful to provide a feature-agnostic, stable random value that differs between games.
One of the possible uses is to e.g. use it to create pseudo-random regions for towns or industries.
2022-03-13 14:20:23 +01:00
Patric Stout
68ec2a7877 Fix: removing long roads doesn't prioritize refusal of local authority over other errors (#9831) 2022-03-11 16:18:09 +01:00
Tyler Trahan
d220debc6c Change: Don't pay Property Maintenance on stations when Infrastructure Maintenance is disabled (#9828) 2022-03-10 22:34:03 +01:00
Tyler Trahan
fbbc80f79e Fix #9020: Update station coverage highlight when adding/removing tiles 2022-03-10 20:54:45 +01:00
Rubidium
c73f578e8c Codechange: replace magic numbers and C-style arrays with C++-style array for share owners 2022-03-09 18:05:12 +01:00
Tyler Trahan
2bfceea762 Doc: Fix broken links to Bootstrap CONTRIBUTING guide and doc license 2022-03-08 17:46:48 +01:00
translators
0d8fbf647b Update: Translations from eints
latvian: 4 changes by lexuslatvia
2022-03-03 18:45:52 +00:00
translators
acaea776eb Update: Translations from eints
finnish: 2 changes by RedJimi
2022-02-28 18:49:10 +00:00
Rubidium
1c256a4be7 Fix: do not let shares in the company taking over another company disappear 2022-02-24 20:25:31 +01:00
Tyler Trahan
89dba56782 Fix e740c24: Use correct command flag, not just DC_EXEC 2022-02-23 01:36:24 +01:00
translators
22f6502b14 Update: Translations from eints
chinese (traditional): 3 changes by benny30111
galician: 9 changes by mgtrad, 1 change by NicoSGF64
indonesian: 14 changes by bsuseno
2022-02-22 18:50:00 +00:00
dP
36bee83864 Change: Deliver cargo to the closest industry first (#9536) 2022-02-19 19:08:23 +01:00
Niels Martin Hansen
e68bf58989 Codechange: Use anonymous union for vehicle orders/old orders list 2022-02-15 20:01:10 +01:00
Niels Martin Hansen
41c40f130b Fix: Original music playback rate was slightly too fast
Found a new tempo value experimentally. The new value gives a timing error of less than 0.01 second per minute.
2022-02-10 22:09:51 +01:00
translators
81adc38176 Update: Translations from eints
japanese: 9 changes by Azusa257
2022-02-09 18:49:48 +00:00
frosch
8028794bee Fix #9811, 9156d7b: Use the NewGRF-defined vehicle center when dragging ships and aircraft. (#9812)
The alignment using the total-width of the vehicle-chain was meant for articulated trains and road vehicles only.
2022-02-08 23:08:03 +01:00
translators
a83cd9b4f5 Update: Translations from eints
turkish: 1 change by AlphenLLC
2022-02-07 18:48:47 +00:00
translators
83b6defbfb Update: Translations from eints
korean: 1 change by telk5093
turkish: 5 changes by AlphenLLC
2022-02-05 18:38:53 +00:00
Tyler Trahan
7f0efbe00e Feature: Remember the last-used signal between games (#9792) 2022-02-02 21:26:46 +00:00
Dave Shifflett
25ae42ae8a Feature: Add/extend console commands to enable screenshot automation (#9771)
* Add: `zoomto` console command for main viewport

Similar in spirit to `scrollto`, `zoomto` takes an absolute zoom level
from the user and sets the main viewport to that level while respecting
both the absolute minimum and maximum zoom levels supported by the game
and any limitations imposed by the local client settings.

* Add: optional `instant` flag for `scrollto` command

Using this flag has two effects:

- if the user has smooth scrolling enabled, the scroll action will take
  place as if it were not enabled
- the viewport is redrawn immediately, so any successive `screenshot`
  command will actually work correctly

The original positional arguments are processed like same before.
2022-02-02 21:24:29 +00:00
glx22
b6c5f49379 Change: add a timestamp in name of crash files 2022-02-02 21:32:01 +01:00
J0anJosep
d9a37c915f Cleanup #9725: Replace cmd_helper related functions and remove cmd_helper.h. 2022-02-02 21:30:15 +01:00
translators
09b71c97aa Update: Translations from eints
belarusian: 35 changes by KorneySan
2022-02-02 18:47:18 +00:00
translators
b59acc7e2c Update: Translations from eints
thai: 122 changes by phetoffux
2022-02-01 18:45:41 +00:00
translators
4ad6b1e58d Update: Translations from eints
thai: 8 changes by phetoffux
2022-01-31 18:45:33 +00:00
translators
30da75941b Update: Translations from eints
swedish: 15 changes by joeax910
slovak: 5 changes by FuryPapaya
thai: 15 changes by phetoffux
2022-01-30 18:44:28 +00:00
Jonathan G Rennison
6ccf020dc2 Fix #9802: Assertion failure in BuildRailWaypointWindow constructor 2022-01-30 11:20:00 +01:00
translators
61abfc9050 Update: Translations from eints
korean: 2 changes by telk5093
slovak: 14 changes by FuryPapaya
thai: 107 changes by phetoffux
2022-01-29 18:54:25 +00:00
translators
9e47df298f Update: Translations from eints
italian: 61 changes by denialmac
2022-01-22 18:44:46 +00:00
Andy
b8a8891a86 Add: [Script] IndustryType::ResolveNewGRFID to resolve industry id from grfid and grf_local_id 2022-01-22 18:15:12 +01:00
Andy
26ac0c48f0 Add: [Script] ObjectType::ResolveNewGRFID to resolve object id from grfid and grf_local_id 2022-01-22 13:12:10 +01:00
translators
f6775a2d55 Update: Translations from eints
irish: 2 changes by temuchie
2022-01-21 18:45:35 +00:00
translators
5239018878 Update: Translations from eints
tamil: 24 changes by Aswn
2022-01-16 18:48:47 +00:00
translators
15c9191568 Update: Translations from eints
tamil: 19 changes by Aswn
2022-01-15 18:48:55 +00:00
translators
8ac3f9a6e1 Update: Translations from eints
vietnamese: 28 changes by chupper100
2022-01-14 18:50:22 +00:00
translators
93e8d4871d Update: Translations from eints
croatian: 67 changes by srekoslav
2022-01-09 18:49:57 +00:00
translators
ad54d08abd Update: Translations from eints
croatian: 6 changes by srekoslav
thai: 2 changes by sanotti
2022-01-08 18:50:03 +00:00
translators
32a4212ef1 Update: Translations from eints
norwegian (bokmal): 2 changes by tmn
2022-01-06 18:49:39 +00:00
translators
8032423bf1 Update: Translations from eints
romanian: 18 changes by Gisterecis
2022-01-05 18:52:23 +00:00
Joan Josep
54ce5b28a4 Codechange: Make RoadScopeResolver constructor inlineable (#9780) 2022-01-05 12:25:22 +00:00
Matthijs Kooijman
5777649ac4 Fix: [CMake] openttd.32.bmp wasn't installed but used by SDL (#9772)
This file is used to set the SDL application icon, but it was no longer
installed since the switch to CMake.
2022-01-05 13:24:35 +01:00
Tyler Trahan
ffa688a432 Doc: Fix broken link to GitHub docs (#9769) 2022-01-05 13:23:16 +01:00
Loïc Guilloux
d62c5667cf Fix #9766: Don't write uninitialised data in config file (#9767) 2022-01-04 22:12:05 +01:00
Michael Lutz
57b992717b Codechange: Extend DrawSpriteToRgbaBuffer to work with 8bpp blitters. 2022-01-01 12:19:30 +01:00
Michael Lutz
69c8ed9965 Codechange: [OSX] Simplify touchbar button data definition. 2022-01-01 12:19:30 +01:00
Michael Lutz
b351cbe490 Fix #9743: [OSX] Only (re-)create touchbar sprites when requested by the main loop. 2022-01-01 12:19:30 +01:00
Michael Lutz
f40e82a19d Fix #9743: [OSX] Don't try to render touchbar sprites with invalid zoom level. 2022-01-01 12:19:30 +01:00
Michael Lutz
80fc5fb46c Change: [OSX] Allow touchbar usage on all supported OS versions.
Touchbar support was introduced in 10.12.2. There's no need to limit
support to 10.15+, as the convenience class NSButtonTouchBarItem is
easily replicated.
2022-01-01 12:19:30 +01:00
Jonathan G Rennison
4844268d1c Fix #9774: CmdBuildRoadStop updated station acceptance in estimate mode 2021-12-30 20:39:10 +01:00
translators
21f85cac87 Update: Translations from eints
chinese (traditional): 25 changes by Tetrapod1206
italian: 12 changes by federico1564S
2021-12-29 18:48:51 +00:00
Loïc Guilloux
c85557e553 Fix: [MinGW] Disable ASLR for x64 Debug builds (#9773) 2021-12-28 21:08:09 +01:00
translators
3ed7910cfe Update: Translations from eints
portuguese (brazilian): 2 changes by Vimerum
2021-12-28 18:48:50 +00:00
translators
a97bce51c2 Update: Translations from eints
czech: 6 changes by vladoschreiner
hungarian: 5 changes by pnpBrumi
2021-12-22 18:49:56 +00:00
benda
30d0f06890 Doc: use only double quotes for cmake command line example in COMPILING.md (#9758)
While powershell happily accepts single quotes, it's not the case for cmd.
2021-12-22 19:32:48 +01:00
trautamaki
f6e6b2c917 Doc: fix broken links to Open{GFX,SFX,MSX} in README.md (#9759) 2021-12-22 15:26:45 +01:00
translators
afb817fe19 Update: Translations from eints
norwegian (bokmal): 4 changes by Anolitt
2021-12-21 18:49:51 +00:00
Michael Lutz
b11bd185e3 Fix #9756: Network command unpack proc was not generated in all cases.
The case where the callback proc takes all command results but not any of
the command parameters was not handled properly.
2021-12-20 23:32:23 +01:00
Tyler Trahan
9c18236f2c Fix: Suppress vehicle age warnings for stopped vehicles 2021-12-20 22:13:37 +01:00
Michael Lutz
e67124e174 Change: [Admin] Bump admin port protocol due to command changes.
docs/admin_network.md promised that information in an admin packet
is never removed. It does allow the possibility of using a new packet type
for changed data in combination with a bump of the admin port version.

As the recent command handling changes modified the contents of
ADMIN_PACKET_SERVER_CMD_LOGGING, do exactly that.
2021-12-20 19:30:27 +01:00
Michael Lutz
3fede15940 Codechange: [Script] Prettify squirrel call helpers by using C++17. 2021-12-20 19:25:10 +01:00
Jonathan G Rennison
e08a6e2014 Fix #9735: Fix OrderBackup::Reset in non-GUI case 2021-12-19 16:53:10 +01:00
Joan Josep
e890e7db76 Cleanup #9725: Clean up Doxygen docs and fix typo. (#9753) 2021-12-19 16:51:45 +01:00
Michael Lutz
afc3d71fd0 Codechange: Don't generate CommandPacket unpack functions for invalid cmd/callback combinations.
If the arguments of the callback proc don't match with the command parameters,
we can't do the proper command execution anyway. As such, don't even generate
an unpack function in the first place, saving a bit of unnecessary code bloat.

Validate on receive that the cmd/callback combination is supported, rejecting
clients that try to send invalid values.
2021-12-16 22:28:32 +01:00
Michael Lutz
c521b965bd Codechange: Don't use a global for the terrforming error tile. 2021-12-16 22:28:32 +01:00
Michael Lutz
2e39637db2 Codechange: Don't use a global for the 'not enough cash' message. 2021-12-16 22:28:32 +01:00
Michael Lutz
41fa16f325 Codechange: Don't use globals for return values from vehicle command procs. 2021-12-16 22:28:32 +01:00
Michael Lutz
57b82e2e99 Codechange: Don't use globals for story/goal/sign/group command proc return values. 2021-12-16 22:28:32 +01:00
Michael Lutz
3e85e833a7 Codechange: Add support for additional command result values. 2021-12-16 22:28:32 +01:00
Michael Lutz
8503854655 Codechange: Pass unpacked command arguments to command callbacks (except Script). 2021-12-16 22:28:32 +01:00
Michael Lutz
d85348b1d1 Codechange: Template the command callback function type to allow unpacked arguments. 2021-12-16 22:28:32 +01:00
Michael Lutz
13528bfcd0 Codechange: Un-bitstuff all remaining commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
58cff7b081 Codechange: Un-bitstuff the remaining on-map commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
c6d7b98808 Codechange: Un-bitstuff landscape commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
e6e69d5289 Codechange: Un-bitstuff goal and story page commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
1a42a8a5d5 Codechange: Un-bitstuff town-related commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
e08b3abe7f Codechange: Un-bitstuff group and autoreplace commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
46bd2f1ced Codechange: Un-bitstuff remaining transport infrastructure commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
55170ae703 Codechange: Un-bitstuff rail commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
6fe445e6c0 Codechange: Un-bitstuff station/depot/waypoint commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
21675ec7e2 Codechange: Un-bitstuff vehicle/engine commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
2637c06f88 Codechange: Un-bitstuff timetable commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
211c630cbe Codechange: Un-bitstuff order commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
de45a8729c Codechange: Add DoCommand::Post specialization for commands that take no TileIndex.
This adds a new Post overloads that still take a TileIndex which
is used to place any error windows or text effects.
2021-12-16 22:28:32 +01:00
Michael Lutz
4f3ea3907e Codechange: Un-bitstuff commands taking a ClientID (i.e. CMD_CLIENT_ID). 2021-12-16 22:28:32 +01:00
Michael Lutz
ccefa76a46 Codechange: Template DoCommandPInternal. 2021-12-16 22:28:32 +01:00
Michael Lutz
6691ee3b96 Codechange: Template script command calls. 2021-12-16 22:28:32 +01:00
Michael Lutz
eab18f06a4 Codechange: Pass additional data as byte stream to command callbacks. 2021-12-16 22:28:32 +01:00
Michael Lutz
0f64ee5ce1 Codechange: Template DoCommandP to automagically reflect the parameters of the command proc.
When finished, this will allow each command handler to take individually
different parameters, obliviating the need for bit-packing.
2021-12-16 22:28:32 +01:00
Michael Lutz
e740c24eb7 Codechange: Template DoCommand to automagically reflect the parameters of the command proc.
When finished, this will allow each command handler to take individually
different parameters, obliviating the need for bit-packing.
2021-12-16 22:28:32 +01:00
Michael Lutz
c88b104ec6 Codechange: Use wrapper struct to automatically manage command depth tracking. 2021-12-16 22:28:32 +01:00
Michael Lutz
996b16de70 Codechange: Use lambdas instead of CommandContainer to manage station picker commands. 2021-12-16 22:28:32 +01:00
Michael Lutz
a05fd7aa50 Change: [Network] Transfer command data as serialized byte stream without fixed structure.
The data will be transmitted as the length followed by the serialized data. This allows the command
data to be different for every command type in the future.
2021-12-16 22:28:32 +01:00
Michael Lutz
b0990fcff7 Codechange: Make TileIndex a "strong" typedef to give it a distinct type.
This is accomplished by changing it to a single member struct with the
appropriate operator overloads to make it all work with not too much
source modifications.
2021-12-16 22:28:32 +01:00
Michael Lutz
4fc055d6e9 Codechange: Align parameter order of command callbacks to command handlers. 2021-12-16 22:28:32 +01:00
Michael Lutz
123c7f99c3 Codechange: Move command callback declarations to the cmd header files. 2021-12-16 22:28:32 +01:00
Michael Lutz
7048e1522f Codechange: Move flags in CommandProc in front of the command arguments. 2021-12-16 22:28:32 +01:00
Michael Lutz
33ca4f2b99 Codechange: Let the compile generate the master command table out of templated command traits.
This is using a non-intrusive type-traits like templated system, which
allows compile-time validation that the command table and the command
enum match up.
2021-12-16 22:28:32 +01:00
Michael Lutz
5ddfdc8516 Codechange: Declare our custom enum operators as constexpr. 2021-12-16 22:28:32 +01:00
Michael Lutz
a38bbefe1b Codechange: Untangle command code, flags and error string for DoCommand*. 2021-12-16 22:28:32 +01:00
Michael Lutz
549caca39c Codechange: Move command arguments to the back of the networked command function calls. 2021-12-16 22:28:32 +01:00
Michael Lutz
b6933a2ebd Codechange: Move command arguments to the back of the DoCommand function call. 2021-12-16 22:28:32 +01:00
Michael Lutz
39e8783f4b Fix: Template syntax error when using 'span' with a container type. 2021-12-16 22:28:32 +01:00
translators
0c90326ada Update: Translations from eints
swedish: 1 change by joeax910
chinese (traditional): 160 changes by Tetrapod1206
galician: 21 changes by pvillaverde
irish: 5 changes by temuchie
polish: 2 changes by pAter-exe
2021-12-14 18:49:17 +00:00
frosch
bc22e9333e Fix: if vehicles only refit to cargo-slots >= 32, the default cargo was wrong. (#9744) 2021-12-12 17:35:41 +01:00
Jonathan G Rennison
762b656b53 Fix #9740: Fix loading of gamelog change items from savegame ver >= 294 2021-12-10 22:46:16 +01:00
Rubidium
ad89601c49 Codechange: do not use all upper case enumerators in a scoped enum 2021-12-05 21:41:43 +01:00
Patric Stout
ea4f6bb8b2 Fix #9730: [Network] connections can use an invalid socket due to a race condition
A race condition happens when an IPv6 connection takes more than
250ms to report an error, but does return before the IPv4 connection
is established.
In result, an invalid socket might be used for that connection.
2021-12-04 20:56:05 +01:00
Patric Stout
9c36c12c85 Codechange: ensure OnConnect() always gets called with a valid socket (#9729)
This should already be the case, but now assert()s will tell us
if this isn't.
2021-12-04 18:32:06 +01:00
Tyler Trahan
802ca4e722 Fix: Don't try to rename OWNER_DEITY signs in-game (#9716) 2021-11-28 15:16:42 +01:00
translators
6953df7b5e Update: Translations from eints
galician: 265 changes by pvillaverde
indonesian: 8 changes by indrabagus
spanish: 7 changes by MontyMontana
2021-11-27 18:47:35 +00:00
translators
e0a91d7325 Update: Translations from eints
galician: 17 changes by pvillaverde
2021-11-26 18:48:29 +00:00
translators
ad7bdeb73a Update: Translations from eints
chinese (simplified): 2 changes by kurax
2021-11-22 18:48:48 +00:00
Michael Lutz
20a30825a0 Fix: Insufficient input validation for CmdIndustryCtrl. (#9711) 2021-11-20 23:27:45 +01:00
translators
793de48e89 Update: Translations from eints
vietnamese: 2 changes by KhoiCanDev
2021-11-20 18:49:33 +00:00
dP
ad90e88ebd Change: Make pf.yapf.rail_firstred_twoway_eol on by default (#9544) 2021-11-19 00:08:06 +00:00
dP
54951e39a1 Fix #8797: Use logical rail length when placing signals (#9652) 2021-11-19 00:07:22 +00:00
nchappe
2cb6351af5 Fix: Update last servicing dates when using the date cheat (#9694) 2021-11-19 00:04:22 +00:00
Bernard Teo
0533b666b7 Fix #9702: Display order window for vehicle group on ctrl-click only when using shared orders (#9704) 2021-11-19 00:03:52 +00:00
translators
f6886754ff Update: Translations from eints
greek: 2 changes by dionisis84
german: 2 changes by danidoedel
2021-11-18 18:47:13 +00:00
Jonathan G Rennison
fc58ed9987 Codechange: Remove CargoSpec::multipliertowngrowth which is unused (#9701)
This is set by cargo property 19.
This property is only implemented in TTDPatch.
2021-11-16 22:48:21 +00:00
Charles Pigott
cf16f452da Fix #9680: Recalculating aircraft positions before map array updates caused crashes (#9699) 2021-11-15 13:39:41 +00:00
Patric Stout
0cbe94256e Change: [Emscripten] update to 2.0.34 and use Release over RelWithDebInfo (#9696)
It turns out that having "-g" in the compile-statement causes
Emscripten to pick -g3, which makes for very big binaries. This
is very likely not your intention when building Emscripten, as
smaller really is better.

For comparison, with RelWithDebInfo the binary is ~80MB. With
Release it is ~7.4MB.
2021-11-14 16:59:49 +01:00
frosch
5f6303f985 Fix: don't complain when the sprite font is missing glyphs. (#9692)
Silently auto-pick a suitable font.
2021-11-13 21:01:16 +01:00
translators
f8efab4653 Update: Translations from eints
japanese: 1 change by akaregi
dutch: 3 changes by Afoklala
2021-11-12 18:46:13 +00:00
Owen Rudge
2f72eb0657 Add: Specify minimum version for macOS (#9689) 2021-11-11 20:06:31 +01:00
translators
62795a2e6d Update: Translations from eints
russian: 2 changes by Ln-Wolf
2021-11-11 18:48:27 +00:00
translators
4bcbcbc58f Update: Translations from eints
tamil: 2 changes by Aswn
2021-11-10 18:52:03 +00:00
Owen Rudge
7d40cc9291 Change: Explicitly specify SHA1 for legacy code signing on Windows 2021-11-10 10:26:33 +00:00
Tyler Trahan
48c1c7f221 Cleanup: Fix typo in overflowsafe_type comment 2021-11-09 20:51:38 +01:00
translators
236f71640c Update: Translations from eints
english (us): 2 changes by 2TallTyler
arabic (egypt): 49 changes by AviationGamerX
korean: 17 changes by telk5093
catalan: 2 changes by J0anJosep
danish: 4 changes by nielsmh
french: 2 changes by glx22
portuguese: 2 changes by azulcosta
2021-11-09 18:50:34 +00:00
translators
0ad40ee868 Update: Translations from eints
arabic (egypt): 35 changes by AviationGamerX
2021-11-08 18:50:01 +00:00
Tyler Trahan
e9cb9c1135 Fix #9579: Object and HQ construction is Construction cost, not Property Maintenance (#9673) 2021-11-08 08:12:15 +00:00
Guillaume Renoult
c38af72978 Update: add setting to hide news about competitors vehicle crash (#9653) 2021-11-07 19:54:50 +01:00
Tyler Trahan
b4bd7b367e Feature: Ctrl-click to remove fully autoreplaced vehicles from list (#9639) 2021-11-07 19:53:54 +01:00
Tyler Trahan
08cb5ba2cd Fix: Don't show screenshot GUI in screenshots (#9674) 2021-11-07 17:41:24 +01:00
J0anJosep
d0655a48ba Fix: Do not redraw vehicle lists when skip order command is tested. 2021-11-07 13:23:29 +01:00
Michael Lutz
8c558d74a5 Fix 55a11710: Curly braces need to be double-escaped for (std::)fmt. 2021-11-06 20:21:07 +01:00
translators
73001ae1a9 Update: Translations from eints
english (au): 3 changes by LordAro
2021-11-06 18:47:14 +00:00
Michael Lutz
95c8467670 Fix 65cbde4b: Writing to uninitialized string when loading a currency NewGRF. 2021-11-06 19:15:29 +01:00
Loïc Guilloux
6ff0858b38 Fix #9669, cbe00ec: Only try valid reverse directions (#9672) 2021-11-06 17:32:37 +01:00
Dmitry Erlikh
33ef34189e Fix #9648: add missing commas in crash message 2021-11-03 22:10:21 +01:00
dP
80e3397f85 Fix 3a1a915: Every 16th client never reconnects after server restart 2021-11-03 21:33:38 +01:00
translators
9edb75ec0b Update: Translations from eints
arabic (egypt): 7 changes by AviationGamerX
2021-11-02 18:49:30 +00:00
translators
00a6287f97 Update: Translations from eints
arabic (egypt): 2 changes by AviationGamerX
2021-11-01 18:49:20 +00:00
translators
ccf70fc4b3 Update: Translations from eints
dutch: 2 changes by Afoklala
2021-10-29 18:49:23 +00:00
translators
edf7b02ddb Update: Translations from eints
german: 2 changes by Wuzzy2
2021-10-28 18:48:40 +00:00
translators
488cf26406 Update: Translations from eints
swedish: 44 changes by joeax910
japanese: 1 change by clzls
chinese (simplified): 2 changes by clzls
2021-10-27 18:50:25 +00:00
translators
4487ad1a5e Update: Translations from eints
korean: 1 change by telk5093
polish: 2 changes by pAter-exe
2021-10-25 18:49:13 +00:00
translators
a0831cec39 Update: Translations from eints
swedish: 1 change by joeax910
2021-10-24 18:46:47 +00:00
translators
279fe11b03 Update: Translations from eints
indonesian: 2 changes by hadyatmo
2021-10-23 18:47:57 +00:00
frosch
e8bff0ad03 Change: Suppress panning in intro game, while user is interacting with the GUI. (#9645) 2021-10-23 15:13:39 +02:00
frosch
111a47af0d Codechange: rename 'info_view' to 'rotor_in_gui', because it is only used by helicopters. 2021-10-23 14:45:08 +02:00
frosch
bc984d9af5 Codechange: remove redundant 'info_view' parameter, it can be derived from 'image_type'. 2021-10-23 14:45:08 +02:00
translators
bf0210229c Update: Translations from eints
english (us): 2 changes by 2TallTyler
vietnamese: 2 changes by KhoiCanDev
catalan: 2 changes by J0anJosep
portuguese (brazilian): 2 changes by Vimerum
2021-10-22 18:53:01 +00:00
Joan Josep
b2e83b4da6 Fix: Draw rotor in cursor when dragging helicopters. (#9612) 2021-10-22 19:39:47 +02:00
Loïc Guilloux
08c048e0a1 Fix #9643, 95386dc: Incorrect determination of screenshot format (#9644) 2021-10-22 16:34:48 +02:00
translators
ae340f415e Update: Translations from eints
russian: 2 changes by Ln-Wolf
2021-10-21 18:47:48 +00:00
Loïc Guilloux
f2c03a77f0 Change: Don't store not to be activated newGRFs in savegames (#9627) 2021-10-20 22:14:23 +02:00
Loïc Guilloux
bc1b84cbbb Fix #9630: intro game could zoom in/out more than allowed by settings (#9633)
Also fixes #9622
2021-10-20 22:08:08 +02:00
translators
b043d58b92 Update: Translations from eints
swedish: 4 changes by joeax910
spanish: 1 change by MontyMontana
2021-10-20 18:49:34 +00:00
Loïc Guilloux
eed49d7792 Fix #9626, ddafc0d: Incorrect loading of script saved data (#9629) 2021-10-20 12:23:16 +02:00
translators
e68a51eced Update: Translations from eints
korean: 3 changes by telk5093
french: 2 changes by glx22
portuguese: 2 changes by azulcosta
2021-10-19 18:47:37 +00:00
glx22
1c0700e0c0 Fix #9624: compilation with RANDOM_DEBUG 2021-10-19 09:05:00 +01:00
glx22
14429bbe8a Change: [Actions] Also check desync debug 2021-10-19 09:05:00 +01:00
translators
6289b4dd81 Update: Translations from eints
greek: 2 changes by dionisis84
russian: 1 change by Ln-Wolf
finnish: 2 changes by hpiirai
tamil: 88 changes by Aswn
2021-10-18 18:48:12 +00:00
Charles Pigott
53e17d07d2 Fix #9595: Always use plural forms of cargo for subsidy strings (#9619) 2021-10-18 09:43:14 +01:00
Patric Stout
5bcdf16dc5 Fix 01603d9e: [Preview] publishing preview failed due to recent changes (#9621)
Since 01603d9e we run under root, not under github user. In result,
the location of "aws" binary changed.
2021-10-17 22:42:29 +02:00
Patric Stout
01603d9e47 Fix 3046a6ce: [Preview] building preview failed to patch LZMA (#9620)
The job was started under a non-priv user, which did not have
permission to patch the emscripten files required to make LZMA
work.
2021-10-17 21:59:50 +02:00
Charles Pigott
86c295bb3b Change: Ignore refresh_rate setting when vsync is enabled 2021-10-17 19:25:03 +01:00
Charles Pigott
e09f251fc6 Fix #9614: Refresh rate dropdown was still active when vsync was enabled 2021-10-17 19:25:03 +01:00
Charles Pigott
0853c1979b Feature: Button to toggle showing advanced signal types (#9617) 2021-10-17 19:24:50 +01:00
Charles Pigott
3b7daca832 Change: Don't use 'server address' string in server list when displaying an invite code (#9615) 2021-10-17 18:14:25 +01:00
Patric Stout
78eece71d9 Codechange: "set but not used" warning when disabling assert() (#9613)
DebugCheckSanity() is unused when asserts are disabled. While at it,
use WITH_ASSERT over NDEBUG, as that means we also run this code
during beta/RC.
2021-10-16 22:06:08 +02:00
translators
d66dea5d83 Update: Translations from eints
indonesian: 9 changes by bsuseno
2021-10-15 18:47:17 +00:00
translators
4b96244b4d Update: Translations from eints
romanian: 6 changes by kneekoo
2021-10-12 18:47:28 +00:00
glx22
cbe00ec651 Fix: Try all possible reverse directions when a ship reaches a dead end 2021-10-11 21:11:13 +02:00
glx22
207cf7bbdd Change: Reverse ship when leaving docks if a better path exists 2021-10-11 21:11:13 +02:00
translators
d0092925c9 Update: Translations from eints
romanian: 9 changes by kneekoo
2021-10-11 18:48:06 +00:00
translators
7d831be3ab Update: Translations from eints
indonesian: 6 changes by bsuseno
2021-10-10 18:46:33 +00:00
translators
8b157c9bdf Update: Translations from eints
romanian: 1 change by kneekoo
2021-10-06 18:47:23 +00:00
translators
d2bc32e94a Update: Translations from eints
korean: 1 change by telk5093
romanian: 15 changes by kneekoo
2021-10-04 18:48:34 +00:00
Loïc Guilloux
46123742f5 Change: [Actions] Use macOS-11 image for releases (#9605) 2021-10-03 21:14:59 +02:00
translators
340a36bf1f Update: Translations from eints
romanian: 8 changes by kneekoo
irish: 55 changes by temuchie
2021-10-03 18:46:14 +00:00
Patric Stout
3046a6ce39 Change: upgrade Emscripten to 2.0.31 and enable LZMA by default (#9604) 2021-10-03 16:20:05 +02:00
SamuXarick
e404d16929 Fix #9591: Update station docking tiles upon placing a water object on a docking tile (#9594) 2021-10-03 12:54:19 +02:00
Patric Stout
e4ad632989 Add: [Network] Keep the refresh button in lowered state while refreshing (#9600)
This gives user visual feedback that the refresh is still pending, and
prevents people from clicking again and again thinking nothing is
happening. This is especially true for connections that fall back to
TURN, as that takes a few seconds to kick in.

Additionally, prevent clicking on the button again while a refresh
is pending. This is only delaying a successful result.
2021-10-03 11:02:28 +02:00
Loïc Guilloux
2144cd98a3 Fix: Incorrect Romanian own name (#9598) 2021-10-03 09:49:03 +01:00
Loïc Guilloux
a53cfeef13 Fix #9548, e5fedcd: [Squirrel] Crash during engine cleanup after reaching memory limit on realloc (#9592) 2021-10-02 21:08:42 +02:00
translators
a2cf81e722 Update: Translations from eints
romanian: 38 changes by kneekoo
2021-10-02 18:46:31 +00:00
dP
585ad9bcab Cleanup: Swap comments for IConsoleModes (#9587) 2021-10-02 16:33:28 +02:00
Loïc Guilloux
ccd586a736 Fix #9588, 140a96b: [Squirrel] Reaching memory limit during script registration could prevent further script detections (#9589)
Also the memory allocation triggering the limit was never freed.
And if the exception was thrown in a constructor using placement new, the pre-allocated memory was not freed either.
2021-10-02 15:13:58 +02:00
translators
78d66b7732 Update: Translations from eints
romanian: 145 changes by kneekoo
2021-10-01 18:45:29 +00:00
translators
41094b6a4a Update: Translations from eints
spanish: 14 changes by MontyMontana
2021-09-30 18:48:12 +00:00
translators
e89be8d97a Update: Translations from eints
indonesian: 28 changes by bsuseno
romanian: 49 changes by kneekoo
2021-09-29 18:47:12 +00:00
translators
b4bacff4fe Update: Translations from eints
hungarian: 4 changes by pnpBrumi
indonesian: 41 changes by bsuseno
italian: 28 changes by CoderLel
romanian: 46 changes by kneekoo
slovak: 18 changes by ApplePie420
danish: 279 changes by nielsmh
2021-09-28 18:47:22 +00:00
translators
7a48b5597d Update: Translations from eints
czech: 40 changes by LubosKolouch, 27 changes by CzechRepublic98
hungarian: 1 change by pnpBrumi
turkish: 13 changes by ahmetlii
2021-09-27 18:49:51 +00:00
Niels Martin Hansen
5e3ed3a05e Add: Console command to list search directories for various things 2021-09-26 23:39:45 +02:00
translators
7aacb2ed8e Update: Translations from eints
japanese: 18 changes by akaregi, 10 changes by clzls
slovenian: 17 changes by Matej1245
czech: 33 changes by CzechRepublic98
chinese (simplified): 27 changes by clzls
arabic (egypt): 17 changes by AviationGamerX
luxembourgish: 99 changes by phreeze83
hungarian: 24 changes by pnpBrumi, 6 changes by baliball
serbian: 107 changes by nkrs
romanian: 16 changes by kneekoo, 2 changes by ALEX11BR
irish: 229 changes by temuchie
ukrainian: 113 changes by StepanIvasyn
latvian: 8 changes by lexuslatvia
lithuanian: 41 changes by devbotas
polish: 1 change by yazalo
2021-09-26 18:47:33 +00:00
Loïc Guilloux
38a64eb2aa Change: Allow all tiles around docks to be docking tiles (#9578) 2021-09-26 19:31:55 +02:00
Loïc Guilloux
11dece205c Revert 7ca1793: Using Trackdir keyed node is not required, Exitdir keyed node still have the correct trackdir (#9576) 2021-09-26 18:41:41 +02:00
r-a-sattarov
14ad424470 Add: use of Intel Intrinsics & RDTSC on e2k (MCST Elbrus 2000) (#9575)
MCST e2k (Elbrus 2000) architecture has half native / half software support of most Intel/AMD SIMD
e.g. MMX/SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2/AES/AVX/AVX2 & 3DNow!/SSE4a/XOP/FMA4

E2K - this is VLIW/EPIC architecture, like Intel Itanium (IA-64) architecture.
Ref: https://en.wikipedia.org/wiki/Elbrus_2000

Co-authored-by: Alexander Troosh @troosh, Konstantin Ivlev @sse4 and Dmitry Shcherbakov @crypto-das
2021-09-26 11:12:35 +02:00
translators
9b1651a267 Update: Translations from eints
swedish: 8 changes by Abbin44
norwegian (bokmal): 14 changes by Anolitt
chinese (traditional): 6 changes by SiderealArt
slovenian: 4 changes by Matej1245
vietnamese: 14 changes by KhoiCanDev
luxembourgish: 24 changes by phreeze83
hungarian: 1 change by baliball
serbian: 29 changes by nkrs
german: 1 change by SecretIdetity
russian: 2 changes by SecretIdetity, 1 change by Ln-Wolf
catalan: 1 change by J0anJosep
turkish: 1 change by ahmetlii
french: 1 change by glx22
2021-09-25 18:46:38 +00:00
Patric Stout
394c749b6b Change: Heading for 13 now (#9573) 2021-09-25 13:48:03 +02:00
1268 changed files with 111992 additions and 70667 deletions

View File

@@ -8,7 +8,7 @@ notifications:
only:
- master
only-by:
- DorpsGek
- eints-sync\[bot\]
commit-comment:
discussion:
pull-request:

View File

@@ -7,3 +7,471 @@ trim_trailing_whitespace = true
[*.{c,cpp,h,hpp}]
indent_style = tab
charset = utf-8
#indent_size = <integer>
#tab_width = <integer>
#end_of_line = <lf, cf, crlf>
### C++ specific editor config rules ###
## Visual Studio ## https://learn.microsoft.com/en-us/visualstudio/ide/cpp-editorconfig-properties?view=vs-2019 ##
# Indentation #
# Do not indent braces
cpp_indent_braces = false
# When a new line is typed, it's indented relatively to the innermost open parenthesis
cpp_indent_multi_line_relative_to = innermost_parenthesis
# Indent new lines within parenthesis
cpp_indent_within_parentheses = indent
# In existing code, do not use the setting for alignment of new lines within parentheses
cpp_indent_preserve_within_parentheses = true
# Indent case contents
cpp_indent_case_contents = true
# Indent case labels
cpp_indent_case_labels = true
# Do not indent braces following a case statement
cpp_indent_case_contents_when_block = false
# Do not indent braces of lambdas used as parameters
cpp_indent_lambda_braces_when_parameter = false
# No override for "Position of goto labels" (Unspecified)
#cpp_indent_goto_labels
# Move preprocessor directives to the leftmost column
cpp_indent_preprocessor = leftmost_column
# Do not indent access specifiers
cpp_indent_access_specifiers = false
# Indent namespace contents
cpp_indent_namespace_contents = true
# Preserve indentation of comments
cpp_indent_preserve_comments = true
# Newline #
# Keep open braces for namespaces on the same line, but add a space before the brace
cpp_new_line_before_open_brace_namespace = same_line
# Keep open braces for types/classes on the same line, but add a space before the brace
cpp_new_line_before_open_brace_type = same_line
# Move open braces for functions to a new line
cpp_new_line_before_open_brace_function = new_line
# Keep open braces for control blocks on the same line, but add a space before the brace
cpp_new_line_before_open_brace_block = same_line
# Keep open braces for lambdas on the same line, but add a space before the brace
cpp_new_line_before_open_brace_lambda = same_line
# Place scope braces on separate lines
cpp_new_line_scope_braces_on_separate_lines = true
# Do not move closing braces to the same line as opening braces for empty types
cpp_new_line_close_brace_same_line_empty_type = false
# Do not move closing braces to the same line as opening braces for empty function bodies
cpp_new_line_close_brace_same_line_empty_function = false
# Do not place 'catch' and similar keywords on a new line
cpp_new_line_before_catch = false
# Do not place 'else' on a new line
cpp_new_line_before_else = false
# Do not place 'while' in a do-while loop on a new line
cpp_new_line_before_while_in_do_while = false
# Spacing #
# Remove spaces between function names and opening parentheses of argument lists
cpp_space_before_function_open_parenthesis = remove
# Do not insert a space within parentheses of an argument list
cpp_space_within_parameter_list_parentheses = false
# Do not insert a space between parentheses when argument list is empty
cpp_space_between_empty_parameter_list_parentheses = false
# Insert space between keyword and opening parenthesis in control flow statements
cpp_space_after_keywords_in_control_flow_statements = true
# Do not insert a space within parentheses of a control statement
cpp_space_within_control_flow_statement_parentheses = false
# Do not insert a space before opening parenthesis of lambda argument lists
cpp_space_before_lambda_open_parenthesis = false
# Do not insert a space within parentheses of a C-style cast
cpp_space_within_cast_parentheses = false
# Do not insert a space after closing parenthesis of C-style cast
cpp_space_after_cast_close_parenthesis = false
# Do not insert a space within parentheses of a parenthesized expression
cpp_space_within_expression_parentheses = false
# Insert space before opening brace of blocks
cpp_space_before_block_open_brace = true
# Do not insert a space between empty braces
cpp_space_between_empty_braces = false
# Do not insert a space before opening brace of uniform initialization and initializer lists
cpp_space_before_initializer_list_open_brace = false
# No override for "Insert space within braces of uniform initialization and initializer lists" (Spacing for this varies)
#cpp_space_within_initializer_list_braces
# Preserve spaces inside uniform initialization and initializer lists
cpp_space_preserve_in_initializer_list = true
# Do not insert space before opening square brackets
cpp_space_before_open_square_bracket = false
# Do not insert space within square bracket
cpp_space_within_square_brackets = false
# Do not insert space before empty square brackets
cpp_space_before_empty_square_brackets = false
# Do not insert space between empty square brackets
cpp_space_between_empty_square_brackets = false
# Group square brackets for multi-dimensional arrays together
cpp_space_group_square_brackets = true
# Do not insert space within square brackets for lambdas
cpp_space_within_lambda_brackets = false
# Do not insert space between empty lambda brackets
cpp_space_between_empty_lambda_brackets = false
# Do not insert space before commas
cpp_space_before_comma = false
# Insert space after commas
cpp_space_after_comma = true
# Remove spaces before and after member operators
cpp_space_remove_around_member_operators = true
# Insert space before colon for base in type declarations
cpp_space_before_inheritance_colon = true
# Insert space before colon for constructors
cpp_space_before_constructor_colon = true
# Remove space before semicolons
cpp_space_remove_before_semicolon = true
# No override for "Insert space after semicolons" (Depends on if loop is unconditional)
#cpp_space_after_semicolon
# Remove spaces between unary operators and their operands
cpp_space_remove_around_unary_operator = true
# Insert spaces before and after binary operators
cpp_space_around_binary_operator = insert
# Insert spaces around assignment operators
cpp_space_around_assignment_operator = insert
# Align pointer/reference symbol to the right
cpp_space_pointer_reference_alignment = right
# Insert spaces around conditional operators
cpp_space_around_ternary_operator = insert
# Wrapping #
# Always apply New Lines settings for blocks
cpp_wrap_preserve_blocks = never
## Rider & ReSharper ## https://www.jetbrains.com/help/resharper/EditorConfig_CPP_CppBlankLinesPageScheme.html ##
# Blank Lines #
# No override for "Max blank lines in declarations" (Unspecified; Not consistent across source code)
#cpp_keep_blank_lines_in_declarations
# No override for "Max blank lines in rest of source code" (Unspecified; Not consistent across source code)
#cpp_keep_blank_lines_in_code
# No override for "Number of blank lines around class/struct/enum definition" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_class_definition
# No override for "Number of blank lines around function declarations" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_function_declaration
# No override for "Number of blank lines around function definitions" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_function_definition
# No override for "Number of blank lines around single line function definitions" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_single_line_function_definition
# No override for "Number of blank lines around namespaces" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_namespace
# No override for "Number of blank lines around other definitions and declarations" (Unspecified; Not consistent across source code)
#cpp_blank_lines_around_other_declaration
# Braces Layout #
# Keep open braces for namespace declarations on the same line, but add a space before the brace
cpp_namespace_declaration_braces = end_of_line
# Keep open braces for linkage declarations on the same line, but add a space before the brace
cpp_linkage_specification_braces = end_of_line
# Keep open braces for types/classes on the same line, but add a space before the brace
cpp_type_declaration_braces = end_of_line
# Keep open braces for namespace definitions on the same line (does not modify spacing before the brace)
cpp_place_namespace_definitions_on_same_line = true
# Move open braces for functions to a new line
cpp_invocable_declaration_braces = next_line
# Keep open braces for lambdas on the same line, but add a space before the brace
cpp_anonymous_method_declaration_braces = end_of_line
# Keep open braces for case blocks on the same line, but add a space before the brace
cpp_case_block_braces = end_of_line
# No override for "Requires expression braces" style (requires expressions are a C++20 feature)
#cpp_requires_expression_braces
# Keep open braces for all other blocks on the same line, but add a space before the brace
cpp_other_braces = end_of_line
# Only indent the insides of multi-line expression braces
cpp_expression_braces = inside
# Place the braces of empty blocks together and on the same line
cpp_empty_block_style = together_same_line
# Force line breaks within simple compound statements
cpp_simple_block_style = line_break
# No override for "Regular expression for macros starting a block" (Marco blocks aren't used)
#cpp_macro_block_begin
# No override for "Regular expression for macros ending a block" (Marco blocks aren't used)
#cpp_macro_block_end
# Tabs and indents #
# Redundant override (Already overriden globally by 'indent_style')
#cpp_indent_style
# Redundant override (Already overriden globally by 'indent_size')
#cpp_indent_size
# Redundant override (Already overriden globally by 'tab_width')
#cpp_tab_width
# Use spaces instead of tabs as indentation for precise alignment
cpp_alignment_tab_fill_style = use_spaces
# Allow alignment even if construct is located too far to the right, more than 2/3 of 'Hard wrap at' limit
cpp_allow_far_alignment = true
# Indentation and Alignment #
# No override for "Continuous line indent" (Varies throughout source code)
#cpp_continuous_line_indent
# Do not use continuous line indent in function declaration and invocation parentheses
cpp_use_continuous_line_indent_in_method_pars = false
# Do not use continuous line indent in initializer lists
cpp_use_continuous_line_indent_in_expression_braces = false
# Indent namespace members (including nested ones)
cpp_namespace_indentation = all
# No override for "Indent linkage specification block members" (Unspecified)
#cpp_linkage_specification_indentation
# Do not indent access specifier from class
cpp_indent_access_specifiers_from_class = false
# Indent class member from access specifier
cpp_indent_class_members_from_access_specifiers = true
# Do not indent if a function definition or declaration is wrapped after the type
cpp_indent_wrapped_function_names = false
# Indent 'case' labels from 'switch'
cpp_indent_switch_labels = true
# No override for "Indent function declarations' parentheses" (Varies throughout source code)
#cpp_indent_method_decl_pars
# No override for "Indent method calls' parentheses" (Varies throughout source code)
#cpp_indent_invocation_pars
# No override for "Indent statement (if, while, for, etc) parentheses" (Varies throughout source code)
#cpp_indent_statement_pars
# Do not change preprocessor directives indenting
cpp_indent_preprocessor_directives = do_not_change
# No override for "Indent C++/CLI generic constraints" (C++/CLI is not used)
#cpp_indent_type_constraints
# Align/indent comments started at the first column
cpp_indent_comment = true
# Comments that comment out code will use the indentation level of the commented code.
cpp_place_comments_at_first_column = false
# Align multiline declarators in declaration
cpp_align_multiple_declaration = true
# Align multiline function parameters
cpp_align_multiline_parameter = true
# Align multiline call arguments
cpp_align_multiline_argument = true
# Do not align first of multiline call arguments with the opening parentheses
cpp_align_first_arg_by_paren = false
# Align multiline initializer list arguments
cpp_align_multiline_expression_brace = true
# No override for "Align multiline template parameters in template declaration" (Unspecified)
#cpp_align_multiline_type_parameter
# No override for "Align multiline template arguments" (Unspecified)
#cpp_align_multiline_type_argument
# Align multiline base classes in class base clause
cpp_align_multiline_extends_list = true
# Align multiline member initializers in member initializer lists
cpp_align_multiline_ctor_init = true
# Outdent commas placed on new line
cpp_outdent_commas = true
# Do not align multiline ?: operator with first line (since alignment is incorrect)
cpp_align_ternary = none
# Do not indent aligned ?: operator (since indentation varies)
cpp_indent_aligned_ternary = false
# No override for "Align multiline chained method calls" (Unspecified)
#cpp_align_multiline_calls_chain
# No override for "Outdent '.' and '->' in chained method calls on new lines" (Unspecified)
#cpp_outdent_dots
# Do not align multiline chained binary expressions
cpp_align_multiline_binary_expressions_chain = false
# Fix column alignment in adjacent lines
cpp_int_align_fix_in_adjacent = true
# Align assignments with adjacent assignments
cpp_int_align_eq = true
# Do not align declaration names with adjacent declaration names
cpp_int_align_declaration_names = false
# Align end-of-line comments with adjacent end-of-line comments
cpp_int_align_comments = true
# Spaces #
# Do not put space before ANY commas
cpp_space_before_comma = false
# Put space after ALL commas
cpp_space_after_comma = true
# Put space before ptr in declaration of variable
cpp_space_before_ptr_in_data_member = true
# Do not put space after ptr in declaration of variable
cpp_space_after_ptr_in_data_member = false
# Put space before ptr in declaration of multiple variables
cpp_space_before_ptr_in_data_members = true
# Do not put space after ptr in declaration of multiple variables
cpp_space_after_ptr_in_data_members = false
# Put space before ptr in return type of function
cpp_space_before_ptr_in_method = true
# Do not put space after ptr in return type of function
cpp_space_after_ptr_in_method = false
# Do not put space before ptr in abstract declaration
cpp_space_before_ptr_in_abstract_decl = false
# Put space before ref in declaration of variable
cpp_space_before_ref_in_data_member = true
# Do not put space after ref in declaration of variable
cpp_space_after_ref_in_data_member = false
# Put space before ref in declaration of multiple variables
cpp_space_before_ref_in_data_members = true
# Do not put space after ref in declaration of multiple variables
cpp_space_after_ref_in_data_members = false
# Do not put space before ref in return type of function
cpp_space_before_ref_in_method = false
# Put space after ref in return type of function
cpp_space_after_ref_in_method = true
# Do not put space before ref in abstract declaration
cpp_space_before_ref_in_abstract_decl = false
# Do not put space before parentheses in function parameters
cpp_space_between_method_declaration_name_and_open_parenthesis = false
# Do not put space before parentheses in lambda parameters
cpp_space_before_lambda_parentheses = false
# Do not put space within parentheses in function parameters
cpp_space_between_method_declaration_parameter_list_parentheses = false
# Do not put space within empty parentheses in function parameters
cpp_space_between_method_declaration_empty_parameter_list_parentheses = false
# Do not put space before angle brackets in template parameters
cpp_space_before_template_params = false
# Do not put space within angle brackets in template parameters
cpp_space_within_template_params = false
# Do not put space within empty angle brackets in template parameters
cpp_space_within_empty_template_params = false
# Do not put space before angle brackets in template arguments
cpp_space_before_template_args = false
# Do not put space within angle brackets in template arguments
cpp_space_within_template_args = false
# Do not put space between closing angle brackets in template arguments
cpp_space_between_closing_angle_brackets_in_template_args = false
# Put space around '=' in alias declaration and namespace alias
cpp_space_around_alias_eq = true
# Do not put space around '->' in trailing return types
cpp_space_around_deref_in_trailing_return_type = false
# Put space before base types list colon
cpp_space_before_colon_in_inheritance_clause = true
# Put space after base types list colon
cpp_space_after_colon_in_inheritance_clause = true
# No override for "Before C++/CLI generic constraint colon" (Unspecified)
#cpp_space_before_type_parameter_constraint_colon
# No override for "After C++/CLI generic constraint colon" (Unspecified)
#cpp_space_after_type_parameter_constraint_colon
# Put space before parentheses of control statements
cpp_space_after_keywords_in_control_flow_statements = true
# Do not put space within parentheses of control statements
cpp_space_between_parentheses_of_control_flow_statements = false
# Do not put space before semicolon in 'for' statements
cpp_space_before_semicolon_in_for_statement = false
# Put space after semicolon in 'for' statements
cpp_space_after_semicolon_in_for_statement = true
# Put space before ':' in range-based for loop
cpp_space_before_for_colon = true
# Put space after ':' in range-based for loop
cpp_space_after_for_colon = true
# Do not put space before colon in switch case or label statement
cpp_space_before_colon_in_case = false
# Put space after colon in switch case or label statement
cpp_space_after_colon_in_case = true
# Put space around binary operator
cpp_space_around_binary_operator = true
# Put space around assignment operator
cpp_space_around_assignment_operator = true
# Do not put space around dot, '->', '.*' and '->.'
cpp_space_around_member_access_operator = false
# Do not put space within any parentheses
cpp_space_within_parentheses = false
# Do not put space before array subscript brackets
cpp_space_before_open_square_brackets = false
# Do not put space within array subscript brackets
cpp_space_between_square_brackets = false
# Do not put space before empty parentheses in function call and initialization
cpp_space_between_method_call_name_and_opening_parenthesis = false
# Do not put space within parentheses in cast expressions
cpp_space_between_typecast_parentheses = false
# Do not put space after parentheses in cast expressions
cpp_space_after_cast = false
# Do not put space within parentheses in function call and initialization
cpp_space_between_method_call_parameter_list_parentheses = false
# Do not put space within empty parentheses in function call and initialization
cpp_space_between_method_call_empty_parameter_list_parentheses = false
# Put space in ternary operator '? :' before '?'
cpp_space_before_ternary_quest = true
# Put space in ternary operator '? :' after '?'
cpp_space_after_ternary_quest = true
# Put space in ternary operator '? :' before ':'
cpp_space_before_ternary_colon = true
# Put space in ternary operator '? :' after ':'
cpp_space_after_ternary_colon = true
# Do not put space before uniform initialization braces
cpp_space_before_initializer_braces = false
# Do not put space within uniform initialization braces
cpp_space_within_initializer_braces = false
# Do not put space within empty uniform initialization braces
cpp_space_within_empty_initializer_braces = false
# Put space before end of line comment
cpp_space_before_trailing_comment = true
# Preserve spaces before end of line comment
cpp_disable_space_changes_before_trailing_comment = true
# Line breaks and Wrapping #
# Redundant override (Already overriden globally by 'insert_final_newline')
#cpp_insert_final_newline
# Redundant override (Already overriden earlier in Visual Studio section)
#cpp_new_line_before_else
# Do not place 'while' in a do-while loop on a new line
cpp_new_line_before_while = false
# Redundant override (Already overriden earlier in Visual Studio section)
#cpp_new_line_before_catch
# Do not change the line breaks of single embedded statements
cpp_simple_embedded_statement_style = do_not_change
# Do not change the line breaks of simple 'case' statement
cpp_simple_case_statement_style = do_not_change
# Put member function definition return type on same line
cpp_function_definition_return_type_style = on_single_line
# Put top-level function definition return type on same line
cpp_toplevel_function_definition_return_type_style = on_single_line
# Put member function declaration return type on same line
cpp_function_declaration_return_type_style = on_single_line
# Put top-level function declaration return type on same line
cpp_toplevel_function_declaration_return_type_style = on_single_line
# Force template<...> of a template declaration on new line
cpp_break_template_declaration = line_break
# No override for "Break line before the requires-clause" (requires-clause is a C++20 feature)
#cpp_line_break_before_requires_clause
# Do not change the line break before the colon in member initializer lists
cpp_member_initializer_list_style = do_not_change
# Do not change the line break after the colon in member initializer lists
cpp_line_break_after_colon_in_member_initializer_lists = do_not_change
# No override for "Break line before comma in member initializer lists" (Varies throughout source code)
#cpp_line_break_before_comma_in_member_initializer_lists
# No override for "Break line after comma in member initializer lists" (Varies throughout source code)
#cpp_line_break_after_comma_in_member_initializer_lists
# No override for "Allow C++/CLI generic constraints on the same line" (C++/CLI is not used)
#cpp_place_type_constraints_on_same_line
# No override for "Keep existing line breaks" (Varies throughout source code; depends on developer preference)
#cpp_keep_user_linebreaks
# No override for "Hard wrap at _ characters" (Unspecified)
#cpp_max_line_length
# Do not prefer wrap before ','
cpp_wrap_before_comma = false
# Do not prefer wrap before ',' in base clause
cpp_wrap_before_comma_in_base_clause = false
# No override for "Wrap ternary expression" (Varies throughout source code)
#cpp_wrap_ternary_expr_style
# No override for "Prefer wrap before '?' and ':' in ternary expressions" (Varies throughout source code)
#cpp_wrap_before_ternary_opsigns
# No override for "Prefer wrap before ':'" (Varies throughout source code)
#cpp_wrap_before_colon
# No override for "Prefer wrap before first C++/CLI generic constraint" (C++/CLI is not used)
#cpp_wrap_before_first_type_parameter_constraint
# No override for "Wrap multiple C++/CLI generic constraints" (C++/CLI is not used)
#cpp_wrap_multiple_type_parameter_constraints_style
# No override for "Wrap enum definition" (Varies throughout source code)
#cpp_wrap_enumeration_style
# No override for "Wrap braced initializer list" (Varies throughout source code)
#cpp_wrap_braced_init_list_style
# No override for "Wrap base classes list" (Varies throughout source code)
#cpp_wrap_base_clause_style
# No override for "Wrap constructor initializer" (Varies throughout source code)
#cpp_wrap_ctor_initializer_style
# No override for "Wrap formal parameters" (Varies throughout source code)
#cpp_wrap_parameters_style
# Do not prefer wrap before '(' in declaration
cpp_wrap_before_declaration_lpar = false
# Prefer wrap after '(' in declaration
cpp_wrap_after_declaration_lpar = true
# Do not prefer wrap before ')' in declaration
cpp_wrap_before_declaration_rpar = false
# No override for "Wrap invocation arguments" (Varies throughout source code)
#cpp_wrap_arguments_style
# Do not prefer wrap before '(' in invocation
cpp_wrap_before_invocation_lpar = false
# Prefer wrap after '(' in invocation
cpp_wrap_after_invocation_lpar = true
# Do not prefer wrap before ')' in invocation
cpp_wrap_before_invocation_rpar = false
# Prefer wrap after '{' in initializer lists
cpp_wrap_after_expression_lbrace = true
# Do not prefer wrap before '}' in initializer lists
cpp_wrap_before_expression_rbrace = false

View File

@@ -42,7 +42,7 @@ Some things are not automated, and forgotten often. This list is a reminder for
* This PR touches english.txt or translations? Check the [guidelines](https://github.com/OpenTTD/OpenTTD/blob/master/docs/eints.md)
* This PR affects the save game format? (label 'savegame upgrade')
* This PR affects the GS/AI API? (label 'needs review: Script API')
* ai_changelog.hpp, gs_changelog.hpp need updating.
* ai_changelog.hpp, game_changelog.hpp need updating.
* The compatibility wrappers (compat_*.nut) need updating.
* This PR affects the NewGRF API? (label 'needs review: NewGRF')
* newgrf_debug_data.h may need updating.

12
.github/codeql/codeql-config.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
name: openttd
queries:
- uses: security-and-quality
query-filters:
- exclude:
id:
# Only feasible way is to move away from fopen; fopen_s is optional C11 and not implemented on most platforms.
- cpp/world-writable-file-creation
# Basically OpenTTD's coding style for adding things like ..._INVALID to enumerations
- 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

View File

@@ -0,0 +1,71 @@
"""
Script to scan the OpenTTD's script API for functions that miss checks for the
function being called from the right mode (deity or company mode).
When a function calls either ScriptObject::Command or ScriptObject::GetCompany
then the function is considered dangerous. When one of the mode enforcement
macros from script_error.hpp, i.e. EnforceDeityMode, EnforceCompanyModeValid or
EnforceDeityOrCompanyModeValid, are called in the function, then we consider
that the function has mode enforcement.
Any dangerous function for which no enforcement is found are emitted as errors.
"""
import glob
import re
import sys
def check_mode_enforcement(path):
errors = []
with open(path, "r") as reader:
mode_enforcement_found = False
dangerous_function = False
for line in reader:
# Line does not start with a tab and have <word>::<word>. That looks like the begin of a function, so reset the state.
if re.match(r"^[^\t].*\w::\w", line):
mode_enforcement_found = False
dangerous_function = False
currentFunction = line
continue
if re.match(
r"\t(EnforceDeityMode|EnforceCompanyModeValid|EnforceCompanyModeValid_Void|EnforceDeityOrCompanyModeValid|EnforceDeityOrCompanyModeValid_Void)\(",
line,
):
# Mode enforcement macro found
mode_enforcement_found = True
continue
if re.match(r".*(ScriptObject::Command|ScriptObject::GetCompany).*", line):
# Dangerous function found
dangerous_function = True
continue
# Line with only a closing bracket. That looks like the end of a function, so check for the dangerous function without mode enforcement
if re.match(r"^}$", line) and dangerous_function and not mode_enforcement_found:
function_name = currentFunction.rstrip("\n").replace("/* static */ ", "")
errors.append(f"{path}: {function_name}")
return errors
def main():
errors = []
for path in sorted(glob.glob("src/script/api/*.cpp")):
# Skip a number of files that yield only false positives
if path.endswith(("script_object.cpp", "script_companymode.cpp", "script_controller.cpp", "script_game.cpp")):
continue
errors.extend(check_mode_enforcement(path))
if errors:
print("Mode enforcement was expected in the following files/functions:")
print("\n".join(errors))
sys.exit(1)
print("OK")
if __name__ == "__main__":
main()

34
.github/stale.yml vendored
View File

@@ -1,34 +0,0 @@
daysUntilClose: 7
staleLabel: stale
closeComment: false
exemptMilestones: true
exemptAssignees: true
issues:
daysUntilStale: 60
exemptLabels:
- pinned
- security
- "good first issue"
- regression
markComment: >
This issue has been automatically marked as stale because it has not had any activity in the last two months.
If you believe the issue is still relevant, please test on the latest nightly and report back.
It will be closed if no further activity occurs within 7 days.
Thank you for your contributions.
pulls:
daysUntilStale: 30
exemptLabels:
- pinned
markComment: >
This pull request has been automatically marked as stale because it has not had any activity in the last month.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
It will be closed if no further activity occurs within 7 days.
Thank you for your contributions.

View File

@@ -210,11 +210,10 @@ def main():
errors.append(f"ERROR: {string} is (possibly) no longer needed.")
if errors:
for error in errors:
print(error)
print("\n".join(errors))
sys.exit(1)
else:
print("OK")
print("OK")
if __name__ == "__main__":

50
.github/windowdesc-ini-key.py vendored Normal file
View File

@@ -0,0 +1,50 @@
"""
Script to scan the OpenTTD source-tree for ini_key issues in WindowDesc entries.
"""
import glob
import os
import re
import sys
def scan_source_files(path, ini_keys=None):
if ini_keys is None:
ini_keys = set()
errors = []
for new_path in glob.glob(f"{path}/*.cpp"):
if os.path.isdir(new_path):
errors.append(scan_source_files(new_path, ini_keys))
continue
with open(new_path) as fp:
output = fp.read()
for (name, ini_key, widgets) in re.findall(r"^static WindowDesc ([a-zA-Z0-9_]*).*?, (?:\"(.*?)\")?.*?,(?:\s+.*?,){6}\s+[^\s]+\((.*?)\)", output, re.S|re.M):
if ini_key:
if ini_key in ini_keys:
errors.append(f"{new_path}: {name} ini_key is a duplicate")
ini_keys.add(ini_key)
widget = re.findall("static const (?:struct )?NWidgetPart " + widgets + ".*?(?:WWT_(DEFSIZE|STICKY)BOX.*?)?;", output, re.S)[0]
if widget and not ini_key:
errors.append(f"{new_path}: {name} has WWT_DEFSIZEBOX/WWT_STICKYBOX without ini_key")
if ini_key and not widget:
errors.append(f"{new_path}: {name} has ini_key without WWT_DEFSIZEBOX/WWT_STICKYBOX")
return errors
def main():
errors = scan_source_files("src")
if errors:
print("\n".join(errors))
sys.exit(1)
print("OK")
if __name__ == "__main__":
main()

View File

@@ -9,6 +9,10 @@ on:
env:
CTEST_OUTPUT_ON_FAILURE: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
emscripten:
name: Emscripten
@@ -16,22 +20,23 @@ jobs:
runs-on: ubuntu-20.04
container:
# If you change this version, change the number in the cache step too.
image: emscripten/emsdk:2.0.31
image: emscripten/emsdk:3.1.42
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: /emsdk/upstream/emscripten/cache
key: 2.0.31-${{ runner.os }}
key: 3.1.42-${{ runner.os }}
- name: Patch Emscripten to support LZMA
- name: Patch Emscripten to support LZMA and nlohmann-json
run: |
cd /emsdk/upstream/emscripten
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-nlohmann-json.patch
- name: Build (host tools)
run: |
@@ -61,28 +66,33 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
cmake --build . -j $(nproc)
cmake --build . -j $(nproc) --target openttd
echo "::endgroup::"
linux:
name: Linux
strategy:
fail-fast: false
matrix:
include:
- compiler: clang
- name: Clang
compiler: clang
cxxcompiler: clang++
libsdl: libsdl2-dev
- compiler: gcc
libraries: libsdl2-dev
- name: GCC - SDL2
compiler: gcc
cxxcompiler: g++
libsdl: libsdl2-dev
- compiler: gcc
libraries: libsdl2-dev
- name: GCC - SDL1.2
compiler: gcc
cxxcompiler: g++
libsdl: libsdl1.2-dev
- compiler: gcc
libraries: libsdl1.2-dev
- name: GCC - Dedicated
compiler: gcc
cxxcompiler: g++
extra-cmake-parameters: -DOPTION_DEDICATED=ON
extra-cmake-parameters: -DOPTION_DEDICATED=ON -DCMAKE_CXX_FLAGS_INIT="-DRANDOM_DEBUG" -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
# Compile without SDL / SDL2, as that should compile fine too.
name: Linux (${{ matrix.name }})
runs-on: ubuntu-20.04
env:
@@ -91,7 +101,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install dependencies
run: |
@@ -102,13 +112,20 @@ jobs:
echo "::group::Install dependencies"
sudo apt-get install -y --no-install-recommends \
liballegro4-dev \
libcurl4-openssl-dev \
libfontconfig-dev \
libharfbuzz-dev \
libicu-dev \
liblzma-dev \
liblzo2-dev \
${{ matrix.libsdl }} \
nlohmann-json3-dev \
${{ matrix.libraries }} \
zlib1g-dev \
# EOF
sudo vcpkg install \
breakpad \
# EOF
echo "::endgroup::"
env:
DEBIAN_FRONTEND: noninteractive
@@ -137,7 +154,7 @@ jobs:
cd build
echo "::group::CMake"
cmake .. ${{ matrix.extra-cmake-parameters }}
cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake ${{ matrix.extra-cmake-parameters }}
echo "::endgroup::"
echo "::group::Build"
@@ -151,8 +168,6 @@ jobs:
ctest -j $(nproc) --timeout 120
macos:
name: Mac OS
strategy:
fail-fast: false
matrix:
@@ -160,40 +175,54 @@ jobs:
- arch: x64
full_arch: x86_64
name: Mac OS (${{ matrix.arch }})
runs-on: macos-latest
env:
MACOSX_DEPLOYMENT_TARGET: 10.14
MACOSX_DEPLOYMENT_TARGET: 10.13
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install dependencies
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: |
brew install \
pkg-config \
# EOF
- name: Prepare cache key
id: key
run: |
echo "::set-output name=image::$ImageOS-$ImageVersion"
echo "image=$ImageOS-$ImageVersion" >> $GITHUB_OUTPUT
- name: Enable vcpkg cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: /usr/local/share/vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-1 # Increase the number whenever dependencies are modified
restore-keys: |
${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
- name: Prepare vcpkg
run: |
vcpkg install --triplet=${{ matrix.arch }}-osx \
breakpad \
curl \
liblzma \
libpng \
lzo \
nlohmann-json \
zlib \
# EOF
- name: Install OpenGFX
run: |
mkdir -p ~/Documents/OpenTTD/baseset
cd ~/Documents//OpenTTD/baseset
cd ~/Documents/OpenTTD/baseset
echo "::group::Download OpenGFX"
curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
@@ -214,7 +243,7 @@ jobs:
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
cmake .. \
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
@@ -232,19 +261,19 @@ jobs:
ctest -j $(sysctl -n hw.logicalcpu) --timeout 120
windows:
name: Windows
strategy:
fail-fast: false
matrix:
os: [windows-latest, windows-2016]
os: [windows-latest, windows-2019]
arch: [x86, x64]
name: Windows (${{ matrix.os }} / ${{ matrix.arch }})
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Prepare cache key
id: key
@@ -253,13 +282,13 @@ jobs:
# Work around caching failure with GNU tar
New-Item -Type Junction -Path vcpkg -Target c:\vcpkg
Write-Output "::set-output name=image::$env:ImageOS-$env:ImageVersion"
Write-Output "image=$env:ImageOS-$env:ImageVersion" >> $env:GITHUB_OUTPUT
- name: Enable vcpkg cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-1 # Increase the number whenever dependencies are modified
restore-keys: |
${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
@@ -267,9 +296,11 @@ jobs:
shell: bash
run: |
vcpkg install --triplet=${{ matrix.arch }}-windows-static \
breakpad \
liblzma \
libpng \
lzo \
nlohmann-json \
zlib \
# EOF
@@ -299,6 +330,8 @@ jobs:
- name: Build
shell: bash
env:
NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] "
run: |
mkdir build
cd build
@@ -318,13 +351,11 @@ jobs:
- name: Test
shell: bash
run: |
cd ${GITHUB_WORKSPACE}/build
cd build
ctest --timeout 120
msys2:
name: msys2
strategy:
fail-fast: false
matrix:
@@ -334,11 +365,13 @@ jobs:
- msystem: MINGW32
arch: i686
name: MinGW (${{ matrix.arch }})
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
@@ -352,6 +385,9 @@ jobs:
mingw-w64-${{ matrix.arch }}-gcc
mingw-w64-${{ matrix.arch }}-lzo2
mingw-w64-${{ matrix.arch }}-libpng
mingw-w64-${{ matrix.arch }}-lld
mingw-w64-${{ matrix.arch }}-ninja
mingw-w64-${{ matrix.arch }}-nlohmann-json
- name: Install OpenGFX
shell: bash
@@ -374,24 +410,28 @@ jobs:
- name: Build
shell: msys2 {0}
env:
NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] "
run: |
mkdir build
cd build
echo "::group::CMake"
cmake .. -G"MSYS Makefiles"
cmake .. \
-GNinja \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
cmake --build . -j $(nproc)
cmake --build .
echo "::endgroup::"
- name: Test
shell: msys2 {0}
run: |
cd build
ctest -j $(nproc) --timeout 120
ctest --timeout 120
check_annotations:
name: Check Annotations
@@ -408,4 +448,4 @@ jobs:
steps:
- name: Check annotations
uses: OpenTTD/actions/annotation-check@v2
uses: OpenTTD/actions/annotation-check@v3

86
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,86 @@
name: CodeQL
on:
push:
branches:
- master
pull_request:
# The branches below must be a subset of the branches above
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@v3
- 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 \
liballegro4-dev \
libcurl4-openssl-dev \
libfontconfig-dev \
libharfbuzz-dev \
libicu-dev \
liblzma-dev \
liblzo2-dev \
libsdl2-dev \
nlohmann-json3-dev \
zlib1g-dev \
# EOF
echo "::endgroup::"
env:
DEBIAN_FRONTEND: noninteractive
- name: Set number of make jobs
run: |
echo "MAKEFLAGS=-j$(nproc)" >> $GITHUB_ENV
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: cpp
config-file: ./.github/codeql/codeql-config.yml
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: /language:cpp
upload: False
output: sarif-results
- name: Filter out table & generated code
uses: advanced-security/filter-sarif@v1
with:
patterns: |
+**/*.*
-**/table/*.*
-**/generated/**/*.*
-**/tests/*.*
input: sarif-results/cpp.sarif
output: sarif-results/cpp.sarif
- name: Upload results
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: sarif-results/cpp.sarif

View File

@@ -3,6 +3,10 @@ name: Commit checker
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
commit-checker:
name: Commit checker
@@ -10,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 4

104
.github/workflows/preview-build.yml vendored Normal file
View File

@@ -0,0 +1,104 @@
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 number in the cache step too.
image: emscripten/emsdk:3.1.42
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Name branch
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
git checkout -b pr${{ github.event.pull_request.number }}
- name: Setup cache
uses: actions/cache@v3
with:
path: /emsdk/upstream/emscripten/cache
key: 3.1.42-${{ runner.os }}
- name: Patch Emscripten to support LZMA and nlohmann_json
run: |
cd /emsdk/upstream/emscripten
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-nlohmann-json.patch
- name: Build (host tools)
run: |
mkdir build-host
cd build-host
echo "::group::CMake"
cmake .. -DOPTION_TOOLS_ONLY=ON
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc) tools
echo "::endgroup::"
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Build
run: |
mkdir build
cd build
echo "::group::CMake"
emcmake cmake .. \
-DHOST_BINARY_DIR=../build-host \
-DCMAKE_BUILD_TYPE=Release \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
cmake --build . -j $(nproc) --target openttd
echo "::endgroup::"
- name: Prepare preview
run: |
mkdir public
cp build/openttd.data public/
cp build/openttd.html public/
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
- name: Publish preview
uses: cloudflare/pages-action@v1
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 }}

20
.github/workflows/preview.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: Preview
on:
pull_request_target:
types:
- labeled
- synchronize
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
preview:
if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'preview') || (github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'preview')) }}
name: Preview
uses: ./.github/workflows/preview-build.yml
secrets: inherit

View File

@@ -1,138 +0,0 @@
name: Preview build
on:
repository_dispatch:
types:
- Preview*
jobs:
preview:
name: Build preview
runs-on: ubuntu-20.04
container:
# If you change this version, change the number in the cache step too.
image: emscripten/emsdk:2.0.31
# uid=1001(runner) gid=121(docker)
options: -u 1001:121
steps:
- name: Update deployment status to in progress
uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
mediaType: |
previews:
- ant-man
- flash
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
deployment_id: ${{ github.event.client_payload.deployment_id }}
state: in_progress
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{ github.event.client_payload.sha }}
- name: Name branch
run: |
name=$(echo "${{ github.event.client_payload.folder }}")
git checkout -b ${name}
- name: Setup cache
uses: actions/cache@v2
with:
path: /emsdk/upstream/emscripten/cache
key: 2.0.31-${{ runner.os }}
- name: Patch Emscripten to support LZMA
run: |
cd /emsdk/upstream/emscripten
patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch
- name: Build (host tools)
run: |
mkdir build-host
cd build-host
echo "::group::CMake"
cmake .. -DOPTION_TOOLS_ONLY=ON
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc) tools
echo "::endgroup::"
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Build
run: |
mkdir build
cd build
echo "::group::CMake"
emcmake cmake .. \
-DHOST_BINARY_DIR=../build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
emmake make -j$(nproc)
echo "::endgroup::"
- name: Publish preview
run: |
# setuptools is missing in this Docker image, which breaks installing
# awscli. So we need to do this in two steps to recover sanity.
pip3 install setuptools
pip3 install awscli
~/.local/bin/aws s3 cp --only-show-errors build/openttd.data s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
~/.local/bin/aws s3 cp --only-show-errors build/openttd.html s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
~/.local/bin/aws s3 cp --only-show-errors build/openttd.js s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
~/.local/bin/aws s3 cp --only-show-errors build/openttd.wasm s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
# Invalidate the cache of the CloudFront distribution
~/.local/bin/aws cloudfront create-invalidation --distribution-id ${{ secrets.PREVIEW_CF_DISTRIBUTION_ID }} --paths "/${{ github.event.client_payload.folder }}/*"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Update deployment status to success
uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
mediaType: |
previews:
- ant-man
- flash
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
deployment_id: ${{ github.event.client_payload.deployment_id }}
state: success
environment_url: https://preview.openttd.org/${{ github.event.client_payload.folder }}/
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: failure()
name: Update deployment status to failure
uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
mediaType: |
previews:
- ant-man
- flash
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
deployment_id: ${{ github.event.client_payload.deployment_id }}
state: failure
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}

View File

@@ -1,66 +0,0 @@
name: Preview label
on:
pull_request_target:
types:
- labeled
env:
TEAM_CORE_DEVELOPER: core-developers
jobs:
check_preview_label:
name: Check for preview label
if: github.event.action == 'labeled' && github.event.label.name == 'preview'
runs-on: ubuntu-20.04
steps:
- name: Check if label was added by core developer
id: core_developer
continue-on-error: true
uses: octokit/request-action@v2.x
with:
route: GET /orgs/OpenTTD/teams/${{ env.TEAM_CORE_DEVELOPER }}/memberships/${{ github.event.sender.login }}
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: steps.core_developer.outcome == 'failure'
name: Remove preview label if not core developer
uses: octokit/request-action@v2.x
with:
route: DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/preview
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
issue_number: ${{ github.event.number }}
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: steps.core_developer.outcome == 'success'
name: Create deployment
id: deployment
uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/deployments
mediaType: |
previews:
- ant-man
- flash
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
ref: ${{ github.event.pull_request.head.sha }}
task: deploy:preview
auto_merge: false
required_contexts: "[]"
environment: preview-pr-${{ github.event.number }}
description: "Preview for Pull Request #${{ github.event.number }}"
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: steps.core_developer.outcome == 'success'
name: Trigger 'preview build'
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
event-type: "Preview build #${{ github.event.number }}"
client-payload: '{"folder": "pr${{ github.event.number }}", "sha": "${{ github.event.pull_request.head.sha }}", "deployment_id": "${{ fromJson(steps.deployment.outputs.data).id }}"}'

View File

@@ -1,66 +0,0 @@
name: Preview push
on:
pull_request_target:
types:
- synchronize
jobs:
check_new_preview:
name: Check preview needs update
runs-on: ubuntu-20.04
steps:
- name: Check if earlier preview exists
id: earlier_preview
uses: octokit/request-action@v2.x
with:
route: GET /repos/{owner}/{repo}/deployments
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
environment: preview-pr-${{ github.event.number }}
per_page: 1
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: toJson(fromJson(steps.earlier_preview.outputs.data)) != '[]'
name: Check for preview label
id: preview_label
uses: octokit/request-action@v2.x
with:
route: GET /repos/{owner}/{repo}/issues/{issue_number}/labels
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
issue_number: ${{ github.event.number }}
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: toJson(fromJson(steps.earlier_preview.outputs.data)) != '[]' && contains(fromJson(steps.preview_label.outputs.data).*.name, 'preview')
name: Create deployment
id: deployment
uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/deployments
mediaType: |
previews:
- ant-man
- flash
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
ref: ${{ github.event.pull_request.head.sha }}
task: deploy:preview
auto_merge: false
required_contexts: "[]"
environment: preview-pr-${{ github.event.number }}
description: "Preview for Pull Request #${{ github.event.number }}"
env:
GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
- if: toJson(fromJson(steps.earlier_preview.outputs.data)) != '[]' && contains(fromJson(steps.preview_label.outputs.data).*.name, 'preview')
name: Trigger 'preview build'
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.PREVIEW_GITHUB_TOKEN }}
event-type: "Preview build #${{ github.event.number }}"
client-payload: '{"folder": "pr${{ github.event.number }}", "sha": "${{ github.event.pull_request.head.sha }}", "deployment_id": "${{ fromJson(steps.deployment.outputs.data).id }}"}'

85
.github/workflows/release-docs.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
name: Release (Docs)
on:
workflow_call:
inputs:
version:
required: true
type: string
jobs:
docs:
name: Docs
runs-on: ubuntu-20.04
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
- name: Unpack source
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: Build
run: |
mkdir -p ${GITHUB_WORKSPACE}/build
cd ${GITHUB_WORKSPACE}/build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_DOCS_ONLY=ON \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build . --target docs
echo "::endgroup::"
- name: Create bundles
run: |
BASENAME=openttd-${{ inputs.version }}
cd ${GITHUB_WORKSPACE}/build
mv docs/source ${BASENAME}-docs
mv docs/ai-api ${BASENAME}-docs-ai
mv docs/gs-api ${BASENAME}-docs-gs
mkdir -p bundles
echo "::group::Create docs bundle"
tar --xz -cf bundles/${BASENAME}-docs.tar.xz ${BASENAME}-docs
echo "::endgroup::"
echo "::group::Create AI API docs bundle"
tar --xz -cf bundles/${BASENAME}-docs-ai.tar.xz ${BASENAME}-docs-ai
echo "::endgroup::"
echo "::group::Create GameScript API docs bundle"
tar --xz -cf bundles/${BASENAME}-docs-gs.tar.xz ${BASENAME}-docs-gs
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-docs
path: build/bundles/*.tar.xz
retention-days: 5

196
.github/workflows/release-linux.yml vendored Normal file
View File

@@ -0,0 +1,196 @@
name: Release (Linux)
on:
workflow_call:
inputs:
survey_key:
required: false
type: string
default: ""
jobs:
linux:
name: Linux (Generic)
runs-on: ubuntu-20.04
container:
# manylinux2014 is based on CentOS 7, but already has a lot of things
# installed and preconfigured. It makes it easier to build OpenTTD.
image: quay.io/pypa/manylinux2014_x86_64
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
- name: Unpack source
run: |
tar -xf source.tar.gz --strip-components=1
# dtolnay/rust-toolchain uses a curl argument (--retry-connrefused) that the curl shipped with our container doesn't support.
# So we need to do one part ourselves; the action takes over the rest and prepares the setup further.
- name: Prepare Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 --retry 10 --location --silent --show-error --fail "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Enable vcpkg cache
uses: actions/cache@v3
with:
path: /vcpkg/installed
key: ubuntu-20.04-vcpkg-release-1 # Increase the number whenever dependencies are modified
restore-keys: |
ubuntu-20.04-vcpkg-release
- name: Install dependencies
run: |
echo "::group::Install system dependencies"
# perl-IPC-Cmd, wget, and zip are needed to run vcpkg.
# autoconf-archive is needed to build ICU.
yum install -y \
autoconf-archive \
perl-IPC-Cmd \
wget \
zip \
# EOF
# aclocal looks first in /usr/local/share/aclocal, and if that doesn't
# exist only looks in /usr/share/aclocal. We have files in both that
# are important. So copy the latter to the first, and we are good to
# go.
cp /usr/share/aclocal/* /usr/local/share/aclocal/
echo "::endgroup::"
# The yum variant of fluidsynth depends on all possible audio drivers,
# like jack, ALSA, pulseaudio, etc. This is not really useful for us,
# as we route the output of fluidsynth back via our sound driver, and
# as such do not use these audio driver outputs at all.
# The vcpkg variant of fluidsynth depends on ALSA. Similar issue here.
# So instead, we compile fluidsynth ourselves, with as few
# dependencies as possible. We do it before anything else is installed,
# to make sure it doesn't pick up on any of the drivers.
echo "::group::Install fluidsynth"
wget https://github.com/FluidSynth/fluidsynth/archive/v2.3.3.tar.gz
tar xf v2.3.3.tar.gz
(
cd fluidsynth-2.3.3
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr
cmake --build . -j $(nproc)
cmake --install .
)
echo "::endgroup::"
echo "::group::Install audio drivers"
# These audio libs are to make sure the SDL version of vcpkg adds
# sound-support; these libraries are not added to the resulting
# binary, but the headers are used to enable them in SDL.
yum install -y \
alsa-lib-devel \
jack-audio-connection-kit-devel \
pulseaudio-libs-devel \
# EOF
echo "::endgroup::"
# We use vcpkg for our dependencies, to get more up-to-date version.
echo "::group::Install vcpkg and dependencies"
# We do a little dance to make sure we copy the cached install folder
# into our new clone.
git clone --depth=1 https://github.com/microsoft/vcpkg /vcpkg-clone
if [ -e /vcpkg/installed ]; then
mv /vcpkg/installed /vcpkg-clone/
rm -rf /vcpkg
fi
mv /vcpkg-clone /vcpkg
(
cd /vcpkg
./bootstrap-vcpkg.sh -disableMetrics
# Make Python3 available for other packages.
./vcpkg install python3
ln -sf $(pwd)/installed/x64-linux/tools/python3/python3.[0-9][0-9] /usr/bin/python3
./vcpkg install \
breakpad \
curl[http2] \
fontconfig \
freetype \
harfbuzz \
icu \
liblzma \
libpng \
lzo \
nlohmann-json \
sdl2 \
zlib \
# EOF
)
echo "::endgroup::"
echo "::group::Install breakpad dependencies"
cargo install dump_syms
echo "::endgroup::"
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Build
run: |
mkdir -p build
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
-DOPTION_PACKAGE_DEPENDENCIES=ON \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(nproc) cores"
cmake --build . -j $(nproc) --target openttd
echo "::endgroup::"
- name: Create breakpad symbols
run: |
cd build
dump_syms ./openttd --inlines --store symbols
- name: Create bundles
run: |
cd ${GITHUB_WORKSPACE}/build
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-linux-generic
path: build/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v3
with:
name: symbols-linux-generic
path: build/symbols
retention-days: 5

242
.github/workflows/release-macos.yml vendored Normal file
View File

@@ -0,0 +1,242 @@
name: Release (MacOS)
on:
workflow_call:
inputs:
survey_key:
required: false
type: string
default: ""
jobs:
macos:
name: MacOS
runs-on: macos-11
env:
MACOSX_DEPLOYMENT_TARGET: 10.13
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
- name: Unpack source
run: |
tar -xf source.tar.gz --strip-components=1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: |
echo "::group::Install brew dependencies"
brew install \
pandoc \
pkg-config \
# EOF
echo "::endgroup::"
echo "::group::Install breakpad dependencies"
cargo install dump_syms
echo "::endgroup::"
- name: Prepare cache key
id: key
run: |
echo "image=$ImageOS-$ImageVersion" >> $GITHUB_OUTPUT
- name: Enable vcpkg cache
uses: actions/cache@v3
with:
path: /usr/local/share/vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-release-1 # Increase the number whenever dependencies are modified
restore-keys: |
${{ steps.key.outputs.image }}-vcpkg-release
${{ steps.key.outputs.image }}-vcpkg-x64
- name: Prepare vcpkg
run: |
vcpkg install \
breakpad:x64-osx \
breakpad:arm64-osx \
curl:x64-osx \
curl:arm64-osx \
liblzma:x64-osx \
liblzma:arm64-osx \
libpng:x64-osx \
libpng:arm64-osx \
lzo:x64-osx \
lzo:arm64-osx \
nlohmann-json:x64-osx \
nlohmann-json:arm64-osx \
zlib:x64-osx \
zlib:arm64-osx \
# EOF
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Build tools
run: |
mkdir build-host
cd build-host
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_TOOLS_ONLY=ON \
# EOF
echo "::endgroup::"
echo "::group::Build tools"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
cmake --build . -j $(sysctl -n hw.logicalcpu) --target tools
echo "::endgroup::"
- name: Import code signing certificates
uses: Apple-Actions/import-codesign-certs@v2
with:
# The certificates in a PKCS12 file encoded as a base64 string
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
# The password used to import the PKCS12 file.
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
# If this is run on a fork, there may not be a certificate set up - continue in this case
continue-on-error: true
- name: Build arm64
run: |
mkdir build-arm64
cd build-arm64
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DVCPKG_TARGET_TRIPLET=arm64-osx \
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
cmake --build . -j $(sysctl -n hw.logicalcpu) --target openttd
echo "::endgroup::"
- name: Build x64
run: |
mkdir build-x64
cd build-x64
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DVCPKG_TARGET_TRIPLET=x64-osx \
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
-DCPACK_BUNDLE_APPLE_CERT_APP=${{ secrets.APPLE_DEVELOPER_CERTIFICATE_ID }} \
"-DCPACK_BUNDLE_APPLE_CODESIGN_PARAMETER=--deep -f --options runtime" \
-DAPPLE_UNIVERSAL_PACKAGE=1 \
# EOF
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
cmake --build . -j $(sysctl -n hw.logicalcpu) --target openttd
echo "::endgroup::"
- name: Create breakpad symbols
run: |
cd build-x64
mkdir dSYM
dsymutil ./openttd -o dSYM/openttd
dump_syms ./dSYM/openttd --inlines --store symbols
cd ../build-arm64
mkdir dSYM
dsymutil ./openttd -o dSYM/openttd
dump_syms ./dSYM/openttd --inlines --store ../build-x64/symbols
- name: Create bundles
run: |
cd build-x64
echo "::group::Create universal binary"
# Combine the `openttd` binaries from each build into a single file
lipo -create -output openttd-universal ../build-*/openttd
mv openttd-universal openttd
echo "::endgroup::"
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Notarize
env:
AC_USERNAME: ${{ secrets.APPLE_DEVELOPER_APP_USERNAME }}
AC_PASSWORD: ${{ secrets.APPLE_DEVELOPER_APP_PASSWORD }}
AC_TEAM_ID: ${{ secrets.APPLE_DEVELOPER_TEAM_ID }}
run: |
if [ -z "${AC_USERNAME}" ]; then
# We may be running on a fork that doesn't have notarization secrets set up; skip this step
echo No notarization secrets set up, skipping.
exit 0
fi
xcrun notarytool store-credentials --apple-id "${AC_USERNAME}" --password "${AC_PASSWORD}" --team-id "${AC_TEAM_ID}" openttd
cd build-x64
../os/macosx/notarize.sh
- name: Build zip
run: |
cd build-x64
pushd _CPack_Packages/*/Bundle/openttd-*/
# Remove the Applications symlink from the staging folder
rm -f Applications
# Remove the original dmg built by CPack to avoid a conflict when resolving
# the zip_filename variable below
rm -f ../*.dmg
zip_filename=(../openttd-*)
# Package up the existing, notarised .app into a zip file
zip -r -9 ${zip_filename}.zip OpenTTD.app
popd
# Now move it into place to be uploaded
mv _CPack_Packages/*/Bundle/openttd-*.zip bundles/
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-macos-universal
path: build-x64/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v3
with:
name: symbols-macos-universal
path: build-x64/symbols
retention-days: 5

207
.github/workflows/release-source.yml vendored Normal file
View File

@@ -0,0 +1,207 @@
name: Release (Source)
on:
workflow_call:
outputs:
version:
value: ${{ jobs.source.outputs.version }}
is_tag:
value: ${{ jobs.source.outputs.is_tag }}
trigger_type:
value: ${{ jobs.source.outputs.trigger_type }}
folder:
value: ${{ jobs.source.outputs.folder }}
survey_key:
value: ${{ jobs.source.outputs.survey_key }}
jobs:
source:
name: Source
runs-on: ubuntu-20.04
outputs:
version: ${{ steps.metadata.outputs.version }}
is_tag: ${{ steps.metadata.outputs.is_tag }}
trigger_type: ${{ steps.metadata.outputs.trigger_type }}
folder: ${{ steps.metadata.outputs.folder }}
survey_key: ${{ steps.survey_key.outputs.survey_key }}
steps:
- name: Checkout (Release)
if: github.event_name == 'release'
uses: actions/checkout@v3
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@v3
with:
ref: ${{ github.event.inputs.ref }}
# We generate a changelog; for this we need the full git log.
fetch-depth: 0
- name: Checkout (Trigger)
if: github.event_name == 'repository_dispatch'
uses: actions/checkout@v3
with:
ref: ${{ github.event.client_payload.ref }}
# We generate a changelog; for this we need the full git log.
fetch-depth: 0
- name: Check valid branch name
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
REF="${{ github.event.inputs.ref }}"
elif [ "${{ github.event_name }}" = "repository_dispatch" ]; then
REF="${{ github.event.client_payload.ref }}"
else
REF="${{ github.ref }}"
fi
# Check if we are a tag.
if [ -n "$(git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || false)" ]; then
exit 0
fi
# Check if the checkout caused the branch to be named.
if [ "$(git rev-parse --abbrev-ref HEAD)" != "HEAD" ]; then
exit 0
fi
# Check if this was a pull request.
if [ -n "$(echo ${REF} | grep '^refs/pull/[0-9]*')" ]; then
PULL=$(echo ${REF} | cut -d/ -f3)
git checkout -b pr${PULL}
fi
# Are we still in a detached state? Error out.
if [ "$(git rev-parse --abbrev-ref HEAD)" == "HEAD" ]; then
echo "The 'ref' given resulted in a checkout of a detached HEAD."
echo "We cannot detect the version for these checkout accurate."
echo ""
echo "If you want to build a Pull Request, make sure you use 'refs/pull/NNN/head'."
echo ""
echo "Cancelling build, as without a version we cannot store the artifacts."
exit 1
fi
- name: Generate metadata
id: metadata
run: |
echo "::group::Prepare metadata files"
cmake -DGENERATE_OTTDREV=1 -P cmake/scripts/FindVersion.cmake
./.github/changelog.sh > .changelog
TZ='UTC' date +"%Y-%m-%d %H:%M UTC" > .release_date
cat .ottdrev | cut -f 1 -d$'\t' > .version
if [ $(cat .ottdrev | cut -f 5 -d$'\t') = '1' ]; then
# Assume that all tags are always releases. Why else make a tag?
IS_TAG="true"
FOLDER="${{ env.FOLDER_RELEASES }}"
TRIGGER_TYPE="new-tag"
else
IS_TAG="false"
BRANCH=$(git symbolic-ref -q HEAD | sed 's@.*/@@')
if [ -z "${BRANCH}" ]; then
echo "Internal error: branch name is empty."
echo "An earlier step should have prevented this from happening."
echo "Cancelling build, as without a branch name we cannot store the artifacts"
exit 1
fi
if [ "${BRANCH}" = "${{ env.NIGHTLIES_BRANCH }}" ]; then
# The "master" branch is special, and we call a nightly.
FOLDER="${{ env.FOLDER_NIGHTLIES }}/$(date +%Y)"
TRIGGER_TYPE="new-master"
else
# All other branches, which can be builds of Pull Requests, are
# put in their own folder.
FOLDER="${{ env.FOLDER_BRANCHES }}/${BRANCH}"
TRIGGER_TYPE="new-branch"
fi
fi
mkdir -p build/bundles
cp .changelog build/bundles/changelog.txt
cp .release_date build/bundles/released.txt
cp README.md build/bundles/README.md
echo "::endgroup::"
echo "Release Date: $(cat .release_date)"
echo "Revision: $(cat .ottdrev)"
echo "Version: $(cat .version)"
echo "Is tag: ${IS_TAG}"
echo "Folder on CDN: ${FOLDER}"
echo "Workflow trigger: ${TRIGGER_TYPE}"
echo "version=$(cat .version)" >> $GITHUB_OUTPUT
echo "is_tag=${IS_TAG}" >> $GITHUB_OUTPUT
echo "folder=${FOLDER}" >> $GITHUB_OUTPUT
echo "trigger_type=${TRIGGER_TYPE}" >> $GITHUB_OUTPUT
env:
NIGHTLIES_BRANCH: master
FOLDER_RELEASES: openttd-releases
FOLDER_NIGHTLIES: openttd-nightlies
FOLDER_BRANCHES: openttd-branches
- name: Generate survey key
id: survey_key
run: |
if [ -z "${{ vars.SURVEY_TYPE }}" ]; then
echo "SURVEY_TYPE variable not found; most likely running in a fork. Skipping step."
SURVEY_KEY=""
else
PAYLOAD='{"version":"${{ steps.metadata.outputs.version }}","type":"${{ vars.SURVEY_TYPE }}"}'
echo "${{ secrets.SURVEY_SIGNING_KEY }}" > survey_signing_key.pem
SIGNATURE=$(echo -n "${PAYLOAD}" | openssl dgst -sha256 -sign survey_signing_key.pem | base64 -w0)
rm -f survey_signing_key.pem
SURVEY_KEY=$(curl -f -s -X POST -d "${PAYLOAD}" -H "Content-Type: application/json" -H "X-Signature: ${SIGNATURE}" https://survey-participate.openttd.org/create-survey-key/${{ vars.SURVEY_TYPE }})
fi
echo "survey_key=${SURVEY_KEY}" >> $GITHUB_OUTPUT
- name: Remove VCS information
run: |
rm -rf .git
- name: Create bundles
run: |
FOLDER_NAME=openttd-${{ steps.metadata.outputs.version }}
# Rename the folder to openttd-NNN
mkdir ${FOLDER_NAME}
find . -maxdepth 1 -not -name . -not -name build -not -name ${FOLDER_NAME} -exec mv {} ${FOLDER_NAME}/ \;
echo "::group::Create tarball (xz) bundle"
tar --xz -cvf build/bundles/${FOLDER_NAME}-source.tar.xz ${FOLDER_NAME}
echo "::endgroup::"
# This tarball is only to be used within this workflow.
echo "::group::Create tarball (gz) bundle"
tar --gzip -cvf source.tar.gz ${FOLDER_NAME}
echo "::endgroup::"
echo "::group::Create zip bundle"
zip -9 -r build/bundles/${FOLDER_NAME}-source.zip ${FOLDER_NAME}
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-source
path: build/bundles/*
retention-days: 5
- name: Store source (for other jobs)
uses: actions/upload-artifact@v3
with:
name: internal-source
path: source.tar.gz
retention-days: 1

View File

@@ -0,0 +1,192 @@
name: Release (Windows Store)
on:
workflow_call:
inputs:
version:
required: true
type: string
jobs:
windows-store:
name: Windows Store
runs-on: windows-latest
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
- name: Unpack source
shell: bash
run: |
tar -xf source.tar.gz --strip-components=1
- name: Download x86 build
uses: actions/download-artifact@v3
with:
name: openttd-windows-x86
- name: Download x64 build
uses: actions/download-artifact@v3
with:
name: openttd-windows-x64
- name: Download arm64 build
uses: actions/download-artifact@v3
with:
name: openttd-windows-arm64
- name: Unpack builds
shell: bash
run: |
mkdir builds
cd builds
function extract {
mkdir $1
# Extract the zip version of the release
unzip ../openttd-*-windows-$2.zip -d $1
# Remove the extraneous directory
mv $1/openttd-*-windows-$2/* $1/
rmdir $1/openttd-*-windows-$2
# Move the openttd.exe to the '{arch}-binaries' folder
mkdir $1-binaries
mv $1/openttd.exe $1-binaries/
}
extract x86 win32
extract x64 win64
extract arm64 arm64
# Use the "x86" folder as the source of the common binaries (lang files, etc) and remove the others
mv x86 common-binaries
rm -rf x64 arm64
- name: Install OpenGFX
shell: bash
run: |
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 "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip opengfx-all.zip
tar xf opengfx-*.tar
echo "::endgroup::"
rm -f opengfx-all.zip opengfx-*.tar
- name: Install OpenMSX
shell: bash
run: |
mkdir -p builds/common-binaries/baseset
cd builds/common-binaries/baseset
echo "::group::Download OpenMSX"
curl -L https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip -o openmsx-all.zip
echo "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip openmsx-all.zip
tar xf openmsx-*.tar
echo "::endgroup::"
rm -f openmsx-all.zip openmsx-*.tar
- name: Install OpenSFX
shell: bash
run: |
mkdir -p builds/common-binaries/baseset/opensfx
cd builds/common-binaries/baseset/opensfx
echo "::group::Download OpenSFX"
curl -L https://cdn.openttd.org/opensfx-releases/1.0.3/opensfx-1.0.3-all.zip -o opensfx-all.zip
echo "::endgroup::"
echo "::group::Unpack OpenSFX"
unzip opensfx-all.zip
tar xf opensfx-*.tar
echo "::endgroup::"
rm -f opensfx-all.zip opensfx-*.tar
- name: Generate signing certificate
shell: cmd
run: |
cd builds
REM We need to provide a signed .appx 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
shell: cmd
run: |
cd os\windows\winstore
call generate-assets.bat
- name: Prepare manifests
shell: cmd
run: |
cd builds
mkdir manifests
REM Set the version environment variable
call ..\os\windows\winstore\set-version.bat x86-binaries\openttd.exe
call ..\os\windows\winstore\prepare-manifests.bat manifests "CN=78024DA8-4BE4-4C77-B12E-547BBF7359D2" "57420OpenTTDDevelopers.OpenTTDofficial"
- name: Prepare binaries
shell: bash
run: |
cd builds
# Copy the Windows Store assets
mkdir common-binaries/Assets
cp -R ../os/windows/winstore/assets-common/* common-binaries/Assets/
mkdir Assets
cp -R ../os/windows/winstore/assets/* Assets/
cp manifests/*.xml .
- name: Build
shell: cmd
run: |
REM Add the Windows SDK tools to the PATH
echo|set /p="SET VS_INSTALLDIR=" > _vspath.bat
vswhere -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath >> _vspath.bat
call _vspath.bat
call "%VS_INSTALLDIR%\Common7\Tools\VsDevCmd.bat"
REM Set the version environment variable
call os\windows\winstore\set-version.bat builds\x86-binaries\openttd.exe
cd builds
mkdir output
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"
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
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-windows-store
path: builds/bundles
retention-days: 5

243
.github/workflows/release-windows.yml vendored Normal file
View File

@@ -0,0 +1,243 @@
name: Release (Windows)
on:
workflow_call:
inputs:
survey_key:
required: false
type: string
default: ""
is_tag:
required: true
type: string
jobs:
windows:
strategy:
fail-fast: false
matrix:
include:
- arch: x86
host: x86
- arch: x64
host: x64
- arch: arm64
host: x64_arm64
name: Windows (${{ matrix.arch }})
runs-on: windows-latest
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
- name: Unpack source
shell: bash
run: |
tar -xf source.tar.gz --strip-components=1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Enable Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
shell: bash
run: |
echo "::group::Install choco dependencies"
choco install pandoc
echo "::endgroup::"
echo "::group::Install breakpad dependencies"
cargo install dump_syms
echo "::endgroup::"
- name: Prepare cache key
id: key
shell: powershell
run: |
# Work around caching failure with GNU tar
New-Item -Type Junction -Path vcpkg -Target c:\vcpkg
Write-Output "image=$env:ImageOS-$env:ImageVersion" >> $env:GITHUB_OUTPUT
- name: Enable vcpkg cache
uses: actions/cache@v3
with:
path: vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-1 # Increase the number whenever dependencies are modified
restore-keys: |
${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
- name: Prepare vcpkg
shell: bash
run: |
vcpkg install --triplet=${{ matrix.arch }}-windows-static \
liblzma \
libpng \
lzo \
nlohmann-json \
zlib \
# EOF
# arm64-windows-static is not (yet) supported for breakpad.
if [ "${{ matrix.arch }}" != "arm64" ]; then
vcpkg install --triplet=${{ matrix.arch }}-windows-static \
breakpad \
# EOF
fi
- name: Install MSVC problem matcher
uses: ammaraskar/msvc-problem-matcher@master
- name: Configure developer command prompt for tools
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Build tools
shell: bash
run: |
mkdir build-host
cd build-host
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DOPTION_TOOLS_ONLY=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build . --target tools
echo "::endgroup::"
- name: Configure developer command prompt for ${{ matrix.arch }}
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.host }}
- name: Import code signing certificate
shell: powershell
# If this is run on a fork, there may not be a certificate set up - continue in this case
continue-on-error: true
run: |
$tempFile = [System.IO.Path]::GetTempFileName()
$bytes = [System.Convert]::FromBase64String($env:WINDOWS_CERTIFICATE_P12)
[IO.File]::WriteAllBytes($tempFile, $bytes)
$pwd = ConvertTo-SecureString $env:WINDOWS_CERTIFICATE_PASSWORD -AsPlainText -Force
Import-PfxCertificate -FilePath $tempFile -CertStoreLocation Cert:\CurrentUser\My -Password $pwd
Remove-Item $tempFile
env:
WINDOWS_CERTIFICATE_P12: ${{ secrets.WINDOWS_CERTIFICATE_P12 }}
WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
- name: Build (with installer)
if: inputs.is_tag == 'true'
shell: bash
run: |
mkdir build
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DOPTION_USE_NSIS=ON \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
-DWINDOWS_CERTIFICATE_COMMON_NAME="${WINDOWS_CERTIFICATE_COMMON_NAME}" \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build . --target openttd
echo "::endgroup::"
env:
WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }}
- name: Build (without installer)
if: inputs.is_tag != 'true'
shell: bash
run: |
mkdir build
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
-DWINDOWS_CERTIFICATE_COMMON_NAME="${WINDOWS_CERTIFICATE_COMMON_NAME}" \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build . --target openttd
echo "::endgroup::"
env:
WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }}
- name: Create breakpad symbols
shell: bash
run: |
cd build
dump_syms openttd.pdb --inlines --store symbols
- name: Create bundles
shell: bash
run: |
cd ${GITHUB_WORKSPACE}/build
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Move PDB and exe to symbols"
PDB_FOLDER=$(find symbols -mindepth 2 -type d)
cp openttd.pdb ${PDB_FOLDER}/
EXE_FOLDER=symbols/openttd.exe/$(grep "INFO CODE_ID" symbols/*/*/openttd.sym | cut -d\ -f3)
mkdir -p ${EXE_FOLDER}
cp openttd.exe ${EXE_FOLDER}/
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Sign installer
if: inputs.is_tag == 'true'
shell: bash
# If this is run on a fork, there may not be a certificate set up - continue in this case
continue-on-error: true
run: |
cd ${GITHUB_WORKSPACE}/build/bundles
../../os/windows/sign.bat *.exe "${WINDOWS_CERTIFICATE_COMMON_NAME}"
env:
WINDOWS_CERTIFICATE_COMMON_NAME: ${{ secrets.WINDOWS_CERTIFICATE_COMMON_NAME }}
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: openttd-windows-${{ matrix.arch }}
path: build/bundles
retention-days: 5
- name: Store symbols
uses: actions/upload-artifact@v3
with:
name: symbols-windows-${{ matrix.arch }}
path: build/symbols
retention-days: 5

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
name: Script missing mode enforcement
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
script-missing-mode-enforcement:
name: Script missing mode enforcement
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Check for finding script functions that require company/deity mode enforcement/checks
run: |
set -ex
python3 .github/script-missing-mode-enforcement.py

View File

@@ -3,6 +3,10 @@ name: Unused strings
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
unused-strings:
name: Unused strings
@@ -10,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Check for unused strings
run: |

137
.github/workflows/upload-cdn.yml vendored Normal file
View File

@@ -0,0 +1,137 @@
name: Upload (CDN)
on:
workflow_call:
inputs:
version:
required: true
type: string
folder:
required: true
type: string
trigger_type:
required: true
type: string
jobs:
prepare:
name: Prepare
runs-on: ubuntu-latest
steps:
- name: Download all bundles
uses: actions/download-artifact@v3
- name: Calculate checksums
run: |
echo "::group::Move bundles to a single folder"
mkdir bundles
mv openttd-*/* bundles/
echo "::endgroup::"
cd bundles
for i in $(ls openttd-*); do
echo "::group::Calculating checksums for ${i}"
openssl dgst -r -md5 -hex $i > $i.md5sum
openssl dgst -r -sha1 -hex $i > $i.sha1sum
openssl dgst -r -sha256 -hex $i > $i.sha256sum
echo "::endgroup::"
done
# Some targets generate files that are meant for our-eyes-only.
# They are stored in the "internal" folder, and contains bundles
# for targets like Windows Store. No user has a benefit of knowing
# they exist, hence: internal.
if [ -e internal ]; then
cd internal
for i in $(ls openttd-*); do
echo "::group::Calculating checksums for ${i}"
openssl dgst -r -md5 -hex $i > $i.md5sum
openssl dgst -r -sha1 -hex $i > $i.sha1sum
openssl dgst -r -sha256 -hex $i > $i.sha256sum
echo "::endgroup::"
done
fi
- name: Merge symbols
run: |
mkdir symbols
cp -R symbols-*/* symbols/
# Compress all files as gzip, to reduce cost of storage on the CDN.
for i in $(find symbols -mindepth 2 -type f); do
gzip ${i}
done
# Leave a mark in each folder what version actually created the symbol file.
for i in $(find symbols -mindepth 2 -type d); do
touch ${i}/.${{ inputs.version }}.txt
done
- name: Store bundles
uses: actions/upload-artifact@v3
with:
name: cdn-bundles
path: bundles/*
retention-days: 5
- name: Store breakpad symbols
uses: actions/upload-artifact@v3
with:
name: cdn-symbols
path: symbols/*
retention-days: 5
publish-bundles:
needs:
- prepare
name: Publish bundles
uses: OpenTTD/actions/.github/workflows/rw-cdn-upload.yml@v4
secrets:
CDN_SIGNING_KEY: ${{ secrets.CDN_SIGNING_KEY }}
DEPLOYMENT_APP_ID: ${{ secrets.DEPLOYMENT_APP_ID }}
DEPLOYMENT_APP_PRIVATE_KEY: ${{ secrets.DEPLOYMENT_APP_PRIVATE_KEY }}
with:
artifact-name: cdn-bundles
folder: ${{ inputs.folder }}
version: ${{ inputs.version }}
publish-symbols:
needs:
- prepare
name: Publish symbols
uses: OpenTTD/actions/.github/workflows/rw-symbols-upload.yml@v4
secrets:
SYMBOLS_SIGNING_KEY: ${{ secrets.SYMBOLS_SIGNING_KEY }}
with:
artifact-name: cdn-symbols
repository: OpenTTD
docs:
if: ${{ inputs.trigger_type == 'new-master' }}
needs:
- publish-bundles
name: Publish docs
runs-on: ubuntu-latest
steps:
- name: Generate access token
id: generate_token
uses: tibdex/github-app-token@v1
with:
app_id: ${{ secrets.DEPLOYMENT_APP_ID }}
private_key: ${{ secrets.DEPLOYMENT_APP_PRIVATE_KEY }}
repository: OpenTTD/workflows
- name: Trigger 'Publish Docs'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ steps.generate_token.outputs.token }}
repository: OpenTTD/workflows
event-type: publish-docs
client-payload: '{"version": "${{ inputs.version }}", "folder": "${{ inputs.folder }}"}'

151
.github/workflows/upload-gog.yml vendored Normal file
View File

@@ -0,0 +1,151 @@
name: Upload (GOG)
on:
workflow_call:
inputs:
version:
required: true
type: string
jobs:
upload:
name: Upload (GOG)
runs-on: ubuntu-20.04
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
path: internal-source
- name: Download bundle (Windows x86)
uses: actions/download-artifact@v3
with:
name: openttd-windows-x86
path: openttd-windows-x86
- name: Download bundle (Windows x64)
uses: actions/download-artifact@v3
with:
name: openttd-windows-x64
path: openttd-windows-x64
- name: Download bundle (MacOS)
uses: actions/download-artifact@v3
with:
name: openttd-macos-universal
path: openttd-macos-universal
- name: Download bundle (Linux)
uses: actions/download-artifact@v3
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
- name: Install OpenGFX
shell: bash
run: |
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 "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip opengfx-all.zip
echo "::endgroup::"
rm -f opengfx-all.zip
- name: Install OpenMSX
shell: bash
run: |
mkdir -p gog/openmsx/baseset
cd gog/openmsx/baseset
echo "::group::Download OpenMSX"
curl -L https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip -o openmsx-all.zip
echo "::endgroup::"
echo "::group::Unpack OpenGFX"
unzip openmsx-all.zip
tar xf openmsx-*.tar
echo "::endgroup::"
rm -f openmsx-all.zip openmsx-*.tar
- name: Install OpenSFX
shell: bash
run: |
mkdir -p gog/opensfx/baseset
cd gog/opensfx/baseset
echo "::group::Download OpenSFX"
curl -L https://cdn.openttd.org/opensfx-releases/1.0.3/opensfx-1.0.3-all.zip -o opensfx-all.zip
echo "::endgroup::"
echo "::group::Unpack OpenSFX"
unzip opensfx-all.zip
tar xf opensfx-*.tar
echo "::endgroup::"
rm -f opensfx-all.zip opensfx-*.tar
- name: Upload to GOG
run: |
echo "::group::Extracting source"
mkdir source
(
cd source
tar -xf ../internal-source/source.tar.gz --strip-components=1
)
echo "::endgroup::"
(
cd gog
echo "::group::Prepare Win32"
unzip ../openttd-windows-x86/openttd-*-windows-win32.zip
mv openttd-*-windows-win32 win32
echo "::endgroup::"
echo "::group::Prepare Win64"
unzip ../openttd-windows-x64/openttd-*-windows-win64.zip
mv openttd-*-windows-win64 win64
echo "::endgroup::"
echo "::group::Prepare macOS"
mkdir macos
(
cd macos
unzip ../../openttd-macos-universal/openttd-*-macos-universal.zip
)
echo "::endgroup::"
echo "::group::Prepare Linux"
tar xvf ../openttd-linux-generic/openttd-*-linux-generic-amd64.tar.xz
mv openttd-*-linux-generic-amd64 linux
echo "::endgroup::"
echo "::group::Preparing build files"
cp ../source/os/gog/*.json .
for json in $(ls *.json); do
sed -i 's/VERSION/${{ inputs.version }}/g;s/CLIENT_ID/${{ secrets.GOG_CLIENT_ID }}/g;s/CLIENT_SECRET/${{ secrets.GOG_CLIENT_SECRET }}/g' ${json}
done
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
echo "::endgroup::"
)

109
.github/workflows/upload-steam.yml vendored Normal file
View File

@@ -0,0 +1,109 @@
name: Upload (Steam)
on:
workflow_call:
inputs:
version:
required: true
type: string
trigger_type:
required: true
type: string
jobs:
upload:
name: Upload (Steam)
runs-on: ubuntu-20.04
steps:
- name: Download source
uses: actions/download-artifact@v3
with:
name: internal-source
path: internal-source
- name: Download bundle (Windows x86)
uses: actions/download-artifact@v3
with:
name: openttd-windows-x86
path: openttd-windows-x86
- name: Download bundle (Windows x64)
uses: actions/download-artifact@v3
with:
name: openttd-windows-x64
path: openttd-windows-x64
- name: Download bundle (MacOS)
uses: actions/download-artifact@v3
with:
name: openttd-macos-universal
path: openttd-macos-universal
- name: Download bundle (Linux)
uses: actions/download-artifact@v3
with:
name: openttd-linux-generic
path: openttd-linux-generic
- name: Setup steamcmd
uses: CyberAndrii/setup-steamcmd@v1
- name: Generate Steam auth code
id: steam-totp
uses: CyberAndrii/steam-totp@v1
with:
shared_secret: ${{ secrets.STEAM_SHARED_SECRET }}
- name: Upload to Steam
run: |
echo "::group::Extracting source"
mkdir source
(
cd source
tar -xf ../internal-source/source.tar.gz --strip-components=1
)
echo "::endgroup::"
mkdir steam
(
cd steam
echo "::group::Prepare Win32"
unzip ../openttd-windows-x86/openttd-*-windows-win32.zip
mv openttd-*-windows-win32 steam-win32
echo "::endgroup::"
echo "::group::Prepare Win64"
unzip ../openttd-windows-x64/openttd-*-windows-win64.zip
mv openttd-*-windows-win64 steam-win64
echo "::endgroup::"
echo "::group::Prepare macOS"
mkdir steam-macos
(
cd steam-macos
unzip ../../openttd-macos-universal/openttd-*-macos-universal.zip
)
echo "::endgroup::"
echo "::group::Prepare Linux"
tar xvf ../openttd-linux-generic/openttd-*-linux-generic-amd64.tar.xz
mv openttd-*-linux-generic-amd64 steam-linux
echo "::endgroup::"
echo "::group::Preparing build file"
if [ "${{ inputs.trigger_type }}" = "new-tag" ]; then
BRANCH="testing"
else
BRANCH="nightly"
fi
cat ../source/os/steam/release.vdf | sed 's/@@DESCRIPTION@@/openttd-${{ inputs.version }}/;s/@@BRANCH@@/'${BRANCH}'/' > release.vdf
cat release.vdf
echo "::endgroup::"
echo "::group::Upload to Steam"
steamcmd +login ${{ secrets.STEAM_USERNAME }} ${{ secrets.STEAM_PASSWORD }} ${{ steps.steam-totp.outputs.code }} +run_app_build $(pwd)/release.vdf +quit
echo "::endgroup::"
)

View File

@@ -0,0 +1,24 @@
name: WindowDesc ini_key
on:
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
windowdesc-ini-key:
name: WindowDesc ini_key issues
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Check for ini_key issues in WindowDesc entries
shell: bash
run: |
python3 .github/windowdesc-ini-key.py

View File

@@ -1,11 +1,12 @@
cmake_minimum_required(VERSION 3.9)
cmake_minimum_required(VERSION 3.16)
if(NOT BINARY_NAME)
set(BINARY_NAME openttd)
endif()
project(${BINARY_NAME}
VERSION 12.0
VERSION 14.0
LANGUAGES CXX
)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
@@ -22,7 +23,7 @@ if (EMSCRIPTEN)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.14)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)
# Use GNUInstallDirs to allow customisation
# but set our own default data and bin dir
@@ -118,12 +119,27 @@ endif()
set(CMAKE_THREAD_PREFER_PTHREAD YES)
# Make sure we have Threads available.
find_package(Threads REQUIRED)
# nlohmann is used for all our JSON needs.
find_package(nlohmann_json REQUIRED)
find_package(ZLIB)
find_package(LibLZMA)
find_package(LZO)
find_package(PNG)
if(WIN32 OR EMSCRIPTEN)
# Windows uses WinHttp for HTTP requests.
# Emscripten uses Javascript for HTTP requests.
else()
# All other targets use libcurl.
find_package(CURL)
endif()
# Breakpad doesn't support emscripten.
if(NOT EMSCRIPTEN)
find_package(unofficial-breakpad)
endif()
if(NOT OPTION_DEDICATED)
if(NOT WIN32)
find_package(Allegro)
@@ -134,12 +150,17 @@ if(NOT OPTION_DEDICATED)
find_package(SDL)
endif()
find_package(Fluidsynth)
find_package(Fontconfig)
find_package(ICU OPTIONAL_COMPONENTS i18n lx)
if(Freetype_FOUND)
find_package(Fontconfig)
endif()
find_package(Harfbuzz)
find_package(ICU OPTIONAL_COMPONENTS i18n)
endif()
endif()
endif()
if(APPLE)
enable_language(OBJCXX)
find_package(Iconv)
find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox)
@@ -170,6 +191,12 @@ if(UNIX AND NOT APPLE AND NOT OPTION_DEDICATED)
if(NOT SDL_FOUND AND NOT SDL2_FOUND AND NOT ALLEGRO_FOUND)
message(FATAL_ERROR "SDL, SDL2 or Allegro is required for this platform")
endif()
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)
message(WARNING "Without HarfBuzz and ICU i18n the game will not be able to render right-to-left languages correctly")
endif()
endif()
if(APPLE)
if(NOT AUDIOTOOLBOX_LIBRARY)
@@ -207,6 +234,7 @@ if(OPTION_PACKAGE_DEPENDENCIES)
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
endif()
include(CTest)
include(SourceList)
# Needed by rev.cpp
@@ -216,15 +244,31 @@ include_directories(${CMAKE_SOURCE_DIR}/src/3rdparty/squirrel/include)
include(MSVCFilters)
add_executable(openttd WIN32 ${GENERATED_SOURCE_FILES})
add_library(openttd_lib OBJECT ${GENERATED_SOURCE_FILES})
add_executable(openttd WIN32)
add_executable(openttd_test)
set_target_properties(openttd PROPERTIES OUTPUT_NAME "${BINARY_NAME}")
# All other files are added via target_sources()
if(MSVC)
# Add DPI manifest to project; other WIN32 targets get this via ottdres.rc
target_sources(openttd PRIVATE "${CMAKE_SOURCE_DIR}/os/windows/openttd.manifest")
# If target -static is used, switch our project to static (/MT) too.
# If the target ends on -static-md, it will remain dynamic (/MD).
if(VCPKG_TARGET_TRIPLET MATCHES "-static" AND NOT VCPKG_TARGET_TRIPLET MATCHES "-md")
set_property(TARGET openttd_lib PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
set_property(TARGET openttd PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
set_property(TARGET openttd_test PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
endif()
target_precompile_headers(openttd_lib
PRIVATE
src/stdafx.h
src/core/format.hpp
)
add_subdirectory(${CMAKE_SOURCE_DIR}/bin)
add_subdirectory(${CMAKE_SOURCE_DIR}/src)
add_subdirectory(${CMAKE_SOURCE_DIR}/media)
@@ -232,17 +276,25 @@ add_subdirectory(${CMAKE_SOURCE_DIR}/media)
add_dependencies(openttd
find_version)
target_link_libraries(openttd
target_link_libraries(openttd_lib
openttd::languages
openttd::settings
openttd::media
openttd::basesets
openttd::script_api
Threads::Threads
)
target_link_libraries(openttd
openttd_lib
openttd::media
openttd::basesets
)
target_link_libraries(openttd_test PRIVATE openttd_lib)
include(Catch)
catch_discover_tests(openttd_test)
if(HAIKU)
target_link_libraries(openttd "be" "network" "midi")
target_link_libraries(openttd_lib "be" "network" "midi")
endif()
if(IPO_FOUND)
@@ -258,6 +310,15 @@ link_package(PNG TARGET PNG::PNG ENCOURAGED)
link_package(ZLIB TARGET ZLIB::ZLIB ENCOURAGED)
link_package(LIBLZMA TARGET LibLZMA::LibLZMA ENCOURAGED)
link_package(LZO)
link_package(nlohmann_json)
if(NOT WIN32 AND NOT EMSCRIPTEN)
link_package(CURL ENCOURAGED)
endif()
if(NOT EMSCRIPTEN)
link_package(unofficial-breakpad TARGET unofficial::breakpad::libbreakpad_client ENCOURAGED)
endif()
if(NOT OPTION_DEDICATED)
link_package(Fluidsynth)
@@ -266,7 +327,7 @@ if(NOT OPTION_DEDICATED)
link_package(Allegro)
link_package(FREETYPE TARGET Freetype::Freetype)
link_package(Fontconfig TARGET Fontconfig::Fontconfig)
link_package(ICU_lx)
link_package(Harfbuzz TARGET harfbuzz::harfbuzz)
link_package(ICU_i18n)
if(SDL2_FOUND AND OPENGL_FOUND AND UNIX)
@@ -280,10 +341,12 @@ if(NOT OPTION_DEDICATED)
endif()
endif()
include(CheckAtomic)
if(APPLE)
link_package(Iconv TARGET Iconv::Iconv)
target_link_libraries(openttd
target_link_libraries(openttd_lib
${AUDIOTOOLBOX_LIBRARY}
${AUDIOUNIT_LIBRARY}
${COCOA_LIBRARY}
@@ -302,6 +365,7 @@ if(EMSCRIPTEN)
target_link_libraries(WASM::WASM INTERFACE "-s ALLOW_MEMORY_GROWTH=1")
target_link_libraries(WASM::WASM INTERFACE "-s INITIAL_MEMORY=33554432")
target_link_libraries(WASM::WASM INTERFACE "-s DISABLE_EXCEPTION_CATCHING=0")
target_link_libraries(WASM::WASM INTERFACE "-s WASM_BIGINT")
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
# Export functions to Javascript.
@@ -362,12 +426,13 @@ if(WIN32)
-DPSAPI_VERSION=1
)
target_link_libraries(openttd
target_link_libraries(openttd_lib
ws2_32
winmm
imm32
usp10
psapi
winhttp
)
endif()

488
CODINGSTYLE.md Normal file
View File

@@ -0,0 +1,488 @@
**Why a set coding style is important** <br>
This project is an open source project. To get open source working as intended, many people should be able to comprehend the code. This implies that there is a well documented and uniform flow of code.
That does not necessarily mean that a contributor should not write optimised yet cryptic code - one should always care about performance. However, other developers need to understand the code which means complicated parts of code **must** have good documentation.
**Why we require that EVERYTHING is documented**<br>
What is simple to some might appear very complicated to others. Documentation helps these others. Anyone should be able to improve the code. But the main reason is, that when patch contributors want their patches added to the common codebase, the code needs to be reviewed by one or more developers. Documentation makes reviewing much easier.
## Coding style for OpenTTD
### Functions
* Function names use [CamelCase](http://www.wikipedia.org/wiki/Camelcase) without underscores.
* Opening curly bracket **{** for a function starts on the next line.
* Use Foo() instead of Foo(void).
```c++
void ThisIsAFunction()
{
}
```
### Variables
* Variable names are all lowercase, and use "_" as separator.
* Global variables are preceded by an underscore. ("_") Use descriptive names because leading underscores are often used for system / compiler variables.
* Own members of classes should always be referenced using "this->"
* Pointers and references should have their reference symbol next to the name (compatibility with current code).
* Variables that are declared below one another should have their type, name or reference operator, and assignment operator aligned by spaces.
* There are set names for many variables. Those are (but not limited to): Vehicle *u, *v, *w; Station *st; Town *t; Window *w; Engine *e.
* For multiple instances, use numbers "*t1, *t2" or postfixes "*st_from, *st_to".
* Declare variables upon first usage.
* Declare iterators in their loop.
* There is a space between '*' and 'const' in "const pointers"
```c++
int number = 10;
Vehicle *u_first_wagon = v->next;
int value = v->value;
uint32 _global_variable = 3750;
static const char * const _global_array[] = {
"first string",
"second string",
"another string",
"last string followed by comma",
};
protected:
char protected_array[10];
for (int i = 0;;);
```
* Give the variables expedient names, this increases the readability of the code
```c++
bool is_maglev_train = true;
if (!is_maglev_train) DoSomething();
```
* Some people like to introduce copies of variables to increase readability, which can waste memory. However, in some cases, especially in code pieces which are often called, it makes sense to cache some calculated variables.
```c++
/* Unoptimized code:
* foo is not touched inside the loop!
*/
for (uint8 i = 0; i < 100000; i++) {
/* Do something */
if (value_to_check == (foo * 4) % 5 + 6) DoSomething();
/* Do something else */
}
/* Better:
* The used value of foo is calculated outside the loop.
*/
const uint32 bar = (foo * 4) % 5 + 6;
for (uint8 i = 0; i < 100000; i++) {
/* Do something */
if (value_to_check == bar) DoSomething();
/* Do something else */
}
```
### Enumerations / static consts
* Enumerations store integers that belong logically together (railtypes, string IDs, etc.).
* Enumeration names also use CamelCase.
* Unscoped enumerators are all caps with "_" between the words.
* Scoped enumerators are use CamelCase.
* Enums are not used to store single numbers.
* Enums have consecutive numbers OR
* Enums have consecutive powers of two. Powers of two (bits) are written in hex or with the shift operator.
* Enums may have special enumerators: "_BEGIN", "\_END", and "INVALID\_"). See example.
* The invalid always has 0xFF, 0xFFFF, 0xFFFFFFFF as a value.
* Other special values are consecutively less than the invalid.
* Variables that hold enumerators should have the type of the enumeration.
```c++
enum DiagDirection {
DIAGDIR_BEGIN = 0,
DIAGDIR_NE = 0,
DIAGDIR_SE = 1,
DIAGDIR_SW = 2,
DIAGDIR_NW = 3,
DIAGDIR_END,
INVALID_DIAGDIR = 0xFF,
BROKEN_DIAGDIR = 0xFE,
};
enum {
DEPOT_SERVICE = (1 << 0),
DEPOT_MASS_SEND = (1 << 1),
DEPOT_DONT_CANCEL = (1 << 2),
DEPOT_LOCATE_HANGAR = (1 << 3),
};
DiagDirection enterdir = DIAGDIR_NE;
```
* Numbers that store single or uncorrelated data are static consts. Those may use the naming conventions of enums.
Example:
```c++
static const int MAXIMUM_STATIONS = 42;
```
* Enums are useful in GUI code: When widgets are enumerated, they are easier to access during many operations. Additionally changes caused by modified widget sequences require less code adapting. If a widget is used like this, its enum name should be present in a comment behind the corresponding widget definition.
```c++
/** Enum referring to the widgets of the build rail depot window */
enum BuildRailDepotWidgets {
BRDW_CLOSEBOX = 0,
BRDW_CAPTION,
BRDW_BACKGROUND,
BRDW_DEPOT_NE,
BRDW_DEPOT_SE,
BRDW_DEPOT_SW,
BRDW_DEPOT_NW,
};
/* ... */
/** Widget definition of the build rail depot window */
static const Widget _build_depot_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_..}, // BRDW_CLOSEBOX
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_..., STR_...}, // BRDW_CAPTION
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_..}, // BRDW_DEPOT_NE
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_..}, // BRDW_DEPOT_SE
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_..}, // BRDW_DEPOT_SW
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_..}, // BRDW_DEPOT_NW
{ WIDGETS_END},
};
```
* Comments on the enum values should start with "///<" to enable doxygen documentation
```c++
enum SomeEnumeration {
SE_BEGIN = 0, ///< Begin of the enumeration, used for iterations
SE_FOO = 0, ///< Used for xy
SE_BAR, ///< Another value of the enumeration
SE_SUB, ///< Special case for z
SE_END, ///< End of the enumeration, used for iterations
};
```
### Control flow
* Put a space before the parentheses in **if**, **switch**, **for** and **while** statements.
* Use curly braces and put the contained statements on their own lines (e.g., don't put them directly after the **if**).
* Opening curly bracket **{** stays on the first line, closing curly bracket **}** gets a line to itself (except for the **}** preceding an **else**, which should be on the same line as the **else**).
* When only a single statement is contained, the brackets can be omitted. In this case, put the single statement on the same line as the preceding keyword (**if**, **while**, etc.). Note that this is only allowed for if statements without an **else** clause.
* All fall throughs must be documented, using a **FALLTHROUGH** define/macro.
* The NOT_REACHED() macro can be used in default constructs that should never be reached.
* Unconditional loops are written with **`for (;;) {`**
```c++
if (a == b) {
Foo();
} else {
Bar();
}
if (very_large_checks &&
spread_over_two_lines) {
Foo();
}
if (a == b) Foo();
switch (a) {
case 0: DoSomethingShort(); break;
case 1:
DoSomething();
FALLTHROUGH;
case 2:
DoMore();
b = a;
break;
case 3: {
int r = 2;
DoEvenMore(a);
FALLTHROUGH;
}
case 4: {
int q = 345;
DoIt();
break;
}
default:
NOT_REACHED();
}
for (int i = 0; i < 10; i++) {
Foo();
Bar();
}
```
### Classes
* Classes names also use CamelCase.
* Classes should have "public", "protected", and "private" sections.
* Within these section the order is: types, static const members, static members, members, constructors / destructors, static methods, methods.
* Deviations from above order are allowed when the code dictates it (e.g. a static const is needed for a typedef)
* Methods and members ought to be grouped logically.
* All those sorting rules sometimes conflict which one another. Please use common sense what increases legibility of the code in such a case.
* The method implementation should indicate if it is virtual or similar by using a comment.
* Very short methods can have one-line definition (if defined in the class scope).
```c++
class ThisIsAClass {
public:
typedef Titem_ *ItemPtr;
private:
static const int MAX_SIZE = 500;
int size;
ItemPtr *items;
public:
explicit ThisIsAClass();
~ThisIsAClass();
int GetSize() { return this->size; }
virtual void Method();
};
/*virtual*/ void Class::Method()
{
this->size *= 2;
}
```
### Templates
Templates are a very powerful C++ tool, but they can easily confuse beginners. Thus:
* Templates are to be documented in a very clear and verbose manner. Never assume anything in the documentation.
* the template keyword and the template layout get a separate line. typenames are either "T" or preceded by a "T", integers get a single capital letter or a descriptive name preceded by "T".
```c++
template <typename T, typename Tsomething, int N, byte Tnumber_of_something>
int Func();
```
* If you are writing one or more template class in the dedicated header file, use file.hpp for its name instead of file.h. This will let others know that it is template library (includes also implementation), not just header with declarations.
### Other important rules
* Put a space before and after binary operators: "a + b", "a == b", "a & b", "a <<= b", etc.. Exceptions are ".", "->" and "[]" (no spaces) and "," (just space after it).
* Put parenthesis where it improves readability: "*(b++)" instead of "*b++", and "if ((a & b) && c == 2)" instead of "if (a & b && c == 2)".
* Do not put external declarations in implementation (i.e. cpp) files.
* Use const where possible.
* Do not typedef enums and structs.
* Don't treat non-flags as flags: use "if (char_pointer != nullptr && *char_pointer != '\0')", not "if (char_pointer && *char_pointer)".
* Use "free(p)" instead of "if (p != nullptr) free(p)". "free(nullptr)" doesn't hurt anyone.
* No trailing whitespace. The Github workflows will not allow tabs or space on the end of lines.
* Only use tabs to indent from the start of the line.
* Line length is unlimited. In practice it may be useful to split a long line. When splitting, add two tabs in front of the second part.
* The '#' of preprocessor instructions goes into the first column of a line. Indenting is done after the '#' (using tabs again).
* Use /* */ for single line comments.
* Use // at the end of a command line to indicate comments.
** However, use /* */ after # preprocessor statements as // causes warnings in some compilers and/or might have unwanted side effects.
* C++ is defined using the ASCII character set. Do not use other character sets, not even in comments.
* OpenTTD includes some Objective-C sources (*.mm, used by OSX), which has a special object method invocation syntax: "[ obj doStuff:foo ]". Please use spaces on the inside of the brackets to differentiate from the C array syntax.
## Documentation
We use [Doxygen](http://doxygen.org/) to automatically generate documentation from the source code. It scans the source files for *recognizable* comments.
* **Make your comments recognizable.**
Doxygen only comments starting with the following style:
```c++
/**
///<
```
Use /** for multi-line comment blocks. Use ///< for single line comments for variables. Use //!< for single-line comments in the NoAI .hpp files.
For comments blocks inside a function always use /* */ or //. Use // only if the comment is on the same line as an instruction, otherwise use /* */.
### Files
* Put a @file command in a JavaDoc style comment at the start of the file, followed by a description.
```c++
/**
* @file
* This is the brief description.
* This is the detailed description here and on the following lines.
*/
```
> ### Warning
> If a file lacks a **file comment block** then NO entities in that file will be documented by Doxygen!
### Functions
* The documentation should be as close to the actual code as possible to maximise the chance of staying in sync.
* Comments for functions go in the .cpp file.
* Comments for inlines go in the .h/.hpp file.
* Small inlines can have a short 3 or 4 line JavaDoc style comment.
* Completely document larger functions.
* Document obvious parameters and return values too!
```c++
/**
* A brief explanation of what the function does and/or what purpose it serves.
* Then follows a more detailed explanation of the function that can span multiple lines.
*
* @param foo Explanation of the foo parameter
* @param bar Explanation of the bar parameter
* @return The sum of foo and bar (@return can be omitted if the return type is void)
*
* @see SomeOtherFunc()
* @see SOME_ENUM
*
* @bug Some bug description
* @bug Another bug description which continues in the next line
* and ends with the following blank line
*
* @todo Some to-do entry
*/
static int FooBar(int foo, int bar)
{
return foo + bar;
}
```
### Classes
* Document structs similarly to functions:
```c++
/**
* A short description of the struct.
* More detailed description of the its usage.
*
* @see [link to anything of interest]
*/
struct foo {
}
```
### JavaDoc structural commands
This table shows the commands you should use with OpenTTD. The full list is [here](http://www.stack.nl/~dimitri/doxygen/commands.html).
| Command | Action | Example |
| ------- | -------- | ------- |
| **@attention** | Starts a paragraph where a message that needs attention may be entered. The paragraph will be indented. | @attention Whales crossing! |
| **@brief** | Starts a paragraph that serves as a brief description. For classes and files the brief description will be used in lists and at the start of the documentation page. For class and file members, the brief description will be placed at the declaration of the member and prepended to the detailed description. A brief description may span several lines (although it is advised to keep it brief!). | @brief This is the brief description. |
| **@bug** | Starts a paragraph where one or more bugs may be reported. The paragraph will be indented. Multiple adjacent @bug commands will be joined into a single paragraph. Each bug description will start on a new line. Alternatively, one @bug command may mention several bugs. | @bug Memory leak in here? |
| **@note** | Starts a paragraph where a note can be entered. The paragraph will be indented. | @note Might be slow |
| **@todo** | Starts a paragraph where a TODO item is described. The description will also add an item to a separate TODO list. The two instances of the description will be cross-referenced. Each item in the TODO list will be preceded by a header that indicates the origin of the item. | @todo Better error checking |
| **@warning** | Starts a paragraph where one or more warning messages may be entered. The paragraph will be indented. | @warning Not thread safe! |
| | <small>**Function related commands**</small> | |
| **@return** | Starts a return value description for a function. | @return a character pointer |
| **@param** | Starts a parameter description for a function parameter with name <parameter-name>. Followed by a description of the parameter. The existence of the parameter is checked and a warning is given if the documentation of this (or any other) parameter is missing or not present in the function declaration or definition.<br><br>The @param command has an optional attribute specifying the direction of the attribute. Possible values are "in" and "out". | @param n The number of bytes to copy<br>@param[out] dest The memory area to copy to.<br>@param[in] src The memory area to copy from. |
| **@see** | Starts a paragraph where one or more cross-references to classes, functions, methods, variables, files or URL may be specified. Two names joined by either :: or # are understood as referring to a class and one of its members. One of several overloaded methods or constructors may be selected by including a parenthesized list of argument types after the method name. [Here](http://www.stack.nl/~dimitri/doxygen/autolink.html) you can find detailed information about this feature. | @see OtherFunc() |
| **@b** | Displays the following word using a bold font. Equivalent to &lt;b&gt;word&lt;/b&gt;. To put multiple words in bold use &lt;b&gt;multiple words&lt;/b&gt;.| ...@b this and @b that... |
| **@c / @p** | Displays the parameter <word> using a typewriter font. You can use this command to refer to member function parameters in the running text. To have multiple words in typewriter font use &lt;tt&gt;multiple words&lt;/tt&gt;. | ... the @p x and @p y coordinates are used to... |
| **@arg / @li** | This command has one argument that continues until the first blank line or until another @arg / @li is encountered. The command can be used to generate a simple, not nested list of arguments. Each argument should start with an @arg / @li command. | @arg @c AlignLeft left alignment.<br>@arg @c AlignCenter center alignment.<br>@arg @c AlignRight right alignment |
| **@n** | Forces a new line. Equivalent to and inspired by the printf function. |@n |
### More on Doxygen and JavaDoc
Doxygen knows two different kinds of comments:
* *Brief descriptions*: one-liners that describe the function roughly ([example](http://docs.openttd.org/annotated.html))
* *Detailed descriptions*: as the name suggests, these contain the detailed function/purpose of the entity they describe ([example](http://docs.openttd.org/structBridge.html))
You can omit either one or put them into different places but there's only one brief and one detailed description allowed for the same entity.
Doxygen knows three modes for documenting an entity:
* Before the entity
* After the entity
* In a different file
The latter is a little harder to maintain since the prototype of the entity it describes then is stored in several places (e.g. the .h file and the file with the descriptions). Also while it makes the code easier to read it also makes it easier to omit the important step of updating the description of an entity if it was changed - and we all know why that shouldn't happen ;)<br>
Because of those reasons, we will only use the first two documentation schemes.
Doxygen supports both Qt and JavaDoc comment styles:
* Qt style example: **int i; //!< The counter for the main loop**
* JavaDoc style example: **int i; /*\*< The counter for the main loop \*/**
It also supports more comment styles but those two are the ones which are standardized. For OTTD we'll be using the JavaDoc style. One of the reasons is that it has a feature that the Qt style doesn't offer: JavaDoc style comment blocks will automatically start a brief description which ends at the first dot followed by a space or new line. Everything after that will also be part of the detailed description.
The general structure of a JavaDoc style comment is
```c++
/**
* This is the brief description. And this sentence contains some further explanations that will appear in the detailed description only.
*/
```
and the resulting descriptions of that block would be:
* *Brief description*: This is the brief description.
* *Detailed description*: This is the brief description. And this sentence contains some further explanations that will appear in the detailed description only.
The distinction between the brief and detailed descriptions is made by the dot followed by a space/newline, so if you want to use that inside the brief description you need to escape the space/newline:
```c++
/**
* This is a brief description (e.g.\ using only a few words). Details go here.
*/
```
If you're doing a one-line comment, use:
```c++
int i; ///< This is the description.
```
Also in the comment block you can include so-called structural commands which tell Doxygen what follows. In general, their area of effect begins after the command word and ends when a blank line or some other command is encountered. Also, multiple occurrences of the same structural command within a comment block or the referring entity will be joined in the documentation output usually.
## Commit message
To achieve a coherent whole and to make changelog writing easier, here are some guidelines for commit messages.
There is a check-script on the git server (also available for clients, see below) to make sure we all follow those rules.
The first line of a message must match:
```
<keyword>( #<issue>| <commit>(, (<keyword> #<issue>|<commit>))*)?: ([<section])? <Details>
```
Keywords are:
* Add, Feature: Adding new stuff. Difference between "Feature" and "Add" is somewhat subjective. "Feature" for user-point-of-view stuff, "Add" for other.
* Change: Changing behaviour from user-point-of-view.
* Remove: Removing something from user-point-of-view.
* Codechange, Cleanup: Changes without intentional change of behaviour from user-point-of-view. Difference between "Codechange" and "Cleanup" is somewhat subjective.
* Fix, Revert: Fixing stuff.
* Doc, Update: Documentation changes, version increments, translator commits.
* Prepare: Preparation for bigger changes. Rarely used.
If you commit a fix for an [issue](https://github.com/OpenTTD/OpenTTD/issues), add the corresponding issue number in the form of #NNNN. Do it as well if you implement a feature with a matching entry.
In the case of bugfixes, if you know what revision the bug was introduced (eg regression), please mention that revision as well just after the prefix. Finding the trouble-causing revision is highly encouraged as it makes backporting/branching/releases that much easier.
To further structure the changelog, you can add sections. Example are:
* "Network" for network specific changes
* "NewGRF" for NewGRF additions
* "YAPP", "NPF", for changes in these features
* "OSX", "Debian", "win32", for OS-specific packaging changes
Further explanations, general bitching, etc. don't go into the first line. Use a new line for those.
Complete examples:
* Fix: [YAPF] Infinite loop in pathfinder.
* Fix #5926: [YAPF] Infinite loop in pathfinder.
* Fix 80dffae130: Warning about unsigned unary minus.
* Fix #6673, 99bb3a95b4: Store the map variety setting in the samegame.
* Revert d9065fbfbe, Fix #5922: ClientSizeChanged is only called via WndProcGdi which already has the mutex.
* Fix #1264, Fix #2037, Fix #2038, Fix #2110: Rewrite the autoreplace kernel.
## Other tips
### Remove trailing whitespace
To find out if/where you have trailing whitespace, you can use the following (unix/bash) command:
```
grep -n -R --include "*.[ch]" '[ ]$' * | grep --invert-match ".diff" | grep --invert-match ".patch"
```
Automatically removing whitespace is also possible with the following shell script (Note that it only checks .c, .cpp, .h, .hpp and .mm files):
```
#!/bin/sh
IFS='
'
for i in Makefile `find . -name \*.c -o -name \*.cpp -o -name \*.h -o -name \*.hpp -o -name \*.mm`
do
(
echo '%s/[ ]\{1,\}$/'
echo w
echo q
) | ed $i 2> /dev/null > /dev/null
done
```
### Install the client-side git commit hooks
The client-side hooks perform various checks when you commit changes locally.
* Whitespace and indentation checks.
* **Coding style** checks.
Get the hooks:
```
git clone https://github.com/OpenTTD/OpenTTD-git-hooks.git openttd_hooks
```
Install the hooks, assuming "openttd" is your work tree folder:
```
cd openttd/.git/hooks
ln -s -t . ../../../openttd_hooks/hooks/*
```

View File

@@ -4,20 +4,26 @@
OpenTTD makes use of the following external libraries:
- (required) nlohmann-json: JSON handling
- (encouraged) breakpad: creates minidumps on crash
- (encouraged) zlib: (de)compressing of old (0.3.0-1.0.5) savegames, content downloads,
heightmaps
- (encouraged) liblzma: (de)compressing of savegames (1.1.0 and later)
- (encouraged) libpng: making screenshots and loading heightmaps
- (optional) liblzo2: (de)compressing of old (pre 0.3.0) savegames
For Linux, the following additional libraries are used (for non-dedicated only):
For Linux, the following additional libraries are used:
- (encouraged) libcurl: content downloads
- libSDL2: hardware access (video, sound, mouse)
- libfreetype: loading generic fonts and rendering them
- libfontconfig: searching for fonts, resolving font names to actual fonts
- harfbuzz: handling of right-to-left scripts (e.g. Arabic and Persian) (required libicu)
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian) and
natural sorting of strings
If you are building a dedicated-server only, you don't need the last four.
OpenTTD does not require any of the libraries to be present, but without
liblzma you cannot open most recent savegames and without zlib you cannot
open most older savegames or use the content downloading system.
@@ -45,16 +51,18 @@ by following the `Quick Start` instructions of their
After this, you can install the dependencies OpenTTD needs. We advise to use
the `static` versions, and OpenTTD currently needs the following dependencies:
- breakpad
- liblzma
- libpng
- lzo
- nlohmann-json
- zlib
To install both the x64 (64bit) and x86 (32bit) variants (though only one is necessary), you can use:
```ps
.\vcpkg install liblzma:x64-windows-static libpng:x64-windows-static lzo:x64-windows-static zlib:x64-windows-static
.\vcpkg install liblzma:x86-windows-static libpng:x86-windows-static lzo:x86-windows-static zlib:x86-windows-static
.\vcpkg install breakpad:x64-windows-static liblzma:x64-windows-static libpng:x64-windows-static lzo:x64-windows-static nlohmann-json:x64-windows-static zlib:x64-windows-static
.\vcpkg install breakpad:x86-windows-static liblzma:x86-windows-static libpng:x86-windows-static lzo:x86-windows-static nlohmann-json:x86-windows-static zlib:x86-windows-static
```
You can open the folder (as a CMake project). CMake will be detected, and you can compile from there.
@@ -69,7 +77,7 @@ that comes with vcpkg. After that, you can run something similar to this:
```powershell
mkdir build
cd build
cmake.exe .. -G'Visual Studio 16 2019' -DCMAKE_TOOLCHAIN_FILE="<location of vcpkg>\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-static"
cmake.exe .. -G"Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE="<location of vcpkg>\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-static"
```
Change `<location of vcpkg>` to where you have installed vcpkg. After this
@@ -97,7 +105,7 @@ Via CMake, several options can be influenced to get different types of
builds.
- `-DCMAKE_BUILD_TYPE=RelWithDebInfo`: build a release build. This is
significant faster than a debug build, but has far less useful information
significantly faster than a debug build, but has far less useful information
in case of a crash.
- `-DOPTION_DEDICATED=ON`: build OpenTTD without a GUI. Useful if you are
running a headless server, as it requires less libraries to operate.

View File

@@ -14,7 +14,7 @@ In return, they should reciprocate that respect in addressing your issue or asse
The [issue tracker](https://github.com/OpenTTD/OpenTTD/issues) is the preferred channel for [bug reports](#bug-reports), but please respect the following restrictions:
* Please **do not** use the issue tracker for help playing or using OpenTTD.
Please try [irc](https://wiki.openttd.org/en/Development/IRC%20channel), or the [forums](https://www.tt-forums.net/)
Please try [irc](https://wiki.openttd.org/en/Development/IRC%20channel), [Discord](https://discord.gg/openttd), or the [forums](https://www.tt-forums.net/)
* Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others.
@@ -23,7 +23,7 @@ Use [GitHub's "reactions" feature](https://github.com/blog/2119-add-reactions-to
We reserve the right to delete comments which violate this rule.
* Please **do not** open issues or pull requests regarding add-on content in NewGRF, GameScripts, AIs, etc.
These are created by third-parties. Please try [irc](https://wiki.openttd.org/en/Development/IRC%20channel) or the [forums](https://www.tt-forums.net/) to discuss these.
These are created by third-parties. Please try [irc](https://wiki.openttd.org/en/Development/IRC%20channel), [Discord](https://discord.gg/openttd), or the [forums](https://www.tt-forums.net/) to discuss these.
* Please use [the web translator](https://translator.openttd.org/) to submit corrections and improvements to translations of the game.
@@ -94,8 +94,8 @@ Although we really appreciate feedback and ideas, we will close feature requests
Many of those ideas etc do have a place on the [forums](https://www.tt-forums.net); and if enough people like it, someone will stand up and make it.
It's usually best discuss in [irc](https://wiki.openttd.org/en/Development/IRC%20channel) before opening a feature request or working on a large feature in a fork.
Discussion in irc can take time, but it can be productive and avoid disappointment :)
It's usually best to discuss on [Discord](https://discord.gg/openttd) before opening a feature request or working on a large feature in a fork.
Discussion can take time, but it can be productive and avoid disappointment. :)
## Pull requests
@@ -108,7 +108,7 @@ Pull requests should fit with the [goals of the project](./CONTRIBUTING.md#proje
Every pull request should have a clear scope, with no unrelated commits.
[Code style](https://wiki.openttd.org/en/Development/Coding%20style) must be complied with for pull requests to be accepted; this also includes [commit message format](https://wiki.openttd.org/en/Development/Coding%20style#commit-message).
[Code style](./CODINGSTYLE.md) must be complied with for pull requests to be accepted; this also includes [commit message format](./CODINGSTYLE.md#commit-message).
Adhering to the following process is the best way to get your work included in the project:
@@ -136,8 +136,8 @@ contain your feature, change, or fix:
git checkout upstream/master -b <topic-branch-name>
```
4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](https://wiki.openttd.org/en/Development/Coding%20style#commit-message) or your code is unlikely to be merged into the main project.
Use Git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public.
4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](./CODINGSTYLE.md#commit-message) or your code is unlikely to be merged into the main project.
Use Git's [interactive rebase](https://docs.github.com/en/get-started/using-git/about-git-rebase) feature to tidy up your commits before making them public.
5. Locally rebase the upstream development branch into your topic branch:
@@ -172,7 +172,7 @@ The results of the CI tests will show on your pull request.
By clicking on Details you can further zoom in; in case of a failure it will show you why it failed.
In case of success it will report how awesome you were.
Tip: [commit message format](https://wiki.openttd.org/en/Development/Coding%20style#commit-message) is a common reason for pull requests to fail validation.
Tip: [commit message format](./CODINGSTYLE.md#commit-message) is a common reason for pull requests to fail validation.
### Are there any development docs?
@@ -212,8 +212,8 @@ When it comes to gameplay features there are at least these groups of interests:
- *Control freak:* micromanagement like conditional orders, refitting and loading etc.
- *Casual:* automatisation like cargodist, path based signalling etc.
To please everyone, the official branch tries to stay close to the original gameplay; after all, that is what everyone brought here.
The preferred method to alter and extent the gameplay is via add-ons like NewGRF and GameScripts.
To please everyone, the official branch tries to stay close to the original gameplay; after all, that is what brought everyone here.
The preferred method to alter and extend the gameplay is via add-ons like NewGRF and GameScripts.
For a long time, the official branch was also open to features which could be enabled/disabled, but the corner-cases that came with some configurations have rendered some parts of the code very complicated.
Today, new features have to work with all the already existing features, which is not only challenging in corner cases, but also requires spending considerable more work than just "making it work in the game mode that I play".
@@ -265,5 +265,5 @@ If you would not like to accept this risk, please do either commit anonymously o
### Attribution of this Contributing Guide
This contributing guide is adapted from [Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) under the [Creative Commons Attribution 3.0 Unported License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE) terms for Bootstrap documentation.
This contributing guide is adapted from [Bootstrap](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md) under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/) terms for Bootstrap documentation.
The GDPR notice is adapted from [rsyslog](https://github.com/rsyslog/rsyslog/blob/master/CONTRIBUTING.md) under the [GNU General Public License](https://github.com/rsyslog/rsyslog/blob/master/COPYING).

View File

@@ -1,31 +1,32 @@
### The OpenTTD team (in alphabetical order):
- Grzegorz Duczyński (adf88) - General coding (since 1.7.2)
- Albert Hofkamp (Alberth) - GUI expert (since 0.7)
- Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
- Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
- Christoph Elsenhans (frosch) - General coding (since 0.6)
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
- Loïc Guilloux (glx) - General / Windows Expert (since 0.4.5)
- Charles Pigott (LordAro) - General / Correctness police (since 1.9)
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
- Michael Lutz (michi_cc) - General / Path based signals (since 0.7)
- Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
- Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
- José Soler (Terkhen) - General coding (since 1.0)
- Remko Bijker (Rubidium) - Coder and way more (since 0.4.5)
- Patric Stout (TrueBrain) - NoProgrammer (since 0.3), sys op
- Tyler Trahan (2TallTyler) - General coding (since 13)
### Inactive Developers:
- Grzegorz Duczyński (adf88) - General coding (1.7 - 1.8)
- Albert Hofkamp (Alberth) - GUI expert (0.7 - 1.9)
- Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
- Bjarni Corfitzen (Bjarni) - macOS port, coder and vehicles (0.3 - 0.7)
- Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
- Ulf Hermann (fonsinchen) - Cargo Distribution (1.3 - 1.6)
- Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
- Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
- Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
- Attila Bán (MiHaMiX) - Developer WebTranslator 1 and 2 (0.3 - 0.5)
- Ingo von Borstel (planetmaker) - General coding, Support (1.1 - 1.9)
- Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
- José Soler (Terkhen) - General coding (1.0 - 1.4)
- Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
- Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
- Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
- Leif Linse (Zuu) - AI/Game Script (1.2 - 1.6)
@@ -33,11 +34,11 @@
- Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
- Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
- Emil Djupfeld (egladil) - macOS port (0.4 - 0.6)
- Emil Djupfeld (egladil) - macOS port (0.4.5 - 0.6)
- Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
- Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
- Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
- Petr Baudiš (pasky) - Many patches, newgrf support (0.3 - 0.3)
- Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
- Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
@@ -52,7 +53,7 @@
- Alberto Demichelis - Squirrel scripting language
- L. Peter Deutsch - MD5 implementation
- Michael Blunck - For revolutionizing TTD with awesome graphics
- George - Canal graphics
- George - Canal/Lock graphics
- Andrew Parkhouse (andythenorth) - River graphics
- David Dallaston (Pikka) - Tram tracks
- All Translators - For their support to make OpenTTD a truly international game

View File

@@ -41,7 +41,6 @@ INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 2
ALIASES =
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
@@ -155,7 +154,6 @@ VERBATIM_HEADERS = YES
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -224,7 +222,7 @@ LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
PAPER_TYPE = a4
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_FOOTER =
@@ -294,8 +292,8 @@ PREDEFINED = WITH_ZLIB \
WITH_PNG \
WITH_FONTCONFIG \
WITH_FREETYPE \
WITH_HARFBUZZ \
WITH_ICU_I18N \
WITH_ICU_LX \
UNICODE \
_UNICODE \
_GNU_SOURCE \

View File

@@ -77,9 +77,9 @@ For some platforms, you will need to refer to [the installation guide](https://w
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
OpenMSX for music can be found at:
- https://www.openttd.org/downloads/opengfx-releases/ for OpenGFX
- https://www.openttd.org/downloads/opensfx-releases/ for OpenSFX
- https://www.openttd.org/downloads/openmsx-releases/ for OpenMSX
- https://www.openttd.org/downloads/opengfx-releases/latest for OpenGFX
- https://www.openttd.org/downloads/opensfx-releases/latest for OpenSFX
- https://www.openttd.org/downloads/openmsx-releases/latest for OpenMSX
Please follow the readme of these packages about the installation procedure.
The Windows installer can optionally download and install these packages.
@@ -116,35 +116,6 @@ Most types of add-on content can be downloaded within OpenTTD via the 'Check Onl
Add-on content can also be installed manually, but that's more complicated; the [OpenTTD wiki](https://wiki.openttd.org/) may offer help with that, or the [OpenTTD directory structure guide](./docs/directory_structure.md).
### 1.5.1) AI opponents
OpenTTD comes without AI opponents, so if you want to play with AIs you have to download them.
The easiest way is via the 'Check Online Content' button in the main menu.
You can select some AIs that you think are compatible with your playing style.
AI help and discussions may also be found in the [AI section of the forum](https://www.tt-forums.net/viewforum.php?f=65).
### 1.5.2) Scenarios and height maps
Scenarios and heightmaps can be added via the 'Check Online Content' button in the main menu.
### 1.5.3) NewGRFs
A wide range of add-content is available as NewGRFs, including vehicles, industries, stations, landscape objects, town names and more.
NewGRFs can be added via the 'Check Online Content' button in the main menu.
See also the wiki [guide to NewGRFs](https://wiki.openttd.org/en/Manual/NewGRF) and [the forum graphics development section](https://www.tt-forums.net/viewforum.php?f=66).
### 1.5.4) Game scripts
Game scripts can provide additional challenges or changes to the standard OpenTTD gameplay, for example setting transport goals, or changing town growth behaviour.
Game scripts can be added via the 'Check Online Content' button in the main menu.
See also the wiki [guide to game scripts](https://wiki.openttd.org/en/Manual/Game%20script) and [the forum graphics game script section](https://www.tt-forums.net/viewforum.php?f=65).
### 1.6) OpenTTD directories
@@ -162,8 +133,9 @@ If you want to compile OpenTTD from source, instructions can be found in [COMPIL
'Official' channels
- [OpenTTD website](https://www.openttd.org)
- [OpenTTD official Discord](https://discord.gg/openttd)
- IRC chat using #openttd on irc.oftc.net [more info about our irc channel](https://wiki.openttd.org/en/Development/IRC%20channel)
- [OpenTTD on Github](https://github.com/openTTD/) for code repositories and for reporting issues
- [OpenTTD on Github](https://github.com/OpenTTD/) for code repositories and for reporting issues
- [forum.openttd.org](https://forum.openttd.org/) - the primary community forum site for discussing OpenTTD and related games
- [OpenTTD wiki](https://wiki.openttd.org/) community-maintained wiki, including topics like gameplay guide, detailed explanation of some game mechanics, how to use add-on content (mods) and much more
@@ -202,12 +174,14 @@ See `src/3rdparty/squirrel/COPYRIGHT` for the complete license text.
The md5 implementation in `src/3rdparty/md5` is licensed under the Zlib license.
See the comments in the source files in `src/3rdparty/md5` for the complete license text.
The implementations of Posix `getaddrinfo` and `getnameinfo` for OS/2 in `src/3rdparty/os2` are distributed partly under the GNU Lesser General Public License 2.1, and partly under the (3-clause) BSD license.
The exact licensing terms can be found in `src/3rdparty/os2/getaddrinfo.c` resp. `src/3rdparty/os2/getnameinfo.c`.
The fmt implementation in `src/3rdparty/fmt` is licensed under the MIT license.
See `src/3rdparty/fmt/LICENSE.rst` for the complete license text.
The catch2 implementation in `src/3rdparty/catch2` is licensed under the Boost Software License, Version 1.0.
See `src/3rdparty/catch2/LICENSE.txt` for the complete license text.
The icu scriptrun implementation in `src/3rdparty/icu` is licensed under the Unicode license.
See `src/3rdparty/icu/LICENSE` for the complete license text.
## 4.0 Credits

View File

@@ -13,6 +13,8 @@ set(AI_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.10.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.11.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_12.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_13.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_14.nut
)
foreach(AI_COMPAT_SOURCE_FILE IN LISTS AI_COMPAT_SOURCE_FILES)

View File

@@ -379,3 +379,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -131,3 +131,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -68,3 +68,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -6,3 +6,16 @@
*/
AILog.Info("1.10 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -6,3 +6,16 @@
*/
AILog.Info("1.11 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -6,3 +6,16 @@
*/
AILog.Info("1.9 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -4,3 +4,18 @@
* 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/>.
*/
AILog.Info("12 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
AIRoad._HasRoadType <- AIRoad.HasRoadType;
AIRoad.HasRoadType <- function(tile, road_type)
{
local list = AIRoadTypeList(AIRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (AIRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

8
bin/ai/compat_13.nut Normal file
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 <http://www.gnu.org/licenses/>.
*/
AILog.Info("13 API compatibility in effect.");

6
bin/ai/compat_14.nut Normal file
View File

@@ -0,0 +1,6 @@
/*
* 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/>.
*/

View File

@@ -10,6 +10,8 @@ set(GS_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.10.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.11.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_12.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_13.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_14.nut
)
foreach(GS_COMPAT_SOURCE_FILE IN LISTS GS_COMPAT_SOURCE_FILES)

View File

@@ -13,3 +13,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -6,3 +6,16 @@
*/
GSLog.Info("1.11 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -35,3 +35,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -35,3 +35,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -28,3 +28,15 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -20,3 +20,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -13,3 +13,16 @@ GSCompany.ChangeBankBalance <- function(company, delta, expenses_type)
{
return GSCompany._ChangeBankBalance(company, delta, expenses_type, GSMap.TILE_INVALID);
}
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

View File

@@ -4,3 +4,18 @@
* 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/>.
*/
GSLog.Info("12 API compatibility in effect.");
/* 13 really checks RoadType against RoadType */
GSRoad._HasRoadType <- GSRoad.HasRoadType;
GSRoad.HasRoadType <- function(tile, road_type)
{
local list = GSRoadTypeList(GSRoad.GetRoadTramType(road_type));
foreach (rt, _ in list) {
if (GSRoad._HasRoadType(tile, rt)) {
return true;
}
}
return false;
}

8
bin/game/compat_13.nut Normal file
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 <http://www.gnu.org/licenses/>.
*/
GSLog.Info("13 API compatibility in effect.");

6
bin/game/compat_14.nut Normal file
View File

@@ -0,0 +1,6 @@
/*
* 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/>.
*/

View File

@@ -1,3 +1,162 @@
13.0-beta2 (2022-11-27)
------------------------------------------------------------------------
Feature: Allow AI/GS to be fully modified in scenario editor (#10152)
Feature: Display power-to-weight ratio in ground vehicle details GUI (#10123)
Feature: Variable interface scaling (with chunky bevels!) (#10114)
Feature: Hotkey to honk a vehicle's horn (#10110)
Feature: Split AI/Game Script configuration windows and add them to world gen window (#10058)
Feature: [GS] Scriptable league tables (#10001)
Feature: Multi-track level crossings (#9931)
Feature: Improved local authority action window (#9928)
Feature: Automatic console command screenshot numbering with a filename ending in '#' (#9781)
Feature: Add buttons to toggle music in the Game Options menu (#9727)
Feature: Contextual actions for vehicles grouped by shared orders (#8425)
Feature: Add cargo filter support to vehicle list (#8308)
Feature: Show the cargoes the vehicles can carry in the vehicle list window (#8304)
Change: Allow building canal by area outside editor (#10173)
Change: Minor improvements to the new Finance GUI (#10168)
Change: Let AI developers edit non-editable AI/Game Script Parameters (#8895)
Change: Allow building docks on clearable watered object tiles (#8514)
Fix #8770: Center vehicle status bar icon (#10178)
Fix: Crash if error message window is too wide for screen. (#10172)
Fix #10155: Network games not syncing company settings properly (#10158)
Fix #10154: Network game desync related to setting a random company face (#10157)
Fix #10011: Incorrect infrastructure totals when overbuilding bay road stop (#10143)
Fix #10117: Object burst limit allowed one fewer object than the setting (#10120)
Fix #10023: Allow negative input in text fields when needed (#10112)
Fix #9908: Fix crash which could occur when a company was deleted when a depot window was open (#9912)
13.0-beta1 (2022-10-31)
------------------------------------------------------------------------
Feature: Airport construction GUI displays infrastructure cost (#10094)
Feature: Purchase land multiple tiles at a time (#10027)
Feature: Add sticky pin & shade widgets to Object Selection UI panel (#10019, #10020)
Feature: Improved handling of HiDPI and mixed-DPI screens (#9994, #9996, #9997, #10064)
Feature: Alternative linkgraph colour schemes (#9866)
Feature: Allow Shift+Insert as paste in edit box (#9836)
Feature: Setting to make the local town authority rubber-stamp all actions (#9833)
Feature: Add/extend console commands to enable screenshot automation (#9771)
Feature: [Linkgraph] Show a tooltip with statistics when hovering a link (#9760)
Feature: Build objects by area (#9709)
Feature: Add setting to hide news about competitors vehicle crash (#9653)
Feature: Ctrl-click to remove fully autoreplaced vehicles from list (#9639)
Feature: Wide rivers on map generation (#9628)
Add: [Script] ScriptCargo::GetWeight to get cargo weights (#9930)
Add: Command line option to skip NewGRF scanning (#9879)
Add: Show video driver name in Game Options window (#9872)
Add: [NewGRF] Map seed as global variable (#9834)
Add: [Script] IndustryType::ResolveNewGRFID to resolve industry id from grf_local_id and grfid (#9798)
Add: [Script] ObjectType::ResolveNewGRFID to resolve object id from grfid and grf_local_id (#9795)
Update: To all the friends we have lost and those we have gained (#10000)
Change: Use the Simulation subcategory to openttd.desktop (#10015)
Change: Constantly update destination of 'any depot' orders (#9959)
Change: Use an indent, not a dash, to list train capacity (#9887)
Change: [NewGRF] Increase vehicle sprite stack from 4 layers to 8 (#9863)
Change: Don't pay Property Maintenance on stations when Infrastructure Maintenance is disabled (#9828)
Change: Improved layout of the finance window (#9827)
Change: [Admin] Bump admin port protocol due to command changes (#9754)
Change: Suppress vehicle age warnings for stopped vehicles (#9718)
Change: Make pf.yapf.rail_firstred_twoway_eol on by default (#9544)
Change: Deliver cargo to the closest industry first (#9536)
Fix: Lots of fixes to how windows handle resizing (#10040, #10042, #10046, #10051, #10056, #10068, #10070, #10098)
Fix: Console commands list_ai output was truncated with a suitably large number of AIs (#10075)
Fix #9876: MacBook Touch Bar crash / render issues w/ 32bpp graphics (#10060)
Fix: Reduce framerate overhead in Train::Tick (#10055)
Fix: Only open scenario editor date query once (#10050)
Fix #10048: Don't relocate company HQ on the same exact location (#10049)
Fix #10038: Missing upper bounds check when loading custom playlists (#10039)
Fix: Wrong string used to determine size of zoomed out station sign (#10036)
Fix: Disable "turn around" button for other companies' road vehicles (#10033)
Fix: Online Players list mouse hover behaviour (#10031)
Fix: [NewGRF] Weirdness of new stations (#10017)
Fix #9854: DrawStringMultiLine() could draw beyond its bounding box (#10014)
Fix: Incorrect player name in online players window (#10013)
Fix #8099: News window zoom level fixes (#10005)
Fix: [NewGRF] Upper 16 random bits should be the same for all station tiles in callback 140 (#9992)
Fix #9989: £0 Net Profit is neither negative nor positive (#9991)
Fix #9804: Only apply sprite_zoom_min setting when sprites available (#9988)
Fix #9972: Add missing fill/resize flags on Framerate window widgets (#9982)
Fix #9935: Use more selectivity when building SSE specific code (#9980)
Fix #9940: Print debuglevel parse errors to console when changed from console (#9979)
Fix #9977: Clearing the console with a large number of lines could cause a crash (#9978)
Fix #9974: Console command getsysdate did not work due to off-by-one error (#9975)
Fix: [NewGRF] Default value of RailVehicleInfo::railveh_type was inconsistent with other default properties (#9967)
Fix #8584: Vehicles with shared orders getting invalid or unexpected start dates (#9955)
Fix #9951: [NewGRF] Scenario editor random industries button broke NewGRF persistent storage (#9952)
Fix: Validation of various internal command parameters that could have allowed a rogue client to crash servers (#9942, #9943, #9944, #9945, #9946, #9947, #9948, #9950)
Fix #9937: Station industries_near incorrect after removing part moved sign (#9938)
Fix: [Script] ScriptRoad::HasRoadType really check for RoadType (#9934)
Fix #9363: Rebuild client list on reinit event (#9929)
Fix #9925: Industry tile layout validation for layouts of only one tile (#9926)
Fix #9918: Reset industy last production year on scenario start (#9920)
Fix #9914: Prevent more useless pathfinder run for blocked vehicles (#9917)
Fix: List a max of four share owners instead of three (#9905)
Fix: [NewGRF] Industry layouts with zero regular tiles should be invalid (#9902)
Fix #9869: Remove docking tile when doing a clear square (#9898)
Fix: New player companies use favorite manager face, if saved (#9895)
Fix: Towns don't build parallel, redundant bridges (#9891)
Fix #9712: Cap town bridge length at original 11-tile limit (#9890)
Fix #9883: Show cost/income float over end tile of rail or road construction (#9889)
Fix #9870: Don't update infrastructure totals when overbuilding object on canal (#9888)
Fix #9877: GS could trigger 'Cost: £0' cost message (#9878)
Fix 44f2ef1: [strgen] Allow gender for {CARGO_SHORT} (#9873)
Fix #9867: Industry::stations_near not filled at industry creation (#9868)
Fix #9853: Incorrect merge of guiflags and flags for osk_activation (#9855)
Fix #6544: Don't join AI company when loading network game in singleplayer (#9794)
Fix: Company values do not properly account for shares (#9770)
Fix #9546: Crash when no industries are present in game (#9726)
Fix #9708: [Linkgraph] Don't assume vehicles have a non-zero max speed (#9693)
Fix #9665: [Linkgraph] Fix travel times of non-direct journeys (#9693)
Fix #8797: Use logical rail length when placing signals (#9652)
Cleanup: [NewGRF] Remove unused flag sprites (#10052)
12.2 (2022-04-02)
------------------------------------------------------------------------
Feature: Remember the last-used signal between games (#9792)
Change: [MacOS] Allow touchbar usage on all supported OS versions (#9776)
Change: Add a timestamp in name of crash files (#9761)
Fix #9736: Duplicate multiplayer window opens upon canceling password entry (#9842)
Fix: Removing long roads doesn't prioritise refusal of local authority over other errors (#9831)
Fix #9020: Glitchy station coverage highlight when changing selection (#9825)
Fix: Correct some Romanian town names (#9819)
Fix: Original music playback rate was slightly too fast (#9814)
Fix #9811: Use the NewGRF-defined vehicle center when dragging ships and aircraft (#9812)
Fix: Do not let shares in the company taking over another company disappear (#9808)
Fix #9802: Crash when using lots of NewGRF waypoint types (#9803)
Fix #9766: Don't write uninitialised data in config file (#9767)
Fix #9743: [MacOS] Don't try to render touchbar sprites with invalid zoom level (#9776)
Fix #9774: Building roadstop in estimation mode updates station acceptance (#9775)
Fix: If vehicles only refit to cargo-slots >= 32, the default cargo was wrong (#9744)
Fix #9735: Possible desync when replacing a depot on same tile (#9738)
Fix #9730: [Network] Connections can use an invalid socket due to a race condition (#9731)
Fix: Don't show sign edit window for GS-owned signs (#9716)
Fix #9702: Display order window for vehicle group on ctrl-click only when using shared orders (#9704)
Fix #9680: Crash when loading really old savegames with aircraft in certain places (#9699)
Fix: Update last servicing dates when using the date cheat (#9694)
Fix: Error message shows about missing glyphs while suitable fallback font is found (#9692)
12.1 (2021-11-08)
------------------------------------------------------------------------
Feature: Button to toggle showing advanced signal types (#9617)
Change: Don't show screenshot GUI in screenshots (#9674)
Change: Suppress panning in intro game, while user is interacting with the GUI (#9645)
Change: Draw rotor in cursor when dragging helicopters in depots (#9612)
Fix: Invalid memory access when loading a currency NewGRF (#9675)
Fix #9579: Object and HQ construction is Construction cost, not Property Maintenance (#9673)
Fix #9669: Ships exiting a blocked depot/lock could exit in the wrong direction (#9672)
Fix: Every 16th client never reconnects after server restart (#9666)
Fix #9643: Screenshots were always written as BMP files (#9644)
Fix #9630: Intro game could zoom in/out more than allowed by settings (#9633)
Fix #9626: Incorrect loading of script saved data (#9629)
Fix: Emergency crash save had the wrong NewGRF list saved in it (#9627)
Fix #9595: Always use plural forms of cargo for subsidy strings (#9619)
Fix #9614: Refresh rate dropdown was still active when vsync was enabled (#9618)
Fix: Don't use 'server address' string in server list when displaying an invite code (#9615)
12.0 (2021-10-17)
------------------------------------------------------------------------
Add: [Network] Keep the refresh button in lowered state while refreshing (#9600)

206
cmake/Catch.cmake Normal file
View File

@@ -0,0 +1,206 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
Catch
-----
This module defines a function to help use the Catch test framework.
The :command:`catch_discover_tests` discovers tests by asking the compiled test
executable to enumerate its tests. This does not require CMake to be re-run
when tests change. However, it may not work in a cross-compiling environment,
and setting test properties is less convenient.
This command is intended to replace use of :command:`add_test` to register
tests, and will create a separate CTest test for each Catch test case. Note
that this is in some cases less efficient, as common set-up and tear-down logic
cannot be shared by multiple test cases executing in the same instance.
However, it provides more fine-grained pass/fail information to CTest, which is
usually considered as more beneficial. By default, the CTest test name is the
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
.. command:: catch_discover_tests
Automatically add tests with CTest by querying the compiled test executable
for available tests::
catch_discover_tests(target
[TEST_SPEC arg1...]
[EXTRA_ARGS arg1...]
[WORKING_DIRECTORY dir]
[TEST_PREFIX prefix]
[TEST_SUFFIX suffix]
[PROPERTIES name1 value1...]
[TEST_LIST var]
[REPORTER reporter]
[OUTPUT_DIR dir]
[OUTPUT_PREFIX prefix}
[OUTPUT_SUFFIX suffix]
)
``catch_discover_tests`` sets up a post-build command on the test executable
that generates the list of tests by parsing the output from running the test
with the ``--list-test-names-only`` argument. This ensures that the full
list of tests is obtained. Since test discovery occurs at build time, it is
not necessary to re-run CMake when the list of tests changes.
However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
in order to function in a cross-compiling environment.
Additionally, setting properties on tests is somewhat less convenient, since
the tests are not available at CMake time. Additional test properties may be
assigned to the set of tests as a whole using the ``PROPERTIES`` option. If
more fine-grained test control is needed, custom content may be provided
through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
directory property. The set of discovered tests is made accessible to such a
script via the ``<target>_TESTS`` variable.
The options are:
``target``
Specifies the Catch executable, which must be a known CMake executable
target. CMake will substitute the location of the built executable when
running the test.
``TEST_SPEC arg1...``
Specifies test cases, wildcarded test cases, tags and tag expressions to
pass to the Catch executable with the ``--list-test-names-only`` argument.
``EXTRA_ARGS arg1...``
Any extra arguments to pass on the command line to each test case.
``WORKING_DIRECTORY dir``
Specifies the directory in which to run the discovered test cases. If this
option is not provided, the current binary directory is used.
``TEST_PREFIX prefix``
Specifies a ``prefix`` to be prepended to the name of each discovered test
case. This can be useful when the same test executable is being used in
multiple calls to ``catch_discover_tests()`` but with different
``TEST_SPEC`` or ``EXTRA_ARGS``.
``TEST_SUFFIX suffix``
Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
be specified.
``PROPERTIES name1 value1...``
Specifies additional properties to be set on all tests discovered by this
invocation of ``catch_discover_tests``.
``TEST_LIST var``
Make the list of tests available in the variable ``var``, rather than the
default ``<target>_TESTS``. This can be useful when the same test
executable is being used in multiple calls to ``catch_discover_tests()``.
Note that this variable is only available in CTest.
``REPORTER reporter``
Use the specified reporter when running the test case. The reporter will
be passed to the Catch executable as ``--reporter reporter``.
``OUTPUT_DIR dir``
If specified, the parameter is passed along as
``--out dir/<test_name>`` to Catch executable. The actual file name is the
same as the test name. This should be used instead of
``EXTRA_ARGS --out foo`` to avoid race conditions writing the result output
when using parallel test execution.
``OUTPUT_PREFIX prefix``
May be used in conjunction with ``OUTPUT_DIR``.
If specified, ``prefix`` is added to each output file name, like so
``--out dir/prefix<test_name>``.
``OUTPUT_SUFFIX suffix``
May be used in conjunction with ``OUTPUT_DIR``.
If specified, ``suffix`` is added to each output file name, like so
``--out dir/<test_name>suffix``. This can be used to add a file extension to
the output e.g. ".xml".
#]=======================================================================]
#------------------------------------------------------------------------------
function(catch_discover_tests TARGET)
cmake_parse_arguments(
""
""
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;REPORTER;OUTPUT_DIR;OUTPUT_PREFIX;OUTPUT_SUFFIX"
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
${ARGN}
)
if(NOT _WORKING_DIRECTORY)
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
if(NOT _TEST_LIST)
set(_TEST_LIST ${TARGET}_TESTS)
endif()
## Generate a unique name based on the extra arguments
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS} ${_REPORTER} ${_OUTPUT_DIR} ${_OUTPUT_PREFIX} ${_OUTPUT_SUFFIX}")
string(SUBSTRING ${args_hash} 0 7 args_hash)
# Define rule to generate test list for aforementioned test executable
set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake")
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake")
get_property(crosscompiling_emulator
TARGET ${TARGET}
PROPERTY CROSSCOMPILING_EMULATOR
)
add_custom_command(
TARGET ${TARGET} POST_BUILD
BYPRODUCTS "${ctest_tests_file}"
COMMAND "${CMAKE_COMMAND}"
-D "TEST_TARGET=${TARGET}"
-D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
-D "TEST_SPEC=${_TEST_SPEC}"
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
-D "TEST_PROPERTIES=${_PROPERTIES}"
-D "TEST_PREFIX=${_TEST_PREFIX}"
-D "TEST_SUFFIX=${_TEST_SUFFIX}"
-D "TEST_LIST=${_TEST_LIST}"
-D "TEST_REPORTER=${_REPORTER}"
-D "TEST_OUTPUT_DIR=${_OUTPUT_DIR}"
-D "TEST_OUTPUT_PREFIX=${_OUTPUT_PREFIX}"
-D "TEST_OUTPUT_SUFFIX=${_OUTPUT_SUFFIX}"
-D "CTEST_FILE=${ctest_tests_file}"
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
VERBATIM
)
file(WRITE "${ctest_include_file}"
"if(EXISTS \"${ctest_tests_file}\")\n"
" include(\"${ctest_tests_file}\")\n"
"else()\n"
" add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n"
"endif()\n"
)
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
# Add discovered tests to directory TEST_INCLUDE_FILES
set_property(DIRECTORY
APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
)
else()
# Add discovered tests as directory TEST_INCLUDE_FILE if possible
get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
if (NOT ${test_include_file_set})
set_property(DIRECTORY
PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}"
)
else()
message(FATAL_ERROR
"Cannot set more than one TEST_INCLUDE_FILE"
)
endif()
endif()
endfunction()
###############################################################################
set(_CATCH_DISCOVER_TESTS_SCRIPT
${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
CACHE INTERNAL "Catch2 full path to CatchAddTests.cmake helper file"
)

135
cmake/CatchAddTests.cmake Normal file
View File

@@ -0,0 +1,135 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
set(prefix "${TEST_PREFIX}")
set(suffix "${TEST_SUFFIX}")
set(spec ${TEST_SPEC})
set(extra_args ${TEST_EXTRA_ARGS})
set(properties ${TEST_PROPERTIES})
set(reporter ${TEST_REPORTER})
set(output_dir ${TEST_OUTPUT_DIR})
set(output_prefix ${TEST_OUTPUT_PREFIX})
set(output_suffix ${TEST_OUTPUT_SUFFIX})
set(script)
set(suite)
set(tests)
function(add_command NAME)
set(_args "")
# use ARGV* instead of ARGN, because ARGN splits arrays into multiple arguments
math(EXPR _last_arg ${ARGC}-1)
foreach(_n RANGE 1 ${_last_arg})
set(_arg "${ARGV${_n}}")
if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
else()
set(_args "${_args} ${_arg}")
endif()
endforeach()
set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
endfunction()
# Run test executable to get list of available tests
if(NOT EXISTS "${TEST_EXECUTABLE}")
message(FATAL_ERROR
"Specified test executable '${TEST_EXECUTABLE}' does not exist"
)
endif()
execute_process(
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-test-names-only
OUTPUT_VARIABLE output
RESULT_VARIABLE result
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
)
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
if(${result} EQUAL 0)
message(WARNING
"Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
)
elseif(${result} LESS 0)
message(FATAL_ERROR
"Error running test executable '${TEST_EXECUTABLE}':\n"
" Result: ${result}\n"
" Output: ${output}\n"
)
endif()
string(REPLACE "\n" ";" output "${output}")
# Run test executable to get list of available reporters
execute_process(
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-reporters
OUTPUT_VARIABLE reporters_output
RESULT_VARIABLE reporters_result
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
)
if(${reporters_result} EQUAL 0)
message(WARNING
"Test executable '${TEST_EXECUTABLE}' contains no reporters!\n"
)
elseif(${reporters_result} LESS 0)
message(FATAL_ERROR
"Error running test executable '${TEST_EXECUTABLE}':\n"
" Result: ${reporters_result}\n"
" Output: ${reporters_output}\n"
)
endif()
string(FIND "${reporters_output}" "${reporter}" reporter_is_valid)
if(reporter AND ${reporter_is_valid} EQUAL -1)
message(FATAL_ERROR
"\"${reporter}\" is not a valid reporter!\n"
)
endif()
# Prepare reporter
if(reporter)
set(reporter_arg "--reporter ${reporter}")
endif()
# Prepare output dir
if(output_dir AND NOT IS_ABSOLUTE ${output_dir})
set(output_dir "${TEST_WORKING_DIR}/${output_dir}")
if(NOT EXISTS ${output_dir})
file(MAKE_DIRECTORY ${output_dir})
endif()
endif()
# Parse output
foreach(line ${output})
set(test ${line})
# Escape characters in test case names that would be parsed by Catch2
set(test_name ${test})
foreach(char , [ ])
string(REPLACE ${char} "\\${char}" test_name ${test_name})
endforeach(char)
# ...add output dir
if(output_dir)
string(REGEX REPLACE "[^A-Za-z0-9_]" "_" test_name_clean ${test_name})
set(output_dir_arg "--out ${output_dir}/${output_prefix}${test_name_clean}${output_suffix}")
endif()
# ...and add to script
add_command(add_test
"${prefix}${test}${suffix}"
${TEST_EXECUTOR}
"${TEST_EXECUTABLE}"
"${test_name}"
${extra_args}
"${reporter_arg}"
"${output_dir_arg}"
)
add_command(set_tests_properties
"${prefix}${test}${suffix}"
PROPERTIES
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
${properties}
)
list(APPEND tests "${prefix}${test}${suffix}")
endforeach()
# Create a list of all discovered tests, which users may use to e.g. set
# properties on the tests
add_command(set ${TEST_LIST} ${tests})
# Write CTest script
file(WRITE "${CTEST_FILE}" "${script}")

87
cmake/CheckAtomic.cmake Normal file
View File

@@ -0,0 +1,87 @@
# atomic builtins are required for threading support.
INCLUDE(CheckCXXSourceCompiles)
INCLUDE(CheckLibraryExists)
# Sometimes linking against libatomic is required for atomic ops, if
# the platform doesn't support lock-free atomics.
function(check_working_cxx_atomics varname)
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++17")
check_cxx_source_compiles("
#include <atomic>
std::atomic<int> x;
std::atomic<short> y;
std::atomic<char> z;
int main() {
++z;
++y;
return ++x;
}
" ${varname})
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
endfunction(check_working_cxx_atomics)
function(check_working_cxx_atomics64 varname)
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "-std=c++17 ${CMAKE_REQUIRED_FLAGS}")
check_cxx_source_compiles("
#include <atomic>
#include <cstdint>
std::atomic<uint64_t> x (0);
int main() {
uint64_t i = x.load(std::memory_order_relaxed);
(void)i;
return 0;
}
" ${varname})
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
endfunction(check_working_cxx_atomics64)
# Check for (non-64-bit) atomic operations.
if(MSVC)
set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)
else()
# First check if atomics work without the library.
check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
# If not, check if the library exists, and atomics work with it.
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
if(HAVE_LIBATOMIC)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
message(FATAL_ERROR "Host compiler must support std::atomic!")
endif()
else()
message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
endif()
endif()
endif()
# Check for 64 bit atomic operations.
if(MSVC)
set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
else()
# First check if atomics work without the library.
check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
# If not, check if the library exists, and atomics work with it.
if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
if(HAVE_CXX_LIBATOMICS64)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!")
endif()
else()
message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.")
endif()
endif()
endif()
if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
target_link_libraries(openttd_lib atomic)
endif()

View File

@@ -4,23 +4,6 @@
#
macro(compile_flags)
if(MSVC)
if(VCPKG_TARGET_TRIPLET MATCHES "-static" AND NOT VCPKG_TARGET_TRIPLET MATCHES "-md")
# Switch to MT (static) instead of MD (dynamic) binary
# For MSVC two generators are available
# - a command line generator (Ninja) using CMAKE_BUILD_TYPE to specify the
# configuration of the build tree
# - an IDE generator (Visual Studio) using CMAKE_CONFIGURATION_TYPES to
# specify all configurations that will be available in the generated solution
list(APPEND MSVC_CONFIGS "${CMAKE_BUILD_TYPE}" "${CMAKE_CONFIGURATION_TYPES}")
# Set usage of static runtime for all configurations
foreach(MSVC_CONFIG ${MSVC_CONFIGS})
string(TOUPPER "CMAKE_CXX_FLAGS_${MSVC_CONFIG}" MSVC_FLAGS)
string(REPLACE "/MD" "/MT" ${MSVC_FLAGS} "${${MSVC_FLAGS}}")
endforeach()
endif()
# "If /Zc:rvalueCast is specified, the compiler follows section 5.4 of the
# C++11 standard". We need C++11 for the way we use threads.
add_compile_options(/Zc:rvalueCast)
@@ -43,6 +26,11 @@ macro(compile_flags)
add_link_options(
"$<$<NOT:$<CONFIG:Debug>>:-fstack-protector>" # Prevent undefined references when _FORTIFY_SOURCE > 0
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_compile_options(
"$<$<CONFIG:Debug>:-Wa,-mbig-obj>" # Switch to pe-bigobj-x86-64 as x64 Debug builds push pe-x86-64 to the limits (linking errors with ASLR, ...)
)
endif()
endif()
# Prepare a generator that checks if we are not a debug, and don't have asserts
@@ -51,6 +39,11 @@ macro(compile_flags)
if(MSVC)
add_compile_options(/W3)
if(MSVC_VERSION GREATER 1929 AND MSVC_VERSION LESS 1937 AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# Starting with version 19.30 (fixed in version 19.37), there is an optimisation bug, see #9966 for details
# This flag disables the broken optimisation to work around the bug
add_compile_options(/d2ssa-rse-)
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
@@ -126,6 +119,10 @@ macro(compile_flags)
# -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"
)
endif()

65
cmake/FindHarfbuzz.cmake Normal file
View File

@@ -0,0 +1,65 @@
#[=======================================================================[.rst:
FindHarfBuzz
-------
Finds the harfbuzz library.
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``Harfbuzz_FOUND``
True if the system has the harfbuzz library.
``Harfbuzz_INCLUDE_DIRS``
Include directories needed to use harfbuzz.
``Harfbuzz_LIBRARIES``
Libraries needed to link to harfbuzz.
``Harfbuzz_VERSION``
The version of the harfbuzz library which was found.
Cache Variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``Harfbuzz_INCLUDE_DIR``
The directory containing ``hb.h``.
``Harfbuzz_LIBRARY``
The path to the harfbuzz library.
#]=======================================================================]
find_package(PkgConfig QUIET)
pkg_check_modules(PC_Harfbuzz QUIET harfbuzz)
find_path(Harfbuzz_INCLUDE_DIR
NAMES hb.h
PATHS ${PC_Harfbuzz_INCLUDE_DIRS}
)
find_library(Harfbuzz_LIBRARY
NAMES harfbuzz
PATHS ${PC_Harfbuzz_LIBRARY_DIRS}
)
set(Harfbuzz_VERSION ${PC_Harfbuzz_VERSION})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Harfbuzz
FOUND_VAR Harfbuzz_FOUND
REQUIRED_VARS
Harfbuzz_LIBRARY
Harfbuzz_INCLUDE_DIR
VERSION_VAR Harfbuzz_VERSION
)
if(Harfbuzz_FOUND)
set(Harfbuzz_LIBRARIES ${Harfbuzz_LIBRARY})
set(Harfbuzz_INCLUDE_DIRS ${Harfbuzz_INCLUDE_DIR})
endif()
mark_as_advanced(
Harfbuzz_INCLUDE_DIR
Harfbuzz_LIBRARY
)

View File

@@ -9,7 +9,7 @@ FindICU
Finds components of the ICU library.
Accepted components are: uc, i18n, le, lx, io
Accepted components are: uc, i18n, le, lx, io, data
Result Variables
^^^^^^^^^^^^^^^^
@@ -31,7 +31,7 @@ This will define the following variables:
find_package(PkgConfig QUIET)
set(ICU_KNOWN_COMPONENTS "uc" "i18n" "le" "lx" "io")
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)

View File

@@ -55,7 +55,7 @@ find_library(LZO_LIBRARY
# name as the optimized file. This is not always the case, but so far
# experiences has shown that in those case vcpkg CMake files do the right
# thing.
if(VCPKG_TOOLCHAIN AND LZO_LIBRARY)
if(VCPKG_TOOLCHAIN AND LZO_LIBRARY AND LZO_LIBRARY MATCHES "${VCPKG_INSTALLED_DIR}")
if(LZO_LIBRARY MATCHES "/debug/")
set(LZO_LIBRARY_DEBUG ${LZO_LIBRARY})
string(REPLACE "/debug/lib/" "/lib/" LZO_LIBRARY_RELEASE ${LZO_LIBRARY})

View File

@@ -122,6 +122,8 @@ set(CPACK_STRIP_FILES YES)
set(CPACK_OUTPUT_FILE_PREFIX "bundles")
if(APPLE)
# Stripping would produce unreadable stacktraces.
set(CPACK_STRIP_FILES NO)
set(CPACK_GENERATOR "Bundle")
include(PackageBundle)
@@ -129,7 +131,7 @@ if(APPLE)
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-macos-universal")
else()
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-macos-${CPACK_SYSTEM_NAME}")
endif()
endif()
elseif(WIN32)
set(CPACK_GENERATOR "ZIP")
if(OPTION_USE_NSIS)
@@ -171,6 +173,10 @@ elseif(UNIX)
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()
@@ -181,6 +187,10 @@ elseif(UNIX)
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()

View File

@@ -3,21 +3,24 @@ function(link_package NAME)
if(${NAME}_FOUND)
string(TOUPPER "${NAME}" UCNAME)
# Some libraries have a dash, which is not allowed in a preprocessor macro.
string(REPLACE "-" "_" UCNAME "${UCNAME}")
add_definitions(-DWITH_${UCNAME})
# Some libraries' cmake packages (looking at you, SDL2) leave trailing whitespace in the link commands,
# which (later) cmake considers to be an error. Work around this with by stripping the incoming string.
if(LP_TARGET AND TARGET ${LP_TARGET})
string(STRIP "${LP_TARGET}" LP_TARGET)
target_link_libraries(openttd ${LP_TARGET})
target_link_libraries(openttd_lib ${LP_TARGET})
message(STATUS "${NAME} found -- -DWITH_${UCNAME} -- ${LP_TARGET}")
else()
string(STRIP "${${NAME}_LIBRARY}" ${NAME}_LIBRARY)
string(STRIP "${${NAME}_LIBRARIES}" ${NAME}_LIBRARIES)
include_directories(${${NAME}_INCLUDE_DIRS} ${${NAME}_INCLUDE_DIR})
target_link_libraries(openttd ${${NAME}_LIBRARIES} ${${NAME}_LIBRARY})
target_link_libraries(openttd_lib ${${NAME}_LIBRARIES} ${${NAME}_LIBRARY})
message(STATUS "${NAME} found -- -DWITH_${UCNAME} -- ${${NAME}_INCLUDE_DIRS} ${${NAME}_INCLUDE_DIR} -- ${${NAME}_LIBRARIES} ${${NAME}_LIBRARY}")
endif()
elseif(LP_ENCOURAGED)
message(WARNING "${NAME} not found; compiling OpenTTD without ${NAME} is strongly disencouraged")
message(WARNING "${NAME} not found; compiling OpenTTD without ${NAME} is strongly discouraged")
endif()
endfunction()

View File

@@ -3,6 +3,7 @@
source_group("AI Core" REGULAR_EXPRESSION "src/ai/")
source_group("Blitters" REGULAR_EXPRESSION "src/blitter/")
source_group("Core Source Code" REGULAR_EXPRESSION "src/core/")
source_group("Font Cache" REGULAR_EXPRESSION "src/fontcache/")
source_group("Game Core" REGULAR_EXPRESSION "src/game/")
source_group("MD5" REGULAR_EXPRESSION "src/3rdparty/md5/")
source_group("Misc" REGULAR_EXPRESSION "src/misc/")

View File

@@ -56,7 +56,7 @@ function(set_options)
option(OPTION_DEDICATED "Build dedicated server only (no GUI)" OFF)
option(OPTION_INSTALL_FHS "Install with Filesystem Hierarchy Standard folders" ${DEFAULT_OPTION_INSTALL_FHS})
option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" OFF)
option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" ON)
if(EMSCRIPTEN)
# Although pthreads is supported, it is not in a way yet that is
# useful for us.
@@ -71,6 +71,8 @@ function(set_options)
if (OPTION_DOCS_ONLY)
set(OPTION_TOOLS_ONLY ON PARENT_SCOPE)
endif()
option(OPTION_SURVEY_KEY "Survey-key to use for the opt-in survey (empty if you have none)" "")
endfunction()
# Show the values of the generic options.
@@ -84,6 +86,12 @@ function(show_options)
message(STATUS "Option Use assert - ${OPTION_USE_ASSERTS}")
message(STATUS "Option Use threads - ${OPTION_USE_THREADS}")
message(STATUS "Option Use NSIS - ${OPTION_USE_NSIS}")
if(OPTION_SURVEY_KEY)
message(STATUS "Option Survey Key - USED")
else()
message(STATUS "Option Survey Key - NOT USED")
endif()
endfunction()
# Add the definitions for the options that are selected.
@@ -104,4 +112,8 @@ function(add_definitions_based_on_options)
else()
add_definitions(-DNDEBUG)
endif()
if(OPTION_SURVEY_KEY)
add_definitions(-DSURVEY_KEY="${OPTION_SURVEY_KEY}")
endif()
endfunction()

1
cmake/PackageRPM.cmake Normal file
View File

@@ -0,0 +1 @@
set(CPACK_RPM_PACKAGE_ARCHITECTURE "${ARCHITECTURE}")

View File

@@ -1,12 +1,4 @@
# Add a file to be compiled.
#
# add_files([file1 ...] CONDITION condition [condition ...])
#
# CONDITION is a complete statement that can be evaluated with if().
# If it evaluates true, the source files will be added; otherwise not.
# For example: ADD_IF SDL_FOUND AND Allegro_FOUND
#
function(add_files)
function(_add_files_tgt tgt)
cmake_parse_arguments(PARAM "" "" "CONDITION" ${ARGN})
set(PARAM_FILES "${PARAM_UNPARSED_ARGUMENTS}")
@@ -17,10 +9,44 @@ function(add_files)
endif()
foreach(FILE IN LISTS PARAM_FILES)
target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
# Some IDEs are not happy with duplicated filenames, so we detect that before adding the file.
get_target_property(${tgt}_FILES ${tgt} SOURCES)
if(${tgt}_FILES MATCHES "/${FILE}(;|$)")
string(REGEX REPLACE "(^|.+;)([^;]+/${FILE})(;.+|$)" "\\2" RES "${${tgt}_FILES}")
# Ignore header files duplicates in 3rdparty.
if(NOT (${FILE} MATCHES "\.h" AND (${RES} MATCHES "3rdparty" OR ${CMAKE_CURRENT_SOURCE_DIR} MATCHES "3rdparty")))
message(FATAL_ERROR "${tgt}: ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} filename is a duplicate of ${RES}")
endif()
endif()
target_sources(${tgt} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
endforeach()
endfunction()
# Add a file to be compiled.
#
# add_files([file1 ...] CONDITION condition [condition ...])
#
# CONDITION is a complete statement that can be evaluated with if().
# If it evaluates true, the source files will be added; otherwise not.
# For example: ADD_IF SDL_FOUND AND Allegro_FOUND
#
function(add_files)
_add_files_tgt(openttd_lib ${ARGV})
endfunction()
# Add a test file to be compiled.
#
# add_test_files([file1 ...] CONDITION condition [condition ...])
#
# CONDITION is a complete statement that can be evaluated with if().
# If it evaluates true, the source files will be added; otherwise not.
# For example: ADD_IF SDL_FOUND AND Allegro_FOUND
#
function(add_test_files)
_add_files_tgt(openttd_test ${ARGV})
endfunction()
# This function works around an 'issue' with CMake, where
# set_source_files_properties() only works in the scope of the file. We want
# to set properties for the source file on a more global level. To solve this,

View File

@@ -13,6 +13,7 @@ cmake_minimum_required(VERSION 3.5)
# The parameter "enumname" specifies the enumeration to extract. This can also be a regular expression.
# The parameter "filename" specifies the relative path to the file, where the enumeration is extracted from. This can also be a glob expression.
#
# All files where enumerations are extracted from are automatically added via #include
#
if(NOT GENERATE_SOURCE_FILE)
@@ -41,6 +42,7 @@ foreach(ENUM IN LISTS ENUM_LINES)
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" FILE ${FILE})
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}/* automatically generated from ${FILE} */")
list(APPEND INCLUDES "#include \"${FILE}\"")
foreach(LINE IN LISTS SOURCE_LINES)
string(REPLACE "${RM_INDENT}" "" LINE "${LINE}")
@@ -116,4 +118,7 @@ foreach(ENUM IN LISTS ENUM_LINES)
endforeach()
endforeach()
list(REMOVE_DUPLICATES INCLUDES)
string(REPLACE ";" "\n" INCLUDES "${INCLUDES}")
configure_file(${GENERATE_SOURCE_FILE} ${GENERATE_BINARY_FILE})

View File

@@ -35,6 +35,7 @@ execute_process(COMMAND ${OPENTTD_EXECUTABLE}
-vnull:ticks=30000
-d script=2
-d misc=9
-Q
OUTPUT_VARIABLE REGRESSION_OUTPUT
ERROR_VARIABLE REGRESSION_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE

View File

@@ -28,25 +28,27 @@ endmacro()
macro(dump_class_templates NAME)
string(REGEX REPLACE "^Script" "" REALNAME ${NAME})
string(APPEND SQUIRREL_EXPORT "\n template <> inline ${NAME} *GetParam(ForceType<${NAME} *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return (${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline ${NAME} &GetParam(ForceType<${NAME} &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return *(${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline const ${NAME} *GetParam(ForceType<const ${NAME} *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return (${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline const ${NAME} &GetParam(ForceType<const ${NAME} &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return *(${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<${NAME} *> { static inline ${NAME} *Get(HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return (${NAME} *)instance; } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<${NAME} &> { static inline ${NAME} &Get(HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return *(${NAME} *)instance; } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<const ${NAME} *> { static inline const ${NAME} *Get(HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return (${NAME} *)instance; } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<const ${NAME} &> { static inline const ${NAME} &Get(HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, nullptr); return *(${NAME} *)instance; } };")
if("${NAME}" STREQUAL "ScriptEvent")
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${NAME} *>(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; }")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
elseif("${NAME}" STREQUAL "ScriptText")
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\n template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_INSTANCE) {")
string(APPEND SQUIRREL_EXPORT "\n return GetParam(ForceType<ScriptText *>(), vm, index, ptr);")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<Text *> {")
string(APPEND SQUIRREL_EXPORT "\n static inline Text *Get(HSQUIRRELVM vm, int index) {")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_INSTANCE) {")
string(APPEND SQUIRREL_EXPORT "\n return Param<ScriptText *>::Get(vm, index);")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_STRING) {")
string(APPEND SQUIRREL_EXPORT "\n return new RawText(Param<const std::string &>::Get(vm, index));")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n return nullptr;")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_STRING) {")
string(APPEND SQUIRREL_EXPORT "\n return new RawText(GetParam(ForceType<const char *>(), vm, index, ptr));")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n return nullptr;")
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n };")
else()
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${NAME} *>(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; }")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Return<${NAME} *> { static inline int Set(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; } };")
endif()
endmacro()
@@ -297,8 +299,8 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow enums to be used as Squirrel parameters */")
foreach(ENUM IN LISTS ENUMS)
string(APPEND SQUIRREL_EXPORT "\n template <> inline ${ENUM} GetParam(ForceType<${ENUM}>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (${ENUM})tmp; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${ENUM}>(HSQUIRRELVM vm, ${ENUM} res) { sq_pushinteger(vm, (int32)res); return 1; }")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Param<${ENUM}> { static inline ${ENUM} Get(HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (${ENUM})tmp; } };")
string(APPEND SQUIRREL_EXPORT "\n template <> struct Return<${ENUM}> { static inline int Set(HSQUIRRELVM vm, ${ENUM} res) { sq_pushinteger(vm, res); return 1; } };")
endforeach()
endif()
@@ -330,19 +332,19 @@ foreach(LINE IN LISTS SOURCE_LINES)
endif()
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\ntemplate <> const char *GetClassName<${CLS}, ST_${APIUC}>() { return \"${API_CLS}\"; }")
string(APPEND SQUIRREL_EXPORT "\ntemplate <> const char *GetClassName<${CLS}, ScriptType::${APIUC}>() { return \"${API_CLS}\"; }")
string(APPEND SQUIRREL_EXPORT "\n")
# Then do the registration functions of the class.
string(APPEND SQUIRREL_EXPORT "\nvoid SQ${API_CLS}_Register(Squirrel *engine)")
string(APPEND SQUIRREL_EXPORT "\n{")
string(APPEND SQUIRREL_EXPORT "\n DefSQClass<${CLS}, ST_${APIUC}> SQ${API_CLS}(\"${API_CLS}\");")
string(APPEND SQUIRREL_EXPORT "\n DefSQClass<${CLS}, ScriptType::${APIUC}> SQ${API_CLS}(\"${API_CLS}\");")
if("${SUPER_CLS}" STREQUAL "Text" OR "${SUPER_CLS}" STREQUAL "ScriptObject" OR "${SUPER_CLS}" STREQUAL "AIAbstractiveList::Valuator")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine);")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine, \"${API_SUPER_CLS}\");")
endif()
if(NOT "${SUPER_CLS}" STREQUAL "ScriptEvent")
if(NOT "${SUPER_CLS}" MATCHES "^ScriptEvent")
if("${CLS_PARAM_2}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.AddSQAdvancedConstructor(engine);")
else()
@@ -625,10 +627,12 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(APPEND TYPES "p")
elseif("${PARAM}" MATCHES "^Array")
string(APPEND TYPES "a")
elseif("${PARAM}" MATCHES "^struct Array")
elseif("${PARAM}" MATCHES "^const Array")
string(APPEND TYPES "a")
elseif("${PARAM}" MATCHES "^Text")
string(APPEND TYPES ".")
elseif("${PARAM}" MATCHES "^std::string")
string(APPEND TYPES ".")
else()
string(APPEND TYPES "x")
endif()

View File

@@ -12,32 +12,11 @@ endif()
if(NOT APIUC)
message(FATAL_ERROR "Script needs APIUC defined")
endif()
if(NOT API_FILES)
message(FATAL_ERROR "Script needs API_FILES defined")
endif()
set(ARGC 1)
set(ARG_READ NO)
# For MSVC CMake runs this script from a batch file using || to detect errors,
# depending on source path it may quote args, and cause cmd to not understand ||
# and pass it as argument to ourself.
# Read all the arguments given to CMake; we are looking for -- and everything
# that follows, until ||. Those are our api files.
while(ARGC LESS CMAKE_ARGC)
set(ARG ${CMAKE_ARGV${ARGC}})
if(ARG STREQUAL "||")
set(ARG_READ NO)
endif()
if(ARG_READ)
list(APPEND SCRIPT_API_BINARY_FILES "${ARG}")
endif()
if(ARG STREQUAL "--")
set(ARG_READ YES)
endif()
math(EXPR ARGC "${ARGC} + 1")
endwhile()
file(READ "${API_FILES}" SCRIPT_API_BINARY_FILES)
foreach(FILE IN LISTS SCRIPT_API_BINARY_FILES)
file(STRINGS "${FILE}" LINES REGEX "^void SQ${APIUC}.*_Register\\(Squirrel \\*engine\\)$")

View File

@@ -19,14 +19,14 @@ your operating system:
- Windows:
- `C:\My Documents\OpenTTD` (95, 98, ME)
- `C:\Documents and Settings\<username>\My Documents\OpenTTD` (2000, XP)
- `C:\Users\<username>\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- `C:\Users\<username>\Documents\OpenTTD` (Vista, 7, 8.1, 10, 11)
- macOS: `~/Documents/OpenTTD`
- Linux: `$XDG_DATA_HOME/openttd` which is usually `~/.local/share/openttd`
when built with XDG base directory support, otherwise `~/.openttd`
3. The shared directory
- Windows:
- `C:\Documents and Settings\All Users\Shared Documents\OpenTTD` (2000, XP)
- `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10)
- `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10, 11)
- macOS: `/Library/Application Support/OpenTTD`
- Linux: not available
4. The binary directory (where the OpenTTD executable is)

View File

@@ -807,8 +807,6 @@
</table>
</li>
<li>m2 bits 5..4: ground density</li>
<li>m2 bits 3..0: update counter, incremented on every periodic processing.<br>
on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li>
<li>m3 bits 7..0: type of trees:
<table>
<tr>
@@ -998,6 +996,7 @@
<li>m7: animation frame (railway stations/waypoints, airports)</li>
<li>m8 bits 11..6: <a href="#TramType">Tramtype</a></li>
<li>m8 bits 5..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
<li>m8 bits 5..0: custom road stop id; 0 means standard graphics</li>
</ul>
</td>
</tr>

View File

@@ -203,7 +203,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits"><span class="usable" title="Graphics index">OOOO O</span><span class="used" title="Graphics index: 00 (exit towards NE), 01 (exit towards SE), 02 (exit towards SW), 03 (exit towards NW), 04 (drive through X), 05 (drive through Y)">XXX</span></td>
<td class="bits" rowspan=5><span class="free">OO</span><span class="used" title="Station type">XX X</span><span class="free">OOO</span></td>
<td class="bits"><span class="free">OOO</span><span class="used" title="Owner of road">X XXXX</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="used" title="Tram type">XXXX XX<span class="free">OO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="used" title="Tram type">XXXX XX</span> <span class="used" title="Custom road stops specifications ID">XXXXXX</span></td>
</tr>
<tr>
<td class="caption">airport</td>

View File

@@ -1,6 +1,6 @@
.\" Hey, EMACS: -*- nroff -*-
.\" Please adjust this date whenever revising the manpage.
.Dd October 13, 2014
.Dd August 12, 2023
.Dt OPENTTD 6
.Os
.Sh NAME
@@ -8,7 +8,7 @@
.Nd open source clone of the Microprose game \(lqTransport Tycoon Deluxe\(rq
.Sh SYNOPSIS
.Nm
.Op Fl efhx
.Op Fl efhQxX
.Op Fl b Ar blitter
.Op Fl c Ar config_file
.Op Fl d Op Ar level | Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ...
@@ -19,7 +19,7 @@
.Op Fl l Ar host Ns Op : Ns Ar port
.Op Fl m Ar driver
.Op Fl M Ar musicset
.Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
.Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar company
.Op Fl p Ar password
.Op Fl P Ar password
.Op Fl q Ar savegame
@@ -29,7 +29,7 @@
.Op Fl t Ar year
.Op Fl v Ar driver
.Sh OPTIONS
.Bl -tag -width "-n host[:port][#player]"
.Bl -tag -width "-n host[:port][#company]"
.It Fl b Ar blitter
Select the blitter
.Ar blitter ;
@@ -83,10 +83,8 @@ see
.Fl h
for a full list.
.It Fl l Ar host Ns Op : Ns Ar port
Redirect
.Fn DEBUG
output; see
.Fl D .
Redirect debug output; see
.Fl d .
.It Fl m Ar driver
Select the music driver
.Ar driver ;
@@ -99,8 +97,8 @@ Select the music set
see
.Fl h
for a full list.
.It Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
Join a network game, optionally specifying a port to connect to and player to
.It Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar company
Join a network game, optionally specifying a port to connect to and company to
play as.
.It Fl p Ar password
Password used to join server.
@@ -112,6 +110,14 @@ Only useful with
.Fl n .
.It Fl q Ar savegame
Write some information about the specified savegame and exit.
.It Fl Q
Don't scan for/load NewGRF files on startup.
.Pp
Passing
.Fl Q
twice (so,
.Fl QQ
) will disable NewGRF scanning/loading entirely.
.It Fl r Ar width Ns x Ns Ar height
Set the resolution to
.Ar width
@@ -141,6 +147,8 @@ see
for a full list.
.It Fl x
Do not automatically save to config file on exit.
.It Fl X
Do not use global folders to search for files.
.El
.Sh SEE ALSO
.Lk https://wiki.openttd.org "Wiki"

48
docs/releasing_openttd.md Normal file
View File

@@ -0,0 +1,48 @@
# Releasing OpenTTD
This guide is for OpenTTD developers/maintainers, to release a new version of OpenTTD.
## Step 0: Branch or Backport
* If this is a beta version release, skip this step.
* If this is an RC1 (first Release Candidate) build, create a new branch `release/nn` where `nn` is the major version number, then apply changes similar to [PR#9573](https://github.com/OpenTTD/OpenTTD/pull/9573). You also need to forwardport the changelog, as in [PR#10113](https://github.com/OpenTTD/OpenTTD/pull/10113).
* Update CMakeLists.txt
* Add a new (empty) AI compatibility script in bin/ai/
* Add the new version to CheckAPIVersion in src/ai/ai_info.cpp + src/game/game_info.cpp
* Add the new version to src/script/api/ai_changelog.hpp + src/script/api/game_changelog.hpp
* Update the version of regression in bin/ai/regression/regression_info.nut
* Add a note to src/saveload/saveload.h about which savegame version is used in the branch.
* If this is a later RC or release build and the release branch already exists, you'll need to backport fixes and language from master to this branch, which were merged after the branch diverged from master. You can use these two helper scripts: https://github.com/OpenTTD/scripts/tree/main/backport
## Step 1: Prepare changelog documentation
1. Update the [changelog](../changelog.txt) with new changes since the last release.
* Changelog entries are typically PR titles, but can be edited to be more helpful without context.
* Don't include fixes to things which haven't previously been released (like fixes to features which are in the same changelog).
* Order the entries by importance: `Feature > Add > Change > Fix`, then numerically by PR number.
2. Create a changelog PR, get approval, and merge.
* For beta releases, target master, otherwise target the release branch.
## Step 2: Prepare website release announcement
1. Go to https://github.com/OpenTTD/website/new/main/_posts and write a new announcement post. See a [previous example](https://github.com/OpenTTD/website/pull/238) for a template.
2. Create a new branch for this post and open a PR for it.
3. Write announcement text for socials like Forum/Discord/Twitter/Reddit and include it in the PR.
4. Create a Steam news image for that post and include it in the PR.
5. Check the website post (preview link via checks page) and make corrections. We usually just use the GitHub web interface for this and squash the result later.
6. Get this PR approved, but do not merge yet.
## Step 3: Make the actual OpenTTD release
1. Go to https://github.com/OpenTTD/OpenTTD/releases/new and create a new tag matching the release number. For the body of the release, see any older release. "Set as a pre-release" for a beta or RC, set as latest for a real release.
2. Merge website PR.
3. Wait for the OpenTTD release checks to be complete.
4. Check that website links to the new release are working and correct, using the [staging website](https://www-staging.openttd.org/).
5. If this is a full release, ask orudge to update the Microsoft Store and TrueBrain to move the release from the "testing" to "default" branch on Steam.
## Step 4: Tell the world
1. Tag and create a website release to trigger the actions that update the website.
2. After the website is live, make announcements on social media. You may need to coordinate with other developers who can make posts on Twitter, Reddit, Steam, and GOG.

34
docs/symbol_server.md Normal file
View File

@@ -0,0 +1,34 @@
# OpenTTD's Symbol Server
For all official releases, OpenTTD collects the Breakpad Symbols (SYM-files) and Microsoft's Symbols (PDB-files), and publishes them on our own Symbol Server (https://symbols.openttd.org).
These symbol files are needed to analyze `crash.dmp` files as attached to issues by users.
A `crash.dmp` is created on Windows, Linux, and MacOS when a crash happens.
This combined with the `crash.log` should give a pretty good indication what was going on at the moment the game crashed.
## Analyzing a crash.dmp
### MSVC
In MSVC you can add the above URL as Symbol Server (and please enable MSVC's for all other libraries), allowing you to analyze `crash.dmp`.
Now simply open up the `crash.dmp`, and start debugging.
### All other platforms
The best tool to use is `minidump-stackwalk` as published in the Rust's cargo index:
```bash
cargo install minidump-stackwalk
```
For how to install Rust, please see [here](https://doc.rust-lang.org/cargo/getting-started/installation.html).
Now run the tool like:
```bash
minidump-stackwalk <crash.dmp> --symbols-url https://symbols.openttd.org
```
For convenience, the above Symbol Server also check with Mozilla's Symbol Server in case any other library but OpenTTD is requested.
This means files like `libc`, `kernel32.dll`, etc are all available on the above mentioned Symbol Server.

View File

@@ -17,6 +17,7 @@ set(BASESET_OTHER_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/openttd.grf
${CMAKE_CURRENT_SOURCE_DIR}/opntitle.dat
${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf
${CMAKE_CURRENT_SOURCE_DIR}/../openttd.32.bmp
)
# Done by the subdirectories, if nforenum / grfcodec is installed

Binary file not shown.

View File

@@ -1,43 +0,0 @@
// 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/>.
//
-1 * 0 0C "Flag graphics"
-1 * 3 05 14 24
-1 sprites/flags.png 8bpp 34 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 50 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 66 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 82 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 98 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 114 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 130 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 146 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 162 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 178 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 194 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 210 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 226 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 242 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 258 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 274 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 290 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 306 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 322 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 338 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 354 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 370 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 386 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 402 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 418 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 434 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 450 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 466 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 482 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 498 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 514 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 530 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 546 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 562 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 578 8 11 8 0 0 normal
-1 sprites/flags.png 8bpp 594 8 11 8 0 0 normal

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -5,233 +5,233 @@
//
-1 * 0 0C "Monospaced characters (Liberation Mono)"
-1 * 0 12 01 03 60 20 00
-1 sprites/mono.png 8bpp 10 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 30 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 50 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 70 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 30 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 10 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 50 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 10 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 70 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 70 7 13 0 -2 normal
-1 * 0 12 01 03 80 80 00
-1 sprites/mono.png 8bpp 10 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 90 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 110 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 130 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 25 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 40 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 55 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 70 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 85 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 100 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 115 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 130 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 145 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 160 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 175 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 190 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 205 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 220 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 235 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 250 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 265 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 280 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 295 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 310 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 325 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 340 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 355 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 385 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 400 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 415 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 430 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 445 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 460 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 475 150 7 13 0 0 normal
-1 sprites/mono.png 8bpp 10 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 90 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 10 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 110 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 10 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 130 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 10 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 25 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 40 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 55 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 70 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 85 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 100 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 115 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 130 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 145 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 160 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 175 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 190 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 205 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 220 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 235 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 250 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 265 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 280 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 295 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 310 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 325 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 340 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 355 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 370 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 385 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 400 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 415 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 430 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 445 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 460 150 7 13 0 -2 normal
-1 sprites/mono.png 8bpp 475 150 7 13 0 -2 normal
//U+0178 Latin Capital Letter Y With Diaeresis (only needed for mono as it is in the base set, but relocated by some code)
-1 * 0 12 01 03 01 78 01
-1 sprites/mono.png 8bpp 370 230 7 13 0 0 normal
-1 sprites/mono.png 8bpp 370 230 7 13 0 -2 normal

View File

@@ -4,10 +4,24 @@
// 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/>.
//
-1 * 0 0C "One way road graphics"
-1 * 3 05 09 06
-1 sprites/oneway.png 8bpp 34 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 66 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 98 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 130 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 162 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 194 8 24 16 -12 -8 normal
-1 * 3 05 09 12
-1 sprites/oneway.png 8bpp 34 8 24 16 -10 -9 normal
-1 sprites/oneway.png 8bpp 66 8 24 16 -13 -7 normal
-1 sprites/oneway.png 8bpp 98 8 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 130 8 24 16 -15 -10 normal
-1 sprites/oneway.png 8bpp 162 8 24 16 -12 -9 normal
-1 sprites/oneway.png 8bpp 194 8 24 16 -11 -8 normal
-1 sprites/oneway.png 8bpp 34 40 24 16 -13 -10 normal
-1 sprites/oneway.png 8bpp 66 40 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 98 40 24 16 -12 -9 normal
-1 sprites/oneway.png 8bpp 130 40 24 16 -11 -8 normal
-1 sprites/oneway.png 8bpp 162 40 24 16 -9 -10 normal
-1 sprites/oneway.png 8bpp 194 40 24 16 -10 -9 normal
-1 sprites/oneway.png 8bpp 34 72 24 16 -8 -11 normal
-1 sprites/oneway.png 8bpp 66 72 24 16 -11 -5 normal
-1 sprites/oneway.png 8bpp 98 72 24 16 -12 -8 normal
-1 sprites/oneway.png 8bpp 130 72 24 16 -12 -5 normal
-1 sprites/oneway.png 8bpp 162 72 24 16 -14 -10 normal
-1 sprites/oneway.png 8bpp 194 72 24 16 -12 -8 normal

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -92,7 +92,6 @@
#include "roadstops.nfo"
#include "aqueduct.nfo"
#include "autorail.nfo"
#include "flags.nfo"
#include "openttdgui.nfo"
#include "airport_preview.nfo"
#include "chars.nfo"

Binary file not shown.

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