summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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
2021-06-17Cleanup: [Squirrel] Use nullptr instead of 0 or NULLRubidium
2021-06-17Cleanup: [Script] Use nullptr instead of 0 or NULLRubidium
2021-06-17Cleanup: remove lines from station_base.h that are already included in ↵Rubidium
includes base_station_base.h
2021-06-15Update: Translations from eintstranslators
spanish: 3 changes by MontyMontana hindi: 28 changes by ritwikraghav14
2021-06-15Codechange: mark chunks that are not stored as CH_READONLYPatric Stout
This makes it easier to spot chunks that have a save_proc that is a nullptr, but also prevents confusion, where it looks like the CH_ type of a chunk has influence on how it is being read. It is not, it is only used for saving.
2021-06-15Change: rework GLOG chunk to be more like the restPatric Stout
Basically it is very similar to Vehicles, where there first is a type field, followed by data of that type. So this commit makes it looks like how Vehicles solved that. This removes a lot of custom "keeping track of length" stuff.
2021-06-15Change: rework several CH_RIFF chunks to use CH_ARRAY insteadPatric Stout
This adds two byte extra to those chunks, and might feel a bit silly at first. But in later changes we will prefix CH_ARRAY with a table header, and then this change shines. Without this, we could still add headers to these chunks, but any external reader wouldn't know if the CH_RIFF has them or not. This way is much more practical, as they are now more like any other chunk.
2021-06-15Codechange: add the ability to save/load a std::vectorPatric Stout
std::vector<bool> is not possible, as .. that is a nice special case in C++. This new type will be used in next commit.
2021-06-15Change: prefix SL_ARR with the length of the arrayPatric Stout
This means that during loading we can validate that what is saved is also that what is expected. Additionally, this makes all list types similar to how they are stored on disk: First a gamma to indicate length, followed by the data. The size still depends on the type.
2021-06-15Codechange: make it more obvious SlArray supports SLE_VAR_NULLPatric Stout
In the end, the code was already doing the right thing, but a few functions deep, and not really obvious. When validating what objects can handle SLE_VAR_NULL, it is nicer to just have this obvious.
2021-06-15Codechange: use SL_NULL if you want to store null-bytes or load to nothingPatric Stout
Using SL_ARR for this gives us a bit of trouble later on, where we add a length-field to SL_ARR. This of course is not the intention of SLE_CONDNULL. So better seperate it.
2021-06-15Change: switch SL_DEQUE and SL_REFLIST length field to a gammaPatric Stout
The current SaveLoad is a bit inconsistent how long a length field is. Sometimes it is a 32bit, sometimes a gamma. Make it consistent across the board by making them all gammas.
2021-06-15Change: indicate in the savegame if a SL_STRUCT contains any dataPatric Stout
This helps external tooling to understand if a SL_STRUCT should be skipped when reading. Basically, this transforms an SL_STRUCT into a SL_STRUCTLIST with either 0 or 1 length.
2021-06-15Change: store length of SL_STRUCTLIST in the savegamePatric Stout
This wasn't consistently done, and often variables were used that were read by an earlier blob. By moving it next to the struct itself, the code becomes a bit more self-contained and easier to read. Additionally, this allows for external tooling to know how many structs to expect, instead of having to know where to find the length-field or a hard-coded value that can change at any moment.
2021-06-15Fix: you could join an AI company in multiplayer via the GUI (#9369)SamuXarick
2021-06-15Cleanup: remove some unneeded c_str() callsRubidium
2021-06-15Codechange: [Network] Use std::string instead of char[] for the name of the ↵rubidium42
file that is downloading
2021-06-15Codechange: [Network] Use std::string for the client name in the network serverrubidium42
2021-06-15Codechange: [Network] Use string_view for network compatability checkrubidium42
2021-06-15Codechange: [Network] Simplify constructing the HTTP request with fmtrubidium42
2021-06-15Codechange: [Network] Let NetworkError return its std::string instead of a ↵rubidium42
C-string
2021-06-15Codechange: [Network] Make hostname/client IP return strings instead of a ↵rubidium42
C-string
2021-06-15Codechange: [Network] Let IsInNetmask use std::stringrubidium42
2021-06-15Codechange: [Network] Simplify formatting of network addresses to stringrubidium42
2021-06-14Fix: [Network] Determining GetNetworkRevisionString could overflow and ↵rubidium42
underflow its buffer Tagged releases are not affected
2021-06-14Codechange: use SLE_STRUCT(LIST) for Linkgraph chunksPatric Stout
2021-06-14Codechange: move Save/Load functions of same chunk next to each otherPatric Stout
2021-06-14Codechange: use SLE_STRUCT(LIST) for GameScript chunksPatric Stout
2021-06-14Codechange: use as much of STNN code for STNS as possiblePatric Stout
There was a lot of code duplication for no real reason. Now with SLEG_STRUCT support, we can just re-use the code, hopefully making it easier for future-us to make changes to this, without breaking everything for old games.
2021-06-14Codechange: use SLE_STRUCT(LIST) for Station chunksPatric Stout
2021-06-14Codechange: use SLE_STRUCT(LIST) for Company chunksPatric Stout
2021-06-14Codechange: use SLE_STRUCT(LIST) for Town chunksPatric Stout
2021-06-14Codechange: remove the special station/vehicle code from SaveLoadPatric Stout
With the new SLEG_STRUCT it is much easier to embed a struct in a struct, where the sub-struct has limitations on when it is being used. This makes both the code easier to read (less magic) and avoids the SaveLoad needing to know all these things about Stations and Vehicles.
2021-06-14Codechange: ability to store structs and list of structs in savegamesPatric Stout
The commits following this will use this new functionality. Currently, a few places do this manually. This has as drawback that the Save() and Load() code need to be in sync, and that any change can result in (old) savegames no longer loading. In general, it is annoying code to maintain. By putting everything in a description table, and use that for both Save() and Load(), it becomes easier to see what is going on, and hopefully less likely for people to make mistakes.
2021-06-14Update: Translations from eintstranslators
spanish (mexican): 9 changes by absay portuguese (brazilian): 9 changes by Vimerum
2021-06-14Cleanup: nested_array should not be accessed directly.Peter Nelson
Replace accesses with GetWidget() as documented.
2021-06-13Fix a99ac62: fmt's include of cassert breaks our assert logicrubidium42
2021-06-13Update: Translations from eintstranslators
vietnamese: 2 changes by KhoiCanDev german: 9 changes by Wuzzy2 finnish: 1 change by hpiirai portuguese: 9 changes by azulcosta