summaryrefslogtreecommitdiff
path: root/src/saveload/ai_sl.cpp
AgeCommit message (Collapse)Author
2021-07-06Codechange: Use ChunkHandlers sub-classesglx22
2021-07-06Codechange: Use static array of references to ChunkHandlerglx22
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-06-17Cleanup: use true/false instead of 1/0 where applicableRubidium
2021-06-13Codechange: convert printf DEBUG statements to fmt Debug statementsrubidium42
2021-06-06Codechange: Remove FOR_ALL_CHUNK_HANDLERSglx22
Co-Authored-By: Patric Stout <truebrain@openttd.org>
2021-05-31Codechange: C++-ify lists for SaveLoad (#9323)Patric Stout
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.
2021-05-15Change: Use gender-neutral pronounsrubidium42
2021-05-13Codechange: move script settings to std::stringrubidium42
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-02-02Codechange: Convert saveload numbers to enum values.Peter Nelson
(This was mostly achieved with a few in-place regexes)
2014-04-24(svn r26493) -Codechange: use strecat to concatenate script settings instead ↵rubidium
of manually accounting for the amount of characters that has been written
2014-04-23(svn r26485) -Codechange: Replace ttd_strlcpy and ttd_strlcat with strecpy ↵frosch
and strecat.
2014-04-23(svn r26482) -Codechange: add an include that allows us to undefine/redefine ↵rubidium
"unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values
2012-03-17(svn r24033) -Fix: reset "is random" status of temporary variable during ↵rubidium
saveload as it's not always written to when loading an AI which means it'd be taking the is random setting of another AI.
2011-12-01(svn r23386) -Fix: debug script related events to 'script' (removes 'ai')truebrain
2011-12-01(svn r23384) -Remove: no longer allow a binary to be without AI support; the ↵truebrain
parts some compilers failed at, are integrated in other parts of the code now too
2011-11-29(svn r23364) -Codechange: refactor AIConfig, moving it mostly to Scriptconfigtruebrain
2011-08-25(svn r22843) -Fix [FS#4748]: Harden savegame load against too many ai config ↵planetmaker
settings (monoid)
2010-09-16(svn r20819) -Fix [FS#3714]: be a bit more "lenient" w.r.t. invalid ↵rubidium
savegames; don't crash on saveload related NOT_REACHEDs, just show the user an error that the savegame is corrupted
2010-06-13(svn r19973) -Codechange: Add another procedure to chunk handlers for ↵frosch
checking savegames (empty for now).
2010-03-15(svn r19429) -Fix: when the title game contains an AIPL block the AI ↵yexo
settinsg where overwritten by those from the title game
2010-02-10(svn r19081) -Codechange: make it possible to disable compilation of the ↵rubidium
AI+Squirrel
2010-01-29(svn r18944) -Change [FS#3232]: use the highest version of an AI that can ↵yexo
load the AI data from a savegame instead of the exact same version
2010-01-09(svn r18763) -Feature [FS#3095]: rerandomise AIs on reloading (via the debug ↵rubidium
window) when they were randomly chosen
2009-10-04(svn r17693) -Cleanup: remove some unneeded includesrubidium
2009-08-21(svn r17248) -Fix: add GPL license notice where appropriaterubidium
2009-06-24(svn r16651) -Fix: When there is no AI version that can load data from the ↵yexo
savegame, load the latest version of the same AI instead of a random AI.
2009-06-10(svn r16559) -Codechange: introduce Company::IsValidAiID() and ↵smatz
Company::IsValidHumanID(), don't use IsHumanCompany() where possible
2009-05-17(svn r16338) -Codechange: split loading of references to two phasessmatz
In the first phase, indexes are stored. In the second phase, indexes are checked for validity and converted to pointers
2009-05-17(svn r16327) -Codechange: replace IsValidPoolItemID(index) by ↵smatz
PoolItem::IsValidID(index)
2009-02-20(svn r15532) -Fix (r15525): don't try to load (and forget) AI data from a ↵rubidium
non-existing AI when joining a server. In other words: you can join network servers again.
2009-02-20(svn r15528) -Fix (r15525): Check should be the other way around (thanks SmatZ).yexo
2009-02-19(svn r15525) -Fix: Don't try to find the AIs the server runs when joining a ↵yexo
mp server.
2009-01-31(svn r15299) -Cleanup: remove many redundant includessmatz
2009-01-23(svn r15239) -Fix [FS#2579]: The start date of random AIs was not stored in ↵Yexo
the config file or the savegame.
2009-01-13(svn r15045) -Add [NoAI API CHANGE]: in info.nut you can now have (optional) ↵truebrain
a CanLoadFromVersion(version), which should return true/false, to indicate if you can load a savegame made with your AI of version 'version' -Add [NoAI API CHANGE]: in main.nut the Load() function now should be Load(version, data), where 'version' is the version of your AI which made the savegame -Codechange [NoAI]: various of function renames to make things more sane -Add [NoAI]: push the 'version' of the AI through various of layers -Codechange [NoAI]: various of code cleanups -Add [NoAI]: store the version of the AI in the savegame too
2009-01-12(svn r15027) -Merge: tomatos and bananas left to be, here is NoAI for all to ↵truebrain
see. NoAI is an API (a framework) to build your own AIs in. See: http://wiki.openttd.org/wiki/index.php/AI:Main_Page With many thanks to: - glx and Rubidium for their syncing, feedback and hard work - Yexo for his feedback, patches, and AIs which tested the system very deep - Morloth for his feedback and patches - TJIP for hosting a challenge which kept NoAI on track - All AI authors for testing our AI API, and all other people who helped in one way or another -Remove: all old AIs and their cheats/hacks
2009-01-04(svn r14828) -Codechange: move most of save/load-specific code to separate filessmatz