summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-02Codechange: using "until" in function names can be confusingPatric Stout
IsSavegameVersionUntil() did a [0, N] check, not [0, N) as the name suggests. Until can be a confusing word, where people consider it to be including the upperbound. Dictionary states it means "before", excluding the upperbound. There are long debates about who is right. So, simply remove away from this ambiguity, and call it "before" and "before or at". This makes the world easier for everyone.
2021-07-02Doc: explain the binary structure of our (new) savegamesPatric Stout
2021-07-02Cleanup: remove SLE_NULL and friendsPatric Stout
We no longer need them. If you want to remove a field .. just remove it! Because of the headers in the savegame, on loading, it will do the right thing and skip the field. Do remember to bump the savegame version, as otherwise older clients can still load the game, but will reset the field you have removed .. that might be unintentially.
2021-07-02Add: store headers for chunks with SL_STRUCTLISTPatric Stout
2021-07-02Add: store headers for most savegame chunksPatric Stout
When a header is added, the chunk changes from CH_ARRAY type to CH_TABLE type.
2021-07-02Feature: framework to make savegames self-descriptivePatric Stout
We won't be able to make it fully self-descriptive (looking at you MAP-chunks), but anything else can. With this framework, we can add headers for each chunk explaining how each chunk looks like in detail. They also will all be tables, making it a lot easier to read in external tooling, and opening the way to consider a database (like SQLite) to use as savegame format. Lastly, with the headers in the savegame, you can freely add fields without needing a savegame version bump; older versions of OpenTTD will simply ignore the new field. This also means we can remove all the SLE_CONDNULL, as they are irrelevant. The next few commits will start using this framework.
2021-07-02Update: Translations from eintstranslators
english (us): 1 change by 2TallTyler german: 1 change by Wuzzy2 dutch: 1 change by Afoklala
2021-07-02Change: move sensitive information to secrets.cfg and private information to ↵Patric Stout
private.cfg We often ask people for their openttd.cfg, which now includes their passwords, usernames, etc. It is easy for people to overlook this, unwillingly sharing information they shouldn't. By splitting this information over either private.cfg or secrets.cfg, we make it more obvious they shouldn't be sharing those files, and hint to what is inside them.
2021-07-02Codechange: simplify SaveVersionInConfig()Patric Stout
Clearly someone really wanted to generalize the function, but in reality it makes it a lot longer than needed. Let's keep it simple.
2021-07-02Codechange: C++-ify the usage of IniFile in settings.cppPatric Stout
Instead of creating the object on heap and use a pointer, create the object on stack and use a guaranteed-not-null pointer. The size of IniFile doesn't warrent the forcing to heap. Additionally, use a subclass instead of a function to do some initial bookkeeping on an IniFile meant to read a configuration.
2021-07-02Codechange: move network-related settings out of settings.iniPatric Stout
This to prepare the code to split up network-related settings into private / secrets / generic.
2021-07-01Codechange: use a contructor for NewsItem to set the valuesRubidium
And use std::unique_ptr to manage the memory of the allocated data
2021-07-01Codechange: use the constructor for CompanyNewsItem to fill the data instead ↵rubidium42
of a separate function
2021-07-01Codechange: create a type for the "free_data" of NewsItems and (de)allocate ↵rubidium42
it with new and delete
2021-06-30Update: Translations from eintstranslators
finnish: 1 change by hpiirai
2021-06-29Fix f7e390bd: freeaddrinfo() is not guaranteed to handle a nullptr graceful ↵Patric Stout
(#9404)
2021-06-29Change: [strgen] Change warnings for translations into infos (#9406)Loïc Guilloux
Unless invoked with -w, --warning ("print a warning for any untranslated strings") or -t, --todo ("replace any untranslated strings with '<TODO>'"). Eints normally fixes the warnings after a Pull Request, so it is not really useful information for the developer to see as a warning.
2021-06-29Update: Translations from eintstranslators
swedish: 27 changes by joeax910 korean: 4 changes by telk5093 russian: 1 change by Ln-Wolf portuguese: 1 change by azulcosta
2021-06-28Update: Translations from eintstranslators
swedish: 1 change by joeax910
2021-06-28Add: Show the number of clients and companies in the online players window ↵TELK
(#9376)
2021-06-28Change: [Emscripten] set default scrolling mode to non-pointer-locking (#9191)embeddedt
2021-06-28Fix ea9715d: not all setting values were clamped properly (#9401)SamuXarick
2021-06-27Update: Translations from eintstranslators
swedish: 6 changes by joeax910 finnish: 1 change by hpiirai catalan: 9 changes by J0anJosep
2021-06-27Fix #9402, 2e136285: Crash when founding town using default name (#9403)Loïc Guilloux
2021-06-26Update: Translations from eintstranslators
swedish: 1 change by joeax910
2021-06-26Fix #9386: compilers failing to compile with LTO by using variants instead ↵rubidium42
of new + unique_ptr With std::variant all memory can be figured out at compile time, so the compiler needs to keep track of fewer elements. It also saves out a unique_ptr and its memory management, over a slight impact for resolving a setting.
2021-06-26Codechange: use C-style strings instread of std::string in the SettingDesc ↵rubidium42
constructor This as using std::string causes much more variables to be tracked, potentially causing problemes for certain compilers in certain situations
2021-06-26Codechange: introduce helper to convert from the iterated type to the actual ↵rubidium42
SettingDesc
2021-06-26Codechange: instead of "naked" initializer lists, declare the type in the ↵rubidium42
saveload macros This to help variant's constructor to be able to resolve the constructor of the setting
2021-06-26Codechange: remove overloading on UpdateServiceIntervalrubidium42
One UpdateServiceInterval has two parameters to update the service interval for a vehicle type, the other for all vehicle types at once. Rename the latter to help with function resolution for the introduction of variants.
2021-06-26Codechange: [Network] Remove overload on NetworkValidateClientNamerubidium42
Rename the zero-parameter NetworkValidateClientName to NetworkValidateOurClientName to make it clearer it is performed on our client name, and to make it a non-overloaded function to aid with the variant being added a few commits later
2021-06-26Change: prevent palette updates during copying to the video driverPatric Stout
ThreadSanitizer rightfully notices that the game-thread could update the palette while the draw-thread is copying it for local use. The odds of this are very small, but nevertheless, it does carry a very good point. It wouldn't hurt the application in any way, but it might cause visual glitches on the screen.
2021-06-26Codechange: use _cur_palette the same in all the driversPatric Stout
It was a bit of a mixed bag. With this change, gfx.cpp is in control who accesses _cur_palette from the video-drivers.
2021-06-26Change: [GitHub] use an issue form to let people fill in bug report / ↵Patric Stout
crashes (#9400)
2021-06-25Update: Translations from eintstranslators
swedish: 1 change by joeax910 dutch: 9 changes by Afoklala
2021-06-22Codechange: [OSX] Remove old code that has no effect on current OSX versions.Michael Lutz
2021-06-22Codechange: [OSX] We use OpenGL even if Apple doesn't like it.Michael Lutz
2021-06-22Codechange: [OSX] Use more exact enum names where introduced with the 10.12 SDK.Michael Lutz
The enum values still have the exact same numerical values, but the 10.12 SDK introduced more explicit names (e.g. like NSEventTypeApplicationDefined instead of NSApplicationDefined) for several enum constants. Use them when available.
2021-06-22Update: Translations from eintstranslators
english (us): 9 changes by 2TallTyler
2021-06-20Update: Translations from eintstranslators
swedish: 1 change by kustridaren korean: 1 change by telk5093
2021-06-19Fix #8169: nullptr dereference when autoreplacing vehicle with no orders (#9387)Jonathan G Rennison
2021-06-19Update: Translations from eintstranslators
swedish: 12 changes by joeax910
2021-06-17Fix: Wrong cargo line position in IndustryCargo window. (#9383)PeterN
Resolved by changing calculation to determine the offset based on centring the cargo lines in the available space.
2021-06-18Fix #9358: Don't skip empty files in tar (#9367)SamuXarick
2021-06-17Fix: don't propagate shift/ctrl state till next game-tick (#9381)Patric Stout
When the game-loop is very slow, it was easily possible to start the loop with _shift_pressed being false, but end with _shift_pressed being true. This doesn't hurt the game as such, but for the user this can be very weird: I pressed "Buy Vehicle", pressed shift a bit later, and I still get a cost indication.
2021-06-17Fix: on startup, NewGRF scan could case race-condition (#9382)Patric Stout
Creating a thread was not thread-safe. The irony. The video-driver has a function GameLoopPause() which first checks if the thread is the game-thread or not. For this it needs access to this->game_thread. This variable is set in StartNewThread(). However, due to timing, it is well possible GameLoopPause() is called from the thread well before this->game_thread is assigned. And so we have a race-condition! Simply solve this by preventing a thread to start till we are done with our bookkeeping.
2021-06-17Fix: thread safety issue during exiting the game (#9380)Patric Stout
_exit_game is read by the draw-thread to know when to exit, but most of the time written by the game-thread.
2021-06-17Cleanup: simplify some boolean expressionsRubidium
2021-06-17Cleanup: use true/false instead of 1/0 where applicableRubidium
2021-06-17Cleanup: use nullptr instead of 0 or NULLRubidium