Patric Stout
e775ef2b70
Fix: initialize _switch_mode_time so crash-logs before first game have a realistic time ( #12184 )
2024-02-27 02:41:59 +01:00
Rubidium
4b372b6050
Codechange: use std::shared_ptr to manage saveload filters instead of manually trying to avoid double frees
2024-02-03 21:38:33 +01:00
Patric Stout
0dfba564ab
Add: "restart current" console command to regenerate the map based on current settings ( #11963 )
2024-02-03 14:48:54 +00:00
Patric Stout
a0c480c4e4
Change: "restart" now uses your newgame settings, where "reload" uses the current settings ( #11962 )
2024-02-03 10:19:47 +00:00
Patric Stout
7acf78964f
Remove: "generation_seed" from config, as it was a write-only value ( #11927 )
2024-01-30 17:02:35 +00:00
Patric Stout
4024bb5554
Fix #11910 : use economy timer for dmp_cmds files ( #11925 )
2024-01-29 21:58:22 +00:00
Tyler Trahan
28716548d2
Feature: Setting to automatically restart server based on hours played ( #11142 )
2024-01-26 10:25:25 -05:00
Tyler Trahan
21581b6ab3
Feature: Setting for minutes per calendar year ( #11428 )
2024-01-23 18:33:54 -05:00
Patric Stout
090616b4c9
Add: allow loading heightmaps from command-line ( #11870 )
...
If you want to load a file from tar, you have to give the file
inside the tar in order for it to work:
<tar-file>/<dir-in-tar>/<file>.png
2024-01-22 22:35:25 +00:00
Patric Stout
11d4f1b2bd
Fix d3b2a576: LOAD_HEIGHTMAP / LOAD_SCENARIO are Scenario Editor modes ( #11868 )
2024-01-22 21:28:00 +00:00
Patric Stout
d3b2a576de
Feature: Plugin framework for Social Integration with Steam, Discord, GOG, etc ( #11628 )
2024-01-22 19:22:45 +00:00
Tyler Trahan
735abfe111
Codechange: Split dates and timers into Economy and Calendar time ( #10700 )
2024-01-22 09:04:34 -05:00
SamuXarick
6588680ccc
Revert #6923 : start_date parameter is no longer in use
...
There was an issue with the start_date parameter for AIs. It did not let Random AIs to have their configure button clickable once the game has started, and this was due to the start_date not being pushed into the config.
But now that start_date is no longer in use since #10653 , this workaround can be safely removed.
2024-01-21 18:49:08 +01:00
Peter Nelson
c0ab436077
Codechange: Store Colours in Colours type. ( #11625 )
...
This reduces casts, some magic numbers, and introduces a bit of type-safety.
2024-01-21 13:23:04 +00:00
Rubidium
2d77cf9c80
Codechange: replace StrStartsWith/StrEndsWith with starts_with and ends_with
2024-01-17 19:48:22 +01:00
Rubidium
564441e822
Remove: Debug redirect over network
...
It does not work for dedicated servers because upon starting the process to
resolve the address to redirect to gets killed. Also with all the async going
on in the network code, the debug redirection will start very late in the
process.
2024-01-14 22:14:31 +01:00
Peter Nelson
54d45a6047
Codechange: Don't keep autosave_interval in std::chrono::minutes.
...
This variable is saved as a setting which requires the variable type to be known, but std::chrono::minutes may vary depending on system type.
Instead, keep as uint32_t and convert to std::chrono::minutes only when setting the timer.
2023-12-09 08:13:03 +00:00
rubidium42
27082f9efa
Codechange: pass std::string references to OpenBrowser
2023-11-29 02:02:30 +01:00
Tyler Trahan
1f41e773d6
Codechange: Use consistent name for bay road stops
...
As of #10494 , this is how we describe original dead-end road stops.
2023-11-28 14:24:33 -05:00
Peter Nelson
ab535c0a86
Codechange: Add base() method to StrongType to allow access to the base type without casting. ( #11445 )
...
This removes the ability to explicitly cast to the base type, but the requirement
to use .base() means the conversion is still explicit.
2023-11-06 20:29:35 +00:00
frosch
de3f29d7b2
Add: store base graphics parameters in openttd.cfg.
2023-10-31 01:41:50 +01:00
frosch
0b7ecf6102
Codechange: use the shortname as unique id to identify the base graphics in openttd.cfg.
2023-10-31 01:41:50 +01:00
frosch
97df27e41f
Codechange: Store base graphics settings in a separate section in openttd.cfg.
2023-10-31 01:41:50 +01:00
Peter Nelson
062c19830b
Fix: OpenTTD can fail to exit on an error due to mutex locks in threads. ( #11398 )
2023-10-28 16:08:08 +01:00
Peter Nelson
9602de474d
Codechange: Use iterators and/or range-for on cargo related loops.
2023-10-19 17:03:25 +01:00
Peter Nelson
49dae08a3b
Codechange: Add missing override specifiers.
2023-09-25 21:27:45 +01:00
Tyler Trahan
77173a6a10
Codechange: Move date consts and functions to CalendarTime and TimerGameCalendar classes
2023-09-10 08:40:25 -04:00
glx22
3d1c4a8589
Codechange: [Emscripten] Improve syncfs synchronisation on exit/abort
2023-08-31 12:59:12 +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
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
Patric Stout
299570b2c1
Codechange: make TimerGameCalendar Date and Year types strongly typed ( #10761 )
2023-08-12 18:14:21 +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
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
Loïc Guilloux
55e3dd9409
Cleanup 6298b96: Left-over function declaration ( #11072 )
2023-06-25 15:51:15 +00: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
Rubidium
d4c2043294
Codechange: remove a number of unneeded c_str() calls
2023-06-15 22:14:45 +02:00
Rubidium
4de9b8a988
Codechange: use fmt::format to create desync dump savegames
2023-06-07 08:02:58 +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
Rubidium
37a3fc4df3
Codechange: replace strstr with more appropriate function
2023-06-02 17:11:08 +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
Rubidium
07860e67e2
Codechange: use fmt::format_to to format the help message
2023-05-20 16:50:03 +02:00
Rubidium
acec34a0fe
Cleanup: remove MD5SumToString in lieu of FormatArrayAsHex
2023-05-19 11:24:44 +02:00
Peter Nelson
83f2ad500e
Codechange: stdarg.h include not needed as cstdarg is included.
2023-05-17 10:14:41 +01: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
Rubidium
9f2fc860ad
Codechange: use std::optional<std::string> for changing the script over char *
2023-05-14 22:54:10 +02:00
Rubidium
a312a6c1b2
Codechange: make md5sumToString std::string compatible
2023-05-04 23:23:32 +02: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
Rubidium
1f3b7e2efd
Codechange: use std::string instead of stredup for saveload error messages
2023-05-01 16:23:24 +02:00
Rubidium
ee723f26ba
Codechange: Make FileToSaveLoad's title std::string and simplify assignments
2023-04-29 13:23:34 +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
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
Charles Pigott
80bd5ad727
Codechange: Use std::strto* variants everywhere ( #10720 )
2023-04-26 12:56:14 +01:00
Tyler Trahan
930f0a16d8
Codechange: Define Date/Year/Month/Day within TimerGameCalendar class
2023-04-26 07:14:03 -04:00
Rubidium
f74e26ca7e
Codechange: replace error/usererror printf variant with fmt variant and rename
2023-04-25 17:55:09 +02: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
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
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
Patric Stout
3ebc7ad16e
Codechange: migrate all game-time-related timers to the new framework
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
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
Rubidium
4e65ec1dc4
Codechange: do not declare functions in blocks
2023-01-29 20:28:45 +01:00
rubidium42
6ba55e663e
Codechange: do not hide variables with other variables
2023-01-29 07:21:34 +01:00
Peter Nelson
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
Jonathan G Rennison
0fae0599b7
Fix: Data race on effect volume setting with mixer thread
2022-11-11 23:48:24 +01:00
krysclarke
21cea308f9
Codechange: Move Sound Driver parameter name listings ( #10127 )
2022-11-05 15:42:20 +01:00
Charles Pigott
9059215b3b
Fix #10073 : Stop truncating output of list_ai and friends commands
2022-10-10 13:42:07 +01:00
Peter Nelson
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
Niels Martin Hansen
c6953f13e4
Fix #9940 : Print debuglevel parse errors to console when changed from console
2022-08-27 09:17:09 +02: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
Niels Martin Hansen
0dce7bf85d
Add: Commandline option to skip NewGRF scanning
2022-05-07 10:17:26 +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
Michael Lutz
13528bfcd0
Codechange: Un-bitstuff all remaining commands.
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
549caca39c
Codechange: Move command arguments to the back of the networked command function calls.
2021-12-16 22:28:32 +01:00
Rubidium
92559e6f3a
Fix #9388 : thread unsafe use of NetworkAdminConsole/IConsolePrint
2021-09-01 22:40:44 +02:00
Patric Stout
579f393374
Add: open Online Players GUI on starting/joining a server ( #9479 )
2021-08-15 00:17:10 +02:00
Loïc Guilloux
460991ecf4
Feature: Persistant rotation of numbered auto/netsave after restart ( #9397 )
...
It was always starting from 0 on openttd restart.
Now the most recent auto/netsave number will be used as a base to generate the next filename.
2021-07-17 12:48:35 +02:00
glx22
afea5e85ae
Fix 433f74e: GetString() requires a language pack
2021-07-16 23:01:08 +02:00
Stephan
a70aa5df49
Add #9188 : netsave now keeps multiple version around, similar to autosave ( #9395 )
2021-07-09 21:44:02 +02:00
rubidium42
55a11710a6
Codechange: convert printf DEBUG statements to fmt Debug statements
2021-06-13 12:45:45 +02:00
rubidium42
e588923bff
Codechange: add std::string accepting SetDParamStr to ErrorMessageData
2021-06-13 10:26:58 +02:00
Patric Stout
ed3946e295
Add: '-X' option to ignore global folders in the search path ( #9341 )
...
This is extreme useful for automated testing. Without this, OpenTTD
will always look in your personal-dir (like ~/.local/share/openttd
or %USER%\Documents\OpenTTD). For most users this is exactly what
we want, that there is a shared place for all their files.
However, for automated testing this is rather annoying, as your
local development files influence the automated test. As such,
'-X' counters this, and only gives the local folders. This is
especially useful in combination with '-x' and '-c'.
2021-06-10 23:13:34 +02:00
glx22
5799402f7a
Codechange: Rename window related DeleteXXX to match new behaviour
2021-05-29 21:08:25 +02:00
rubidium42
44ca7d9377
Change: Use gender-neutral pronouns
2021-05-15 10:16:48 +02:00
rubidium42
297d6e20bf
Codechange: [Network] Pass passwords as std::string to the network code
2021-05-14 23:22:04 +02:00
rubidium42
c73d64adf9
Codechange: move passwords in settings to std::string
2021-05-13 23:13:17 +02:00
glx22
38c97e1492
Codechange: Replace TILE_AREA_LOOP with range-based for loops
2021-05-13 00:13:54 +02:00
Patric Stout
b136e65cf9
Change: reworked the debug levels for network facility ( #9251 )
...
It now follows very simple rules:
0 - Fatal, user should know about this
1 - Error, but we are recovering
2 - Warning, wrong but okay if you don't know
3 - Info, information you might care about
4 -
5 - Debug #1 - High level debug messages
6 - Debug #2 - Low level debug messages
7 - Trace information
2021-05-12 16:34:02 +02:00
Rubidium
fa6abe1646
Cleanup: remove the old FIO slot functions
2021-05-08 12:39:34 +02:00
William Davis
881e1da51d
Change: Use gender-neutral pronouns in console command messages (and comments) ( #9203 )
2021-05-08 11:02:30 +01:00
rubidium42
3d91eee919
Codechange: [Network] Move connection string parsing away from C-strings
2021-05-06 20:33:26 +02:00
rubidium42
e7581fd42d
Change: [Network] Update server's NetworkServerGameInfo only when needed
...
Split the updating in a "static" version that only needs to be called when a new map is loaded or some settings are changed, and a "dynamic" version that updates everything that changes regularly such as the current game date or the number of spectators.
2021-05-05 21:01:23 +02:00
rubidium42
05394d5216
Fix #6598 : Prevent invalid memory accesses when abandoning a join from within a network game
...
One could join a network game from within an already running network game. This would call a NetworkDisconnect, but keeps the UI alive. If, during that process the join is aborted, e.g. by cancelling on a password dialog, you would still be in your network game but also get shown the server list.
Solve all the underlying problems by falling back to the main UI when (re)connecting to a(nother) server.
2021-05-01 18:30:08 +02:00
rubidium42
a61696d6c5
Change: [Network] Encapsulate logic about the connection string to the network code ( #23 )
2021-04-29 20:12:11 +02:00
Patric Stout
be37a2cab8
Codechange: use NetworkAddress instead of two host/port variables where possible
...
This also means we no longer need last_host/last_port, but can
just use a single last_joined setting.
2021-04-29 20:12:11 +02:00