summaryrefslogtreecommitdiff
path: root/src/script
AgeCommit message (Collapse)Author
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: simplify some boolean expressionsRubidium
2021-06-17Cleanup: [Script] Use nullptr instead of 0 or NULLRubidium
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-15Cleanup: remove some unneeded c_str() callsRubidium
2021-06-13Codechange: convert printf DEBUG statements to fmt Debug statementsrubidium42
2021-06-13Codechange: make the name of SettingDesc a std::stringrubidium42
2021-06-12Fix #9353: [Script] Garbage collecting on priority queues could crash the gamerubidium42
2021-06-11Fix 4079c47: Missed a file when removing generated .sq files from the repo ↵Loïc Guilloux
(#9350)
2021-06-11Fix: [Script] doxygen_filter is very strict about DOXYGEN_API usage (#9351)Loïc Guilloux
2021-06-10Fix: [Script] Ensure the saved script strings are properly validated and ↵rubidium42
terminated when being read from the savegame
2021-06-06Codechange: merge guiflags and flags in settings .ini filesPatric Stout
It was rather confusing which one was for what, especially as some SaveLoad flags were settings-only. Clean up this mess a bit by having only Setting flags.
2021-06-03Codechange: use "[[maybe_unused]]" instead of a wide variety of other ways ↵Patric Stout
we had While at it, replace OTTD_ASSERT with WITH_ASSERT, as this is always set if assert() is valid. No matter if NDEBUG is set or not.
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-31Codechange: use AsIntSetting()->Read() wrapper if possible (#9324)Patric Stout
2021-05-30Codechange: [Network] Let admin-game script use std::stringrubidium42
2021-05-30Codechange: [Game] Pass the length instead of '\0' terminating (and undoing ↵rubidium42
that) in the middle of a C-string
2021-05-29Codechange: use setting name instead of index for CmdChange(Company)Setting ↵Patric Stout
(#9306) This is mostly done as there are now constraints on settings.ini you might not expected. For example, conditional settings always have to come last, as otherwise they would influence the index.
2021-05-29Codechange: Rename window related DeleteXXX to match new behaviourglx22
2021-05-29Codechange: move from C-string to std::string for DoCommandrubidium42
2021-05-29Codechange: move casting a "const char *" to "char *" to the callerPatric Stout
It is not nice to have your definition say you won't change a value while in fact the whole reason for your existance is to change it.
2021-05-29Fix: ScriptObject::DoCommand could modify "text" while defined "const"Patric Stout
This could have unwanted side-effects, as it could change the source for ever and ever.
2021-05-29Codechange: rename str_validate to StrMakeValid(InPlace) (#9304)Patric Stout
This to be more explicit the function changes the value, and not returns yes/no.
2021-05-27Codechange: remove SettingDescType in lieu of the actual classesrubidium42
2021-05-27Codechange: let SettingDesc extend SettingDescBaserubidium42
2021-05-27Codechange: just pass the SettingDesc to SetSettingValue and remove ↵rubidium42
distinction between (non)company
2021-05-16Codechange: [Network] Let NetworkClientInfo use std::stringrubidium42
2021-05-15Change: Use gender-neutral pronounsrubidium42
2021-05-13Codechange: clean up C-string support from settingsrubidium42
2021-05-13Codechange: move script settings to std::stringrubidium42
2021-05-13Codechange: make explicit that virtual functions in a con/destructor are ↵Rubidium
resolved statically This as during construction the sub class has not been initialized yet, and during destruction the sub class has already been destroyed, so the overriding virtual function would be accessing uninitialized data.
2021-05-13Codechange: Replace TILE_AREA_LOOP with range-based for loopsglx22
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-05-03Codechange: Replace FOR_ALL_SEARCHPATHS with range-based for loopsglx22
2021-05-03Codechange: Replace FOR_ALL_TARS with range-based for loopsglx22
2021-04-29Codechange: Replace FOR_ALL_CARGOSPECS with range-based for loopsglx22
2021-04-29Fix: [MinGW] Set minimum OS version to Windows XP (#9135)Loïc Guilloux
2021-04-22Codechange: Replace CMD_SET_GROUP_REPLACE_PROTECTION with generic ↵peter1138
CMD_SET_GROUP_FLAG.
2021-04-22Codechange: Replace Group::replace_protection with Group::flagspeter1138
2021-04-17Fix #6322: [Script] Try to let the script die when no memory can be ↵Rubidium
allocated instead of crashing the whole game
2021-04-17Change: [Script] Let Script_FatalError use std::string instead of const char *Rubidium
2021-03-14Change: Heading for 1.12 now (#8862)Patric Stout
2021-02-26Fix 02e770ff: allow estimating CloneVehicle if short on money (#8748)Patric Stout
CheckCompanyHasMoney() was also executed when not using DC_EXEC, resulting in an error about shortage of money instead of the estimation. This mostly is a problem for AI players, as they will have no way to know how much it would have cost.
2021-02-14Feature: [GS] Allow non-question type windows to have no buttonsdP
2021-01-22Feature: Allow GameScripts to add additional text to Industry view windowdP
2021-01-22Feature: Add tile parameter for GSCompany.ChangeBankBalance to show text ↵Pavel Stupnikov
effect if needed (#8573)
2021-01-10Fix 218f40e: Warning about 32-bit shift implicitly converted to 64 bitsSamuXarick
2021-01-09Add: [Script] ScriptCargo::GetName, to get the human readable name of a ↵Patric Stout
cargo (#8544) Of course this translates into AICargo.GetName() for AIs and GSCargo.GetName() for GameScripts.
2021-01-08Codechange: Remove min/max functions in favour of STL variants (#8502)Charles Pigott
2020-12-28Fix #8453: [Script] Don't truncate loan variation to 32bitglx22