gamelog.cpp File Reference

Definition of functions used for logging of important changes in the game. More...

#include "stdafx.h"
#include "openttd.h"
#include "saveload/saveload.h"
#include "core/alloc_func.hpp"
#include "variables.h"
#include "string_func.h"
#include "settings_type.h"
#include "gamelog_internal.h"
#include "console_func.h"
#include "debug.h"
#include "rev.h"
#include <stdarg.h>

Go to the source code of this file.

Data Structures

struct  GRFList
 List of GRFs using array of pointers instead of linked list. More...

Enumerations

enum  { GAMELOG_BUF_LEN = 1024 }

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.
static void AddDebugText (char *buf, const char *s,...) WARN_FORMAT(2
static void PrintGrfFilename (char *buf, uint grfid)
 Prints GRF filename if found.
static void PrintGrfInfo (char *buf, uint grfid, const uint8 *md5sum)
 Prints GRF ID, checksum and filename if found.
 assert_compile (lengthof(la_text)==GLAT_END)
void GamelogPrint (GamelogPrintProc *proc)
 Prints active gamelog.
static void GamelogPrintConsoleProc (const char *s)
void GamelogPrintConsole ()
static void GamelogPrintDebugProc (const char *s)
void GamelogPrintDebug (int level)
 Prints gamelog to debug output.
static LoggedChangeGamelogChange (GamelogChangeType ct)
 Allocates new LoggedChange and new LoggedAction if needed.
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.
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.
static void GamelogGRFBug (uint32 grfid, byte bug, uint64 data)
 Logs triggered GRF bug.
bool GamelogGRFBugReverse (uint32 grfid, uint16 internal_id)
 Logs GRF bug - rail vehicle has different length after reversing.
static bool IsLoggableGrfConfig (const GRFConfig *g)
 Decides if GRF should be logged.
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).
static void GamelogGRFMove (uint32 grfid, int32 offset)
 Logs changing GRF order.
static void GamelogGRFParameters (uint32 grfid)
 Logs change in GRF parameters.
void GamelogGRFAddList (const GRFConfig *newg)
 Logs adding of list of GRFs.
static GRFListGenerateGRFList (const GRFConfig *grfc)
 Generates GRFList.
void GamelogGRFUpdate (const GRFConfig *oldc, const GRFConfig *newc)
 Compares two NewGRF lists and logs any change.
void GamelogGetOriginalGRFMD5Checksum (uint32 grfid, byte *md5sum)
 Get the MD5 checksum of the original NewGRF that was loaded.

Variables

const uint16 SAVEGAME_VERSION
 current savegame version
SavegameType _savegame_type
 type of savegame we are loading
uint32 _ttdp_version
 version of TTDP savegame (if applicable)
uint16 _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 = NULL
 first logged action
uint _gamelog_actions = 0
 number of actions
static LoggedAction_current_action = NULL
 current action we are logging, NULL when there is no action active
static int _dbgofs = 0
 offset in current output buffer
static const char *const la_text []
 Text messages for various logged actions.
static int _gamelog_print_level = 0
 gamelog debug level we need to print stuff


Detailed Description

Definition of functions used for logging of important changes in the game.

Definition in file gamelog.cpp.


Enumeration Type Documentation

anonymous enum

Enumerator:
GAMELOG_BUF_LEN  length of buffer for one line of text

Definition at line 88 of file gamelog.cpp.


Function Documentation

static LoggedChange* GamelogChange ( GamelogChangeType  ct  )  [static]

Allocates new LoggedChange and new LoggedAction if needed.

If there is no action active, NULL is returned.

Parameters:
ct type of change
Returns:
new LoggedChange, or NULL if there is no action active

Definition at line 314 of file gamelog.cpp.

References _gamelog_action_type, _gamelog_actions, 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 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 716 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 537 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 596 of file gamelog.cpp.

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

static void GamelogGRFBug ( uint32  grfid,
byte  bug,
uint64  data 
) [static]

