summaryrefslogtreecommitdiff
path: root/src/saveload/saveload.h
AgeCommit message (Collapse)Author
2021-02-13Codechange: Don't use cpp_offsetof in the save/load code.Michael Lutz
Many of the member variables that are used in save/load are inside types that are not standard layout types. Using pointer arithmetics to determine addresses of members inside types that are not standard layout is generally undefined behaviour. If we'd use C++17, it is conditionally supported, which means each compiler may or may not support it. And even then using it for individual array elements is syntactically not supported the the standard offsetof function. Unfortunately, the trickery employed for saving linkgraph settings causes quite some clutter in the settings ini files.
2021-01-22Feature: Allow GameScripts to add additional text to Industry view windowdP
2021-01-18Fix #8589, 653e7fa548: Motion counter is NewGRF-visible but not saved, ↵Michael Lutz
leading to desyncs. (#8591)
2020-12-27Codechange: Even more std::string usage in file IO.Michael Lutz
2020-12-27Codechange: Convert some more FIO functions to take std::string.Michael Lutz
2020-12-27Cleanup: Remove unused ChunkType flag CH_AUTO_LENGTHcirdan
CH_AUTO_LENGTH is no longer used anywhere, so remove all code that depends on it.
2020-12-22Feature: Set exclusive access to industry from GS (#8115)Pavel Stupnikov
2020-12-22Feature: Influence industry production changes from GS (#7912)Niels Martin Hansen
2020-12-22Fix: next 67 savegame versions are used in PatchPacks; skip them (#8411)Patric Stout
Various of PatchPacks (Spring 2013, Joker, ChillPP) used versions slightly higher than ours. Of course, as time went by, this caught up with us, and we are now almost pushing a new version that would conflict with them. To avoid users creating unneeded issues about "why can I not load my savegame", lets be ahead of the curve and flat-out refuse to load them. Version-wise, this is totally fine. We have ~32k versions to go before we run out (0x8000 is masked by JGRPP; we should avoid using that). At the rate we bump savegames, this is not going to happen in any sane reality.
2020-12-06Fix: do not add an offset to a nullptrPatric Stout
This is, by specs, undefined behaviour. See https://reviews.llvm.org/D67122 In cases where this is done, optimizations done by LLVM can generate code that causes crashes. GetVariableAddress() had two (legit) ways this could happen: - For SaveLoad set to global - For SaveLoad set to SLE_VAR_NULL, where sld->address is always a nullptr, and object could or could not be a nullptr.
2020-07-27Codechange #8258: Remove unused town cargo caches from the savegamedP
2020-06-28Revert #8157: Redundant changedP
2020-06-28Fix: Incorrect save/load array size of Town::cargo_acceptedJonathan G Rennison
In 11ab3c4e the number of cargo types was changed from 32 to 64. The save/load of Town::cargo_accepted was not updated, such that only half of the data structure is saved/loaded in savegame versions 199 to 218. Discard and regenerate data from all savegame versions prior to 219.
2020-06-28Codechange: Move SlSkipBytes to saveload.hJonathan G Rennison
2020-06-27Codechange: Add WARN_FORMAT to vseprintf and fix the cascade of warnings ↵Charles Pigott
that followed
2020-05-21Codechange: Store GS lang texts in std::strings.Michael Lutz
2020-05-06Fix: reset roadtype/streetcartype info for non-road bridgesYexo
2020-02-08Change: Heading for 1.11 nowglx
2020-02-06Feature: SLF_HEX to print hexadecimal numbers in the config fileJohannes E. Krause
2019-12-28Feature: Configurable game ending yearNiels Martin Hansen
Functionally reverts 683b65ee1
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-10-19Fix: Bump savegame versionJack Baron
2019-09-29Fix: Some typos found using codespellJMcKiern
2019-06-30Feature: Multi-tile docks and docking points.peter1138
2019-05-11Change: Limit memory allocations for each Squirrel instanceNiels Martin Hansen
This can avoid out-of-memory situations due to single scripts using up the entire address space. Instead, scripts that go above the maximum are killed. The maximum is default 1 GB per script, but can be configured by a setting.
2019-05-01Feature: Add NotRoadTypes (NRT)peter1138
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-03-24Change: Bump savegame version for tree tile water class conversion.Peter Nelson
2019-03-16Remove: OPFCharles Pigott
2019-03-08Add: Road vehicle path cache. (#7261)PeterN
2019-03-08Feature: Industries with neutral stations (e.g. Oil Rig) only supply/accept ↵PeterN
cargo to/from their neutral station. (#7234) This change is a controlled by a game setting, located under Environment -> Industries which allows toggling the behaviour. It defaults to enabled. "Company stations can serve industries with attached neutral stations" When enabled, industries with attached neutral station (such as Oil Rigs) may also be served by company-owned stations built nearby. This is the traditional behaviour. When disabled, these industries may only be served by their neutral station. Any nearby company-owned stations won't be able to serve them, nor will the neutral station serve anything else other than the industry.
2019-03-08Change: Add configurable curve penalty for ships.Peter Nelson
2019-03-04Add: Option for population-linear town cargo generationNiels Martin Hansen
Introduce a new default algorithm for town cargo generation (passengers and mail), and a game setting to choose between the new and original algorithm. The original town cargo generation algorithm has the property of the generated amount relating to the square of each building's population, meaning large towns easily produce more cargo than can realistically be transported. The problem is excessive cargo is amplified if playing with cargodist. The new algorithm introduced instead has a linear relation to the population. The result is that smaller towns will produce slightly more cargo, while the largest towns will produce about a fourth of what they would with the original algorithm. Existing savegames will use the original algorithm, while new games will default to the new algorithm.
2019-03-03Change: Heading for 1.10 now (#7319)frosch
2019-02-13Change: Use SlErrorCorrupt() on pool index error when loading a savegame, ↵PeterN
instead of terminating. (#7219)
2019-02-04Fix #6803: CargoMonitorID bit packing updated to handle 64 cargo types.Peter Nelson
This requires a saveload bump to change the bitpacking on loading older saves.
2019-02-04Change: Make ships stop in locks to move up/down instead of following the slope.Peter Nelson
2019-02-02Codechange: Change from numeric to descriptive SLV enum labels for last entries.Peter Nelson
2019-02-02Codechange: Additional type safety for saveload version variables.Peter Nelson
2019-02-02Codechange: Convert saveload numbers to enum values.Peter Nelson
(This was mostly achieved with a few in-place regexes)
2019-02-02Codechange: Make saveload version upper bound exclusive, i.e. version object ↵Peter Nelson
was removed instead of version object last appeared.
2019-01-30Codechange: Remove value mangling and field misuse in SLE_WRITEBYTE.Peter Nelson
The original translation functionality hasn't been used since 2007.
2019-01-19Change: Add ability to save/load std::deque<> containers.Peter Nelson
2018-10-31Doc: Lots and lots of doxymentation fixesCharles Pigott
2018-06-27Codechange: lengthof is not defined for runtime-length strings, use sizeof ↵Charles Pigott
instead
2017-02-26(svn r27757) -Change: Make StringID 32bit.frosch
2016-09-04(svn r27653) -Fix(r27647): Rename FileOperation enum and values to ↵alberth
SaveLoadOperation to avoid nameclash with windows compiler toolkit.
2016-09-04(svn r27651) -Codechange: Introduce methods for setting the name and title ↵alberth
of _file_to_saveload.
2016-09-04(svn r27650) -Codechange: Replace SaveOrLoadMode by FileOperation and ↵alberth
DetailedFileType.
2016-09-04(svn r27638) -Codechange: Move FiosType enum, move and rename SetFiosType ↵alberth
function.