This to prevent compilation issues between runs with and without precompiled headers. Also remove the headers from the rest of the code base as they are not needed there anymore, although they do relatively little harm.
102 lines
3.3 KiB
C++
102 lines
3.3 KiB
C++
/*
|
|
* This file is part of OpenTTD.
|
|
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
|
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/** @file gamelog.h Functions to be called to log possibly unsafe game events */
|
|
|
|
#ifndef GAMELOG_H
|
|
#define GAMELOG_H
|
|
|
|
#include "newgrf_config.h"
|
|
|
|
/** The actions we log. */
|
|
enum GamelogActionType : uint8 {
|
|
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 = 0xFF, ///< No logging active; in savegames, end of list
|
|
};
|
|
|
|
/** Type of logged change */
|
|
enum GamelogChangeType : uint8 {
|
|
GLCT_MODE, ///< Scenario editor x Game, different landscape
|
|
GLCT_REVISION, ///< Changed game revision string
|
|
GLCT_OLDVER, ///< Loaded from savegame without logged data
|
|
GLCT_SETTING, ///< Non-networksafe setting value changed
|
|
GLCT_GRFADD, ///< Removed GRF
|
|
GLCT_GRFREM, ///< Added GRF
|
|
GLCT_GRFCOMPAT, ///< Loading compatible GRF
|
|
GLCT_GRFPARAM, ///< GRF parameter changed
|
|
GLCT_GRFMOVE, ///< GRF order changed
|
|
GLCT_GRFBUG, ///< GRF bug triggered
|
|
GLCT_EMERGENCY, ///< Emergency savegame
|
|
GLCT_END, ///< So we know how many GLCTs are there
|
|
GLCT_NONE = 0xFF, ///< In savegames, end of list
|
|
};
|
|
|
|
struct LoggedChange;
|
|
struct LoggedAction;
|
|
struct GamelogInternalData;
|
|
|
|
class Gamelog {
|
|
private:
|
|
std::unique_ptr<GamelogInternalData> data;
|
|
GamelogActionType action_type;
|
|
struct LoggedAction *current_action;
|
|
|
|
LoggedChange *Change(GamelogChangeType ct);
|
|
|
|
public:
|
|
Gamelog();
|
|
~Gamelog();
|
|
|
|
void StartAction(GamelogActionType at);
|
|
void StopAction();
|
|
void StopAnyAction();
|
|
|
|
void Reset();
|
|
|
|
void Print(std::function<void(const std::string &)> proc);
|
|
void PrintDebug(int level);
|
|
void PrintConsole();
|
|
|
|
void Emergency();
|
|
bool TestEmergency();
|
|
|
|
void Revision();
|
|
void Mode();
|
|
void Oldver();
|
|
void Setting(const std::string &name, int32 oldval, int32 newval);
|
|
|
|
void GRFUpdate(const GRFConfig *oldg, const GRFConfig *newg);
|
|
void GRFAddList(const GRFConfig *newg);
|
|
void GRFRemove(uint32 grfid);
|
|
void GRFAdd(const GRFConfig *newg);
|
|
void GRFBug(uint32 grfid, byte bug, uint64 data);
|
|
bool GRFBugReverse(uint32 grfid, uint16 internal_id);
|
|
void GRFCompatible(const GRFIdentifier *newg);
|
|
void GRFMove(uint32 grfid, int32 offset);
|
|
void GRFParameters(uint32 grfid);
|
|
|
|
void TestRevision();
|
|
void TestMode();
|
|
|
|
void Info(uint32 *last_ottd_rev, byte *ever_modified, bool *removed_newgrfs);
|
|
const GRFIdentifier *GetOverriddenIdentifier(const GRFConfig *c);
|
|
|
|
/* Saveload handler for gamelog needs access to internal data. */
|
|
friend struct GLOGChunkHandler;
|
|
};
|
|
|
|
extern Gamelog _gamelog;
|
|
|
|
#endif /* GAMELOG_H */
|