Logs triggered GRF bug.

Parameters:
grfid ID of problematic GRF
bug type of bug,
See also:
enum GRFBugs
Parameters:
data additional data

Definition at line 471 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRFBUG, GLCT_GRFBUG, and LoggedChange::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).

Parameters:
grfid the broken NewGRF
internal_id the internal ID of whatever's broken in the NewGRF
Returns:
true iff a unique record was done

Definition at line 491 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 553 of file gamelog.cpp.

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

Referenced by GamelogGRFUpdate(), and IsGoodGRFConfigList().

static void GamelogGRFMove ( uint32  grfid,
int32  offset 
) [static]

Logs changing GRF order.

Parameters:
grfid GRF that is moved
offset how far it is moved, positive = moved down

Definition at line 567 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLCT_GRFMOVE, and LoggedChange::grfmove.

Referenced by GamelogGRFUpdate().

static void GamelogGRFParameters ( uint32  grfid  )  [static]

Logs change in GRF parameters.

Details about parameters changed are not stored

Parameters:
grfid ID of GRF to store

Definition at line 582 of file gamelog.cpp.

References _gamelog_action_type, GamelogChange(), GLAT_GRF, GLCT_GRFPARAM, and LoggedChange::grfparam.

Referenced by GamelogGRFUpdate().

void GamelogGRFRemove ( uint32  grfid  ) 

Logs removal of a GRF.

Parameters:
grfid ID of removed GRF

Definition at line 524 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 635 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 GamelogPrint ( GamelogPrintProc *  proc  ) 

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

References GamelogPrint().

Referenced by GamelogStopAction().

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

References _gamelog_action_type, and GLAT_NONE.

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

void GamelogTestMode (  ) 

Finds last stored game mode or landscape.

Any change is logged

Definition at line 450 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 428 of file gamelog.cpp.

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

static GRFList* GenerateGRFList ( const GRFConfig grfc  )  [static]

Generates GRFList.

Parameters:
grfc head of GRF linked list

Definition at line 614 of file gamelog.cpp.

References GRFList::grf, IsLoggableGrfConfig(), GRFList::n, and GRFConfig::next.

Referenced by GamelogGRFUpdate().

static bool IsLoggableGrfConfig ( const GRFConfig g  )  [inline, static]

Decides if GRF should be logged.

Parameters:
g grf to determine
Returns:
true iff GRF is not static and is loaded

Definition at line 516 of file gamelog.cpp.

References GRFConfig::flags, GCF_STATIC, GCS_NOT_FOUND, HasBit(), and GRFConfig::status.

Referenced by GamelogGRFAdd(), and GenerateGRFList().

static void PrintGrfFilename ( char *  buf,
uint  grfid 
) [static]

Prints GRF filename if found.

Parameters:
buf The location in the _dbgofs buffer to draw
grfid GRF which filename to print

Definition at line 112 of file gamelog.cpp.

References GRFConfig::filename.

Referenced by GamelogPrint(), and PrintGrfInfo().

static void PrintGrfInfo ( char *  buf,
uint  grfid,
const uint8 *  md5sum 
) [static]

Prints GRF ID, checksum and filename if found.

Parameters:
buf The location in the _dbgofs buffer to draw
grfid GRF ID
md5sum array of md5sum to print

Definition at line 126 of file gamelog.cpp.

References BSWAP32(), lastof, md5sumToString(), and PrintGrfFilename().

Referenced by GamelogPrint().


Variable Documentation

const char* const la_text[] [static]

Initial value:

 {
  "new game started",
  "game loaded",
  "GRF config changed",
  "cheat was used",
  "settings changed",
  "GRF bug triggered",
  "emergency savegame",
}
Text messages for various logged actions.

Definition at line 141 of file gamelog.cpp.

Referenced by GamelogPrint().


Generated on Wed Jan 20 23:38:44 2010 for OpenTTD by  doxygen 1.5.6