# 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)
## Enumerations
enum | GamelogActionType { GLAT_START, GLAT_LOAD, GLAT_GRF, GLAT_CHEAT, GLAT_SETTING, GLAT_GRFBUG, GLAT_END, GLAT_NONE = 0xFF }
## 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.
void | GamelogStopAction ()
| Stops logging of any changes.
void | GamelogReset ()
| Resets and frees all memory allocated - used before loading or starting a new game.
void | GamelogPrint (GamelogPrintProc *proc)
| Prints active gamelog.
void | GamelogPrintDebug (int level)
| Prints gamelog to debug output.
void | GamelogPrintConsole ()
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.
void | GamelogGRFUpdate (const GRFConfig *oldg, const GRFConfig *newg)
| Compares two NewGRF lists and logs any change.
void | GamelogGRFAddList (const GRFConfig *newg)
| Logs adding of list of GRFs.
void | GamelogGRFRemove (uint32 grfid)
| Logs removal of a GRF.
void | GamelogGRFAdd (const GRFConfig *newg)
| Logs adding of a GRF.
void | GamelogGRFCompatible (const GRFIdentifier *newg)
| Logs loading compatible GRF (the same ID, but different MD5 hash).
void | GamelogTestRevision ()
| Finds out if current revision is different than last revision stored in the savegame.
void | GamelogTestMode ()
| Finds last stored game mode or landscape.
void | GamelogTestGRF ()
bool | GamelogGRFBugReverse (uint32 grfid, uint16 internal_id)
| Logs GRF bug - rail vehicle has different length after reversing.
void | GamelogGetOriginalGRFMD5Checksum (uint32 grfid, byte *md5sum)
| Get the MD5 checksum of the original NewGRF that was loaded.

## Detailed Description

Functions to be called to log possibly unsafe game events.

Definition in file gamelog.h.

## Enumeration Type Documentation

enum GamelogActionType

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_END | So we know how many GLATs are there.
  GLAT_NONE | No logging active; in savegames, end of list.

Definition at line 10 of file gamelog.h.

## Function Documentation

void GamelogGetOriginalGRFMD5Checksum | ( | uint32 | grfid,
|  | byte * | md5sum |
| ) |  |  |

Get the MD5 checksum of the original NewGRF that was loaded.

Parameters:

  | grfid | the GRF ID to search for
  | md5sum | the MD5 checksum to write to.

Definition at line 671 of file gamelog.cpp.

References _gamelog_actions, LoggedAction::change, LoggedAction::changes, LoggedChange::ct, GLCT_GRFADD, LoggedChange::grfadd, GRFIdentifier::grfid, and GRFIdentifier::md5sum.

Referenced by NewGRFWindow::OnClick().

void GamelogGRFAdd | ( | const GRFConfig * | newg | ) |

Logs adding of a GRF.

Parameters:

  | newg | added GRF

Definition at line 492 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, GLAT_START, GLCT_GRFADD, LoggedChange::grfadd, 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

Parameters:

  | newg | head of GRF linked list

Definition at line 551 of file gamelog.cpp.

References _gamelog_action_type, GamelogGRFAdd(), GLAT_LOAD, GLAT_START, and GRFConfig::next.

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:

  | engine | engine to log

Returns:
  true iff a unique record was done

Definition at line 446 of file gamelog.cpp.

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

Referenced by RailVehicleLengthChanged().

void GamelogGRFCompatible | ( | const GRFIdentifier * | newg | ) |

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

Parameters:

  | newg | new (updated) GRF

Definition at line 508 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, GLCT_GRFCOMPAT, and LoggedChange::grfcompat.

Referenced by GamelogGRFUpdate(), and IsGoodGRFConfigList().

void GamelogGRFRemove | ( | uint32 | grfid | ) |

Logs removal of a GRF.

Parameters:

  | grfid | ID of removed GRF

Definition at line 479 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLAT_LOAD, GLCT_GRFREM, and LoggedChange::grfrem.

Referenced by GamelogGRFUpdate(), and IsGoodGRFConfigList().

void GamelogGRFUpdate | ( | const GRFConfig * | oldc,
|  | const GRFConfig * | newc |
| ) |  |  |

Compares two NewGRF lists and logs any change.

Parameters:

  | oldc | original GRF list
  | newc | new GRF list

Definition at line 590 of file gamelog.cpp.

References GamelogGRFAdd(), GamelogGRFCompatible(), GamelogGRFMove(), GamelogGRFParameters(), GamelogGRFRemove(), GenerateGRFList(), GRFList::grf, GRFIdentifier::grfid, GRFIdentifier::md5sum, GRFList::n, GRFConfig::num_params, and GRFConfig::param.

Referenced by NewGRFConfirmationCallback().

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:

  | level | debug level we need to print stuff

Definition at line 285 of file gamelog.cpp.

References GamelogPrint().

Referenced by GamelogStopAction().

void GamelogRevision | ( |  | ) |

Logs a change in game revision.

Parameters:

  | revision | new revision string

Definition at line 323 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_LOAD, GLAT_START, GLCT_REVISION, lastof, LoggedChange::revision, SAVEGAME_VERSION, and strecpy().

Referenced by GamelogTestRevision().

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

Logs change in game settings.

Only non-networksafe settings are logged

Parameters:

  | name | setting name
  | oldval | old setting value
  | newval | new setting value

Definition at line 368 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_SETTING, GLCT_SETTING, and LoggedChange::setting.

Referenced by CmdChangeSetting().

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:

  | at | type of action

Definition at line 40 of file gamelog.cpp.

References _gamelog_action_type, and GLAT_NONE.

Referenced by ClickChangeClimateCheat(), CmdChangeSetting(), GamelogGRFBugReverse(), NewGRFConfirmationCallback(), and SaveOrLoad().

void GamelogTestMode | ( |  | ) |

Finds last stored game mode or landscape.

Any change is logged

Definition at line 406 of file gamelog.cpp.

References _gamelog_actions, _settings_game, LoggedAction::change, GameSettings::game_creation, GamelogMode(), GLCT_MODE, GameCreationSettings::landscape, and LoggedChange::mode.

Referenced by ClickChangeClimateCheat().

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

References _gamelog_actions, LoggedAction::change, GamelogRevision(), GLCT_REVISION, and LoggedChange::revision.