OpenTTD Source
1.11.0-beta2
|
#include "stdafx.h"
#include "saveload/saveload.h"
#include "string_func.h"
#include "settings_type.h"
#include "gamelog_internal.h"
#include "console_func.h"
#include "debug.h"
#include "date_func.h"
#include "rev.h"
#include <stdarg.h>
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | GRFPresence |
Information about the presence of a Grf at a certain point during gamelog history Note about missing Grfs: Changes to missing Grfs are not logged including manual removal of the Grf. More... | |
struct | GRFList |
List of GRFs using array of pointers instead of linked list. More... | |
Typedefs | |
typedef SmallMap< uint32, GRFPresence > | GrfIDMapping |
Functions | |
static const char * | GetGamelogRevisionString () |
Return the revision string for the current client version, for use in gamelog. More... | |
void | GamelogStartAction (GamelogActionType at) |
Stores information about new action, but doesn't allocate it Action is allocated only when there is at least one change. More... | |
void | GamelogStopAction () |
Stops logging of any changes. | |
void | GamelogStopAnyAction () |
void | GamelogFree (LoggedAction *gamelog_action, uint gamelog_actions) |
Frees the memory allocated by a gamelog. | |
void | GamelogReset () |
Resets and frees all memory allocated - used before loading or starting a new game. | |
static char * | PrintGrfInfo (char *buf, const char *last, uint grfid, const uint8 *md5sum, const GRFConfig *gc) |
Prints GRF ID, checksum and filename if found. More... | |
void | GamelogPrint (GamelogPrintProc *proc) |
Prints active gamelog. More... | |
static void | GamelogPrintConsoleProc (const char *s) |
void | GamelogPrintConsole () |
Print the gamelog data to the console. | |
static void | GamelogPrintDebugProc (const char *s) |
void | GamelogPrintDebug (int level) |
Prints gamelog to debug output. More... | |
static LoggedChange * | GamelogChange (GamelogChangeType ct) |
Allocates new LoggedChange and new LoggedAction if needed. More... | |
void | GamelogEmergency () |
Logs a emergency savegame. | |
bool | GamelogTestEmergency () |
Finds out if current game is a loaded emergency savegame. | |
void | GamelogRevision () |
Logs a change in game revision. | |
void | GamelogMode () |
Logs a change in game mode (scenario editor or game) | |
void | GamelogOldver () |
Logs loading from savegame without gamelog. | |
void | GamelogSetting (const char *name, int32 oldval, int32 newval) |
Logs change in game settings. More... | |
void | GamelogTestRevision () |
Finds out if current revision is different than last revision stored in the savegame. More... | |
void | GamelogTestMode () |
Finds last stored game mode or landscape. More... | |
static void | GamelogGRFBug (uint32 grfid, byte bug, uint64 data) |
Logs triggered GRF bug. More... | |
bool | GamelogGRFBugReverse (uint32 grfid, uint16 internal_id) |
Logs GRF bug - rail vehicle has different length after reversing. More... | |
static bool | IsLoggableGrfConfig (const GRFConfig *g) |
Decides if GRF should be logged. More... | |
void | GamelogGRFRemove (uint32 grfid) |
Logs removal of a GRF. More... | |
void | GamelogGRFAdd (const GRFConfig *newg) |
Logs adding of a GRF. More... | |
void | GamelogGRFCompatible (const GRFIdentifier *newg) |
Logs loading compatible GRF (the same ID, but different MD5 hash) More... | |
static void | GamelogGRFMove (uint32 grfid, int32 offset) |
Logs changing GRF order. More... | |
static void | GamelogGRFParameters (uint32 grfid) |
Logs change in GRF parameters. More... | |
void | GamelogGRFAddList (const GRFConfig *newg) |
Logs adding of list of GRFs. More... | |
static GRFList * | GenerateGRFList (const GRFConfig *grfc) |
Generates GRFList. More... | |
void | GamelogGRFUpdate (const GRFConfig *oldc, const GRFConfig *newc) |
Compares two NewGRF lists and logs any change. More... | |
void | GamelogInfo (LoggedAction *gamelog_action, uint gamelog_actions, uint32 *last_ottd_rev, byte *ever_modified, bool *removed_newgrfs) |
Get some basic information from the given gamelog. More... | |
Variables | |
const SaveLoadVersion | SAVEGAME_VERSION |
current savegame version | |
SavegameType | _savegame_type |
type of savegame we are loading | |
uint32 | _ttdp_version |
version of TTDP savegame (if applicable) | |
SaveLoadVersion | _sl_version |
the major savegame version identifier | |
byte | _sl_minor_version |
the minor savegame version, DO NOT USE! | |
static GamelogActionType | _gamelog_action_type = GLAT_NONE |
action to record if anything changes | |
LoggedAction * | _gamelog_action = nullptr |
first logged action | |
uint | _gamelog_actions = 0 |
number of actions | |
static LoggedAction * | _current_action = nullptr |
current action we are logging, nullptr when there is no action active | |
static const char *const | la_text [] |
Text messages for various logged actions. More... | |
static int | _gamelog_print_level = 0 |
gamelog debug level we need to print stuff | |
Definition of functions used for logging of important changes in the game
Definition in file gamelog.cpp.
|
static |
Allocates new LoggedChange and new LoggedAction if needed.
If there is no action active, nullptr is returned.
ct | type of change |
Definition at line 382 of file gamelog.cpp.
References _current_action, _gamelog_action, _gamelog_action_type, _gamelog_actions, _tick_counter, LoggedAction::at, LoggedAction::change, LoggedAction::changes, LoggedChange::ct, GLAT_NONE, ReallocT(), and LoggedAction::tick.
Referenced by GamelogEmergency(), GamelogGRFAdd(), GamelogGRFBug(), GamelogGRFCompatible(), GamelogGRFMove(), GamelogGRFParameters(), GamelogGRFRemove(), GamelogMode(), GamelogOldver(), GamelogRevision(), and GamelogSetting().
void GamelogGRFAdd | ( | const GRFConfig * | newg | ) |
Logs adding of a GRF.
newg | added GRF |
Definition at line 618 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, GLAT_START, GLCT_GRFADD, LoggedChange::grfadd, GRFConfig::ident, and IsLoggableGrfConfig().
Referenced by GamelogGRFAddList(), and GamelogGRFUpdate().
void GamelogGRFAddList | ( | const GRFConfig * | newg | ) |
Logs adding of list of GRFs.
Useful when old savegame is loaded or when new game is started
newg | head of GRF linked list |
Definition at line 681 of file gamelog.cpp.
References _gamelog_action_type, GamelogGRFAdd(), GLAT_LOAD, GLAT_START, and GRFConfig::next.
|
static |
Logs triggered GRF bug.
grfid | ID of problematic GRF |
bug | type of bug, |
data | additional data |
Definition at line 548 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRFBUG, and GLCT_GRFBUG.
Referenced by GamelogGRFBugReverse().
bool GamelogGRFBugReverse | ( | uint32 | grfid, |
uint16 | internal_id | ||
) |
Logs GRF bug - rail vehicle has different length after reversing.
Ensures this is logged only once for each GRF and engine type This check takes some time, but it is called pretty seldom, so it doesn't matter that much (ideally it shouldn't be called at all).
grfid | the broken NewGRF |
internal_id | the internal ID of whatever's broken in the NewGRF |
Definition at line 569 of file gamelog.cpp.
References _gamelog_action, _gamelog_actions, GamelogGRFBug(), GamelogStartAction(), GamelogStopAction(), GBUG_VEH_LENGTH, GLAT_GRFBUG, and GLCT_GRFBUG.
Referenced by VehicleLengthChanged().
void GamelogGRFCompatible | ( | const GRFIdentifier * | newg | ) |
Logs loading compatible GRF (the same ID, but different MD5 hash)
newg | new (updated) GRF |
Definition at line 635 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, GLCT_GRFCOMPAT, and LoggedChange::grfcompat.
Referenced by GamelogGRFUpdate().
|
static |
Logs changing GRF order.
grfid | GRF that is moved |
offset | how far it is moved, positive = moved down |
Definition at line 650 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRF, and GLCT_GRFMOVE.
Referenced by GamelogGRFUpdate().
|
static |
Logs change in GRF parameters.
Details about parameters changed are not stored
grfid | ID of GRF to store |
Definition at line 666 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRF, and GLCT_GRFPARAM.
Referenced by GamelogGRFUpdate().
void GamelogGRFRemove | ( | uint32 | grfid | ) |
Logs removal of a GRF.
grfid | ID of removed GRF |
Definition at line 604 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, and GLCT_GRFREM.
Referenced by GamelogGRFUpdate().
Compares two NewGRF lists and logs any change.
oldc | original GRF list |
newc | new GRF list |
Definition at line 722 of file gamelog.cpp.
References free(), GamelogGRFAdd(), GamelogGRFCompatible(), GamelogGRFMove(), GamelogGRFParameters(), GamelogGRFRemove(), GenerateGRFList(), GRFIdentifier::grfid, GRFConfig::ident, GRFIdentifier::md5sum, GRFConfig::num_params, and GRFConfig::param.
Referenced by NewGRFConfirmationCallback().
void GamelogInfo | ( | LoggedAction * | gamelog_action, |
uint | gamelog_actions, | ||
uint32 * | last_ottd_rev, | ||
byte * | ever_modified, | ||
bool * | removed_newgrfs | ||
) |
Get some basic information from the given gamelog.
gamelog_action | Pointer to the gamelog to extract information from. | |
gamelog_actions | Number of actions in the given gamelog. | |
[out] | last_ottd_rev | OpenTTD NewGRF version from the binary that saved the savegame last. |
[out] | ever_modified | Max value of 'modified' from all binaries that ever saved this savegame. |
[out] | removed_newgrfs | Set to true if any NewGRFs have been removed. |
Definition at line 806 of file gamelog.cpp.
References GLCT_GRFREM, and GLCT_REVISION.
void GamelogPrint | ( | GamelogPrintProc * | proc | ) |
Prints active gamelog.
proc | the procedure to draw with |
Definition at line 192 of file gamelog.cpp.
References _gamelog_action, _gamelog_actions, GLAT_END, la_text, lastof, and seprintf().
Referenced by GamelogPrintConsole(), GamelogPrintDebug(), and CrashLog::LogGamelog().
void GamelogPrintDebug | ( | int | level | ) |
Prints gamelog to debug output.
Code is executed even when there will be no output. It is called very seldom, so it doesn't matter that much. At least it gives more uniform code...
level | debug level we need to print stuff |
Definition at line 369 of file gamelog.cpp.
References _gamelog_print_level, and GamelogPrint().
Referenced by GamelogStopAction().
void GamelogSetting | ( | const char * | name, |
int32 | oldval, | ||
int32 | newval | ||
) |
Logs change in game settings.
Only non-networksafe settings are logged
name | setting name |
oldval | old setting value |
newval | new setting value |
Definition at line 486 of file gamelog.cpp.
References _gamelog_action_type, GamelogChange(), GLAT_SETTING, GLCT_SETTING, and stredup().
void GamelogStartAction | ( | GamelogActionType | at | ) |
Stores information about new action, but doesn't allocate it Action is allocated only when there is at least one change.
at | type of action |
Definition at line 69 of file gamelog.cpp.
References _gamelog_action_type, and GLAT_NONE.
Referenced by GamelogEmergency(), GamelogGRFBugReverse(), and NewGRFConfirmationCallback().
void GamelogTestMode | ( | ) |
Finds last stored game mode or landscape.
Any change is logged
Definition at line 526 of file gamelog.cpp.
References _gamelog_action, _gamelog_actions, GLCT_MODE, and LoggedChange::mode.
void GamelogTestRevision | ( | ) |
Finds out if current revision is different than last revision stored in the savegame.
Appends GLCT_REVISION when the revision string changed
Definition at line 503 of file gamelog.cpp.
References _gamelog_action, _gamelog_actions, GetGamelogRevisionString(), and GLCT_REVISION.
Generates GRFList.
grfc | head of GRF linked list |
Definition at line 700 of file gamelog.cpp.
References IsLoggableGrfConfig(), and GRFConfig::next.
Referenced by GamelogGRFUpdate().
|
static |
Return the revision string for the current client version, for use in gamelog.
The string returned is at most GAMELOG_REVISION_LENGTH bytes long.
Definition at line 44 of file gamelog.cpp.
References lengthof.
Referenced by GamelogRevision(), and GamelogTestRevision().
|
inlinestatic |
Decides if GRF should be logged.
g | grf to determine |
Definition at line 595 of file gamelog.cpp.
References GRFConfig::flags, GCF_STATIC, GCS_NOT_FOUND, HasBit(), and GRFConfig::status.
Referenced by GamelogGRFAdd(), and GenerateGRFList().
|
static |
Prints GRF ID, checksum and filename if found.
buf | The location in the buffer to draw |
last | The end of the buffer |
grfid | GRF ID |
md5sum | array of md5sum to print, if known |
gc | GrfConfig, if known |
Definition at line 134 of file gamelog.cpp.
References BSWAP32(), FGCM_ANY, GRFConfig::filename, FindGRFConfig(), lastof, md5sumToString(), and seprintf().
|
static |
Text messages for various logged actions.
Definition at line 160 of file gamelog.cpp.
Referenced by GamelogPrint().