Commit Graph

20675 Commits

Author SHA1 Message Date
Peter Nelson
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
Peter Nelson
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
Peter Nelson
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
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
PeterN
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
Peter Nelson
d68c4bbd2f Change: Use iterator when drawing industry cargo window. 2023-05-09 17:39:12 +01:00
Peter Nelson
cccf4953f7 Fix: Incorrect padding on industry cargo window. 2023-05-09 17:39:12 +01:00
PeterN
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
PeterN
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
Peter Nelson
878c5d8d85 Codechange: Use SetPosition() to clamp after changing count/capacity. 2023-05-07 20:25:44 +01:00
Peter Nelson
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
Peter Nelson
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
PeterN
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
PeterN
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
PeterN
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
PeterN
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
Peter Nelson
0b72297d57 Feature: Increase number of stations/roadstops per NewGRF. 2023-05-05 07:08:40 +01:00
Peter Nelson
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
Peter Nelson
d6f35a9fd6 Change: Add placeholders for unimplemented NewGRF station properties. 2023-05-05 07:08:40 +01:00
Peter Nelson
7a86615007 Feature: Remove limit of objects per NewGRF. 2023-05-05 07:08:40 +01:00
Peter Nelson
912eb68981 Change: Extend entity override manager and station spec lists to support 16 bit IDs. 2023-05-05 07:08:40 +01:00
Peter Nelson
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
Peter Nelson
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
Peter Nelson
61407840c6 Codechange: Remove STR_BLACK_RAW_STRING. 2023-05-05 07:07:54 +01:00
Peter Nelson
0880616851 Codechange: Remove various STRING strings. 2023-05-05 07:07:54 +01:00
Peter Nelson
4767641c8c Codechange: Remove various INT strings. 2023-05-05 07:07:54 +01:00
Peter Nelson
d5fb9e7dc6 Codechange: Remove various DATE_LONG strings. 2023-05-05 07:07:54 +01:00
Peter Nelson
a2d7642195 Codechange: Remove STR_COMPANY_MONEY. 2023-05-05 07:07:54 +01:00
Peter Nelson
f1d0a26324 Codechange: Remove STR_TINY_BLACK_DECIMAL. 2023-05-05 07:07:54 +01:00
Peter Nelson
e18f688db5 Codechange: Remove various COMMA strings. 2023-05-05 07:07:54 +01:00
Peter Nelson
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
Peter Nelson
7ccdefa1c1 Change: Increase vehicle random data from 8 to 16 bits. 2023-05-04 21:42:28 +01:00
Peter Nelson
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
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
Peter Nelson
39eff18754 Codechange: Use std::vector for gamelog GRFConfig comparisons. 2023-05-02 19:47:55 +01:00
Peter Nelson
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
PeterN
cc44aa7438
Change: Split Game options into General, Graphics and Sound tabs. (#10674) 2023-05-01 12:58:22 +01:00
PeterN
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
Peter Nelson
a816dd1d48 Change: Remove {TINY_FONT} from cargo abbreviation strings for other translations. 2023-04-30 11:47:53 +01:00
Peter Nelson
310b3a67ad Change: Remove {TINY_FONT} from cargo abbreviation strings for English. 2023-04-30 11:47:53 +01:00
Peter Nelson
0acc57583b Fix: Force cargo abbreviation to small font in station list. 2023-04-30 11:47:53 +01:00
Peter Nelson
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
Peter Nelson
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
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
Peter Nelson
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
Peter Nelson
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
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
PeterN
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
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
Peter Nelson
20d2558f1b Fix: Clear church/stadium flags when copying house substitute specs. 2023-04-26 06:46:07 +01:00
Peter Nelson
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
PeterN
7535eb65e2
Codechange: Use vector instead of mallloc/free for Action 6 data. (#10713) 2023-04-26 06:45:11 +01:00
PeterN
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
Peter Nelson
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
Peter Nelson
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
Peter Nelson
e8df28d7f3 Add: parameter for ReInit() to reposition window to default. 2023-04-25 13:27:22 +01:00
Peter Nelson
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
Peter Nelson
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
Peter Nelson
9f26e74e1e Codechange: Rename item_t to Item. 2023-04-24 09:17:37 +01:00
Peter Nelson
c3cea45ebc Codechange: Rename height_t/amplitude_t to Height/Amplitude. 2023-04-24 09:17:37 +01:00
Peter Nelson
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
PeterN
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
Peter Nelson
370a8d77a4 Codechange: Use simple assignment to assign specs. 2023-04-23 15:58:27 +01:00
Peter Nelson
087654501b Codechange: Initialise specs with std::fill/std::copy instead of memset/memcpy. 2023-04-23 15:58:27 +01:00
Peter Nelson
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
PeterN
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
PeterN
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
PeterN
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
PeterN
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
PeterN
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
PeterN
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
Peter Nelson
7b0797d1cd Codechange: Use unique ptrs for NewGRF specs. 2023-04-16 15:09:10 +01:00
Peter Nelson
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
Peter Nelson
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
Peter Nelson
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
Peter Nelson
5bc9d00735 Cleanup: Let GetStringBoundingBox deal with buffer. 2023-04-13 20:57:47 +01:00
Peter Nelson
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
PeterN
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
PeterN
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
Peter Nelson
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
Peter Nelson
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
PeterN
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
PeterN
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
PeterN
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
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
PeterN
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
PeterN
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
Peter Nelson
47e12a8790 Codechange: Check that CompanyMask fits into 16 bits during compilation. 2023-04-07 22:09:55 +01:00
Peter Nelson
5199881a8d Codechange: Use correct type for linkgraph company mask. 2023-04-07 22:09:55 +01:00
Peter Nelson
65e0b0dcb7 Codechange: Be consistent with how company masks are set to all. 2023-04-07 22:09:55 +01:00
Peter Nelson
08977828cc Fix: Check ID for name is within bounds. 2023-04-07 22:09:28 +01:00
Peter Nelson
cd6c04a663 Fix: Check station ID is within bounds when copying layouts. 2023-04-07 22:09:28 +01:00
Peter Nelson
8361cf5a73 Fix: Check sprite group mapping ID is within bounds of feature. 2023-04-07 22:09:28 +01:00
Peter Nelson
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