Commit Graph

67 Commits (2dd46b964aaea976dd93aab80fd35934ed00e46a)

Author SHA1 Message Date
glx22 7bcc7e11ff Codechange: Use a common sub-class for NewGRFMapping chunks 3 years ago
glx22 6e627f35ac Cleanup: Remove now unneeded ChunkHandler members 3 years ago
glx22 2c941cd8b3 Codechange: Use ChunkHandlers sub-classes 3 years ago
glx22 c1a9fe6fbd Codechange: Use static array of references to ChunkHandler 3 years ago
Patric Stout 3826703bc3 Add: store headers for chunks with SL_STRUCTLIST 3 years ago
Patric Stout cdb3dd0493 Add: store headers for most savegame chunks
When a header is added, the chunk changes from CH_ARRAY type to
CH_TABLE type.
3 years ago
Patric Stout 7dd5fd6ed4 Feature: framework to make savegames self-descriptive
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.
3 years ago
Patric Stout a146bcfe93 Change: store length of SL_STRUCTLIST in the savegame
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.
3 years ago
Patric Stout 0bb1d2fa8e Codechange: use SLE_STRUCT(LIST) for Town chunks 3 years ago
Patric Stout 8f323855b1 Codechange: rename SL_LST to SL_REFLIST to highlight the "reference" part
You can easily mistake SlList / SL_LST to be a list of SL_VAR, but
it is a list of SL_REF. With this rename, it hopefully saves a few
people from "wtf?" moments.
3 years ago
glx22 c27afdf3f6 Codechange: Remove FOR_ALL_CHUNK_HANDLERS
Co-Authored-By: Patric Stout <truebrain@openttd.org>
3 years ago
Patric Stout 9fff00ba20
Codechange: C++-ify lists for SaveLoad (#9323)
Basically, this changes "SaveLoad *" to either:
1) "SaveLoadTable" if a list of SaveLoads was meant
2) "SaveLoad &" if a single entry was meant

As added bonus, this removes SL_END / SLE_END / SLEG_END. This
also adds core/span.hpp, a "std::span"-lite.
3 years ago
dP 452e1e3328 Codechange #8258: Remove unused town cargo caches from the savegame 4 years ago
dP 7045186594 Change #8159: Remove now unused town cargo caches without bumping the savegame version 4 years ago
dP ca2604c4e2 Revert #8157: Redundant change 4 years ago
Jonathan G Rennison 7a09413a1a Fix: Incorrect save/load array size of Town::cargo_accepted
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.
4 years ago
Michael Lutz 63ccb36ef3 Codechange: Use std::string for most of the user-settable custom names. 4 years ago
glx ee7a8eebca Codechange: Replace FOR_ALL_TOWNS with range-based for loops 5 years ago
S. D. Cloudt 13cc8a0cee Cleanup: Removed SVN headers 5 years ago
peter1138 4f052fc2a4 Cleanup: Fix alignment after NULL -> nullptr change. 5 years ago
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 5 years ago
Niels Martin Hansen 7b56be0f3a Codechange: Make a k-d tree index of towns 5 years ago
Peter Nelson e21ade375e Codechange: Change from numeric to descriptive SLV enum labels for last entries. 5 years ago
Peter Nelson 9de12521ec Codechange: Convert saveload numbers to enum values.
(This was mostly achieved with a few in-place regexes)
5 years ago
Peter Nelson ea4ea62816 Codechange: Make saveload version upper bound exclusive, i.e. version object was removed instead of version object last appeared. 5 years ago
PeterN 11ab3c4ea2
Change: Increase cargo type limit to 64. 6 years ago
PeterN 4cebebcf68
Change: Add CargoTypes type for cargo masks. (#6790) 6 years ago
frosch a56e2bccd0 (svn r27756) -Codechange: Add StringTab enum 7 years ago
frosch 9ad09627ad (svn r27754) -Codechange: Add GetStringTab(), GetStringIndex() and MakeStringID() to access the structure of StringIDs. 7 years ago
rubidium 0463dbdc9e (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 10 years ago
planetmaker c24374f99c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow) 12 years ago
frosch b11b0bb0e2 (svn r24482) -Fix [FS#5232] (r24180): Do not call RebuildSubsidisedSourceAndDestinationCache() before subsidy savegame conversion is finished. 12 years ago
frosch 0d03c1ff85 (svn r24182) -Fix [FS#5169-ish]: The population of a town was computed incorrectly for overridden houses when loading a game. 12 years ago
rubidium b926277caf (svn r24180) -Codechange/feature-ish: add cache checker for the town's cache 12 years ago
rubidium 41e5c839e0 (svn r24179) -Codechange: move some variables of Town to TownCache 12 years ago
yexo ecc9997277 (svn r23657) -Fix (r22958): loading of very old savegames with custom town names failed 13 years ago
truebrain 102f811d02 (svn r23636) -Add: introduce ScriptText in parameters where it can be used 13 years ago
truebrain ad48ab9237 (svn r23626) -Add: ScriptTown::SetText, which adds custom text to the Town GUI 13 years ago
rubidium 3d88c74389 (svn r23526) -Codechange: unify cargos vs cargoes 13 years ago
rubidium 432c16d5b9 (svn r23418) -Fix [FS#4866] (r22958): saves made with the Catalan town name generator would trigger a "savegame corrupt" exception 13 years ago
terkhen de0bf0663a (svn r23407) -Codechange: Keep a bitmap of all cargos accepted by towns. 13 years ago
terkhen 59d8b0204f (svn r23405) -Codechange: Keep a matrix of cargos accepted by houses for each town (michi_cc). 13 years ago
truebrain f906ebd2a5 (svn r23300) -Add: show on the GUI when a town grows and make a general framework to store goals of a town 13 years ago
truebrain 229e572663 (svn r23298) -Add: track statistics of all incoming and outgoing goods. Incoming based on TownEffect, outgoing based on CargoType (based on patch by Terkhen) 13 years ago
michi_cc 6548ec6e9e (svn r23233) -Codechange: Refactor maximum and actually transported cargo amount of towns into a reusable struct. 13 years ago
rubidium 73a3708a9e (svn r22958) -Fix [FS#4778]: the savegame description and loading of savegames would crash with savegames from a patched stable (which didn't bump the savegame version) 13 years ago
yexo 40d5419cd2 (svn r22920) -Cleanup: replace two very old town variables taht were rarely used by small functions that compute there value on-the-fly when necessary 13 years ago
terkhen 7ffc8c0173 (svn r22568) -Change: Add a list of persistent storages to the Town class. 13 years ago
frosch 9390bddbbd (svn r20610) -Fix (r20609): X and Y got swapped. 14 years ago
yexo 3b04f510b1 (svn r20609) -Fix [FS#3702]: crash when a NewGRF defined an invalid substitute type for a house and the NewGRF was removed during the game 14 years ago