OpenTTD
Typedefs | Enumerations | Functions
gamelog.h File Reference

Functions to be called to log possibly unsafe game events. More...

#include "newgrf_config.h"

Go to the source code of this file.

Typedefs

typedef void GamelogPrintProc(const char *s)
 Callback for printing text. More...
 

Enumerations

enum  GamelogActionType {
  GLAT_START, GLAT_LOAD, GLAT_GRF, GLAT_CHEAT,
  GLAT_SETTING, GLAT_GRFBUG, GLAT_EMERGENCY, GLAT_END,
  GLAT_NONE = 0xFF
}
 The actions we log. More...
 

Functions

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 GamelogFree (struct 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.
 
void GamelogPrint (GamelogPrintProc *proc)
 Prints active gamelog. More...
 
void GamelogPrintDebug (int level)
 Prints gamelog to debug output. More...
 
void GamelogPrintConsole ()
 Print the gamelog data to the console. 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 GamelogGRFUpdate (const GRFConfig *oldg, const GRFConfig *newg)
 Compares two NewGRF lists and logs any change. More...
 
void GamelogGRFAddList (const GRFConfig *newg)
 Logs adding of list of GRFs. 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...
 
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...
 
bool GamelogGRFBugReverse (uint32 grfid, uint16 internal_id)
 Logs GRF bug - rail vehicle has different length after reversing. More...
 
void GamelogInfo (struct 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...
 

Detailed Description

Functions to be called to log possibly unsafe game events.

Definition in file gamelog.h.

Typedef Documentation

◆ GamelogPrintProc

typedef void GamelogPrintProc(const char *s)

Callback for printing text.

Parameters
sThe string to print.

Definition at line 40 of file gamelog.h.

Enumeration Type Documentation

◆ GamelogActionType

The actions we log.

Enumerator
GLAT_START 

Game created.

GLAT_LOAD 

Game loaded.

GLAT_GRF 

GRF changed.

GLAT_CHEAT 

Cheat was used.

GLAT_SETTING 

Setting changed.

GLAT_GRFBUG 

GRF bug was triggered.

GLAT_EMERGENCY 

Emergency savegame.

GLAT_END 

So we know how many GLATs are there.

GLAT_NONE 

No logging active; in savegames, end of list.

Definition at line 18 of file gamelog.h.

Function Documentation

◆ GamelogGRFAdd()

void GamelogGRFAdd ( const GRFConfig newg)

Logs adding of a GRF.

Parameters
newgadded GRF

Definition at line 590 of file gamelog.cpp.

Referenced by GamelogGRFUpdate().

◆ GamelogGRFAddList()

void GamelogGRFAddList ( const GRFConfig newg)

Logs adding of list of GRFs.

Useful when old savegame is loaded or when new game is started

Parameters
newghead of GRF linked list

Definition at line 653 of file gamelog.cpp.

◆ 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).

Parameters
grfidthe broken NewGRF
internal_idthe internal ID of whatever's broken in the NewGRF
Returns
true iff a unique record was done

Definition at line 541 of file gamelog.cpp.

References _gamelog_actions, GamelogGRFBug(), GamelogStartAction(), GamelogStopAction(), GBUG_VEH_LENGTH, GLAT_GRFBUG, and GLCT_GRFBUG.

Referenced by VehicleLengthChanged().

◆ GamelogGRFCompatible()

void GamelogGRFCompatible ( const GRFIdentifier newg)

Logs loading compatible GRF (the same ID, but different MD5 hash)

Parameters
newgnew (updated) GRF

Definition at line 607 of file gamelog.cpp.

◆ GamelogGRFRemove()

void GamelogGRFRemove ( uint32  grfid)

Logs removal of a GRF.

Parameters
grfidID of removed GRF

Definition at line 576 of file gamelog.cpp.

Referenced by GamelogGRFUpdate().

◆ GamelogGRFUpdate()

void GamelogGRFUpdate ( const GRFConfig oldc,
const GRFConfig newc 
)

Compares two NewGRF lists and logs any change.

Parameters
oldcoriginal GRF list
newcnew GRF list

Definition at line 694 of file gamelog.cpp.

References GamelogGRFAdd(), GamelogGRFRemove(), GenerateGRFList(), GRFIdentifier::grfid, and GRFConfig::ident.

Referenced by NewGRFConfirmationCallback().

◆ GamelogInfo()

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.

Parameters
gamelog_actionPointer to the gamelog to extract information from.
gamelog_actionsNumber of actions in the given gamelog.
[out]last_ottd_revOpenTTD NewGRF version from the binary that saved the savegame last.
[out]ever_modifiedMax value of 'modified' from all binaries that ever saved this savegame.
[out]removed_newgrfsSet to true if any NewGRFs have been removed.

Definition at line 778 of file gamelog.cpp.

References GLCT_GRFREM, GLCT_REVISION, and max().

◆ GamelogPrint()

void GamelogPrint ( GamelogPrintProc proc)

Prints active gamelog.

Parameters
procthe procedure to draw with

Definition at line 164 of file gamelog.cpp.

References _gamelog_actions.

Referenced by GamelogPrintConsole(), GamelogPrintDebug(), and CrashLog::LogGamelog().

◆ GamelogPrintConsole()

void GamelogPrintConsole ( )

Print the gamelog data to the console.

Definition at line 322 of file gamelog.cpp.

References GamelogPrint().

◆ GamelogPrintDebug()

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...

Parameters
leveldebug level we need to print stuff

Definition at line 341 of file gamelog.cpp.

References _gamelog_print_level, and GamelogPrint().

◆ GamelogSetting()

void GamelogSetting ( const char *  name,
int32  oldval,
int32  newval 
)

Logs change in game settings.

Only non-networksafe settings are logged

Parameters
namesetting name
oldvalold setting value
newvalnew setting value

Definition at line 458 of file gamelog.cpp.

◆ GamelogStartAction()

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.

Parameters
attype of action

Definition at line 47 of file gamelog.cpp.

Referenced by GamelogEmergency(), GamelogGRFBugReverse(), and NewGRFConfirmationCallback().

◆ GamelogTestMode()

void GamelogTestMode ( )

Finds last stored game mode or landscape.

Any change is logged

Definition at line 498 of file gamelog.cpp.

References _gamelog_actions, GLCT_MODE, and LoggedChange::mode.

◆ GamelogTestRevision()

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 475 of file gamelog.cpp.

References _gamelog_actions, and GLCT_REVISION.