OpenTTD Source 20241224-master-gf74b0cf984
gamelog.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * 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.
4 * 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.
5 * 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/>.
6 */
7
10#ifndef GAMELOG_H
11#define GAMELOG_H
12
13#include "newgrf_config.h"
14
27
44
45struct LoggedChange;
46struct LoggedAction;
48
49class Gamelog {
50private:
51 std::unique_ptr<GamelogInternalData> data;
52 GamelogActionType action_type;
53 struct LoggedAction *current_action;
54
55 void Change(std::unique_ptr<LoggedChange> &&change);
56
57public:
58 Gamelog();
59 ~Gamelog();
60
62 void StopAction();
63 void StopAnyAction();
64
65 void Reset();
66
67 void Print(std::function<void(const std::string &)> proc);
68 void PrintDebug(int level);
69 void PrintConsole();
70
71 void Emergency();
72 bool TestEmergency();
73
74 void Revision();
75 void Mode();
76 void Oldver();
77 void Setting(const std::string &name, int32_t oldval, int32_t newval);
78
79 void GRFUpdate(const GRFConfig *oldg, const GRFConfig *newg);
80 void GRFAddList(const GRFConfig *newg);
81 void GRFRemove(uint32_t grfid);
82 void GRFAdd(const GRFConfig *newg);
83 void GRFBug(uint32_t grfid, uint8_t bug, uint64_t data);
84 bool GRFBugReverse(uint32_t grfid, uint16_t internal_id);
85 void GRFCompatible(const GRFIdentifier *newg);
86 void GRFMove(uint32_t grfid, int32_t offset);
87 void GRFParameters(uint32_t grfid);
88
89 void TestRevision();
90 void TestMode();
91
92 void Info(uint32_t *last_ottd_rev, uint8_t *ever_modified, bool *removed_newgrfs);
94
95 /* Saveload handler for gamelog needs access to internal data. */
96 friend struct GLOGChunkHandler;
97};
98
99extern Gamelog _gamelog;
100
101#endif /* GAMELOG_H */
void TestRevision()
Finds out if current revision is different than last revision stored in the savegame.
Definition gamelog.cpp:425
void GRFBug(uint32_t grfid, uint8_t bug, uint64_t data)
Logs triggered GRF bug.
Definition gamelog.cpp:466
void Mode()
Logs a change in game mode (scenario editor or game)
Definition gamelog.cpp:389
void Info(uint32_t *last_ottd_rev, uint8_t *ever_modified, bool *removed_newgrfs)
Get some basic information from the given gamelog.
Definition gamelog.cpp:685
void PrintDebug(int level)
Prints gamelog to debug output.
Definition gamelog.cpp:323
void GRFAddList(const GRFConfig *newg)
Logs adding of list of GRFs.
Definition gamelog.cpp:578
void PrintConsole()
Print the gamelog data to the console.
Definition gamelog.cpp:310
void GRFCompatible(const GRFIdentifier *newg)
Logs loading compatible GRF (the same ID, but different MD5 hash)
Definition gamelog.cpp:542
void GRFParameters(uint32_t grfid)
Logs change in GRF parameters.
Definition gamelog.cpp:566
void Revision()
Logs a change in game revision.
Definition gamelog.cpp:378
void StartAction(GamelogActionType at)
Stores information about new action, but doesn't allocate it Action is allocated only when there is a...
Definition gamelog.cpp:65
void Reset()
Resets and frees all memory allocated - used before loading or starting a new game.
Definition gamelog.cpp:94
const GRFIdentifier * GetOverriddenIdentifier(const GRFConfig *c)
Try to find the overridden GRF identifier of the given GRF.
Definition gamelog.cpp:712
void GRFRemove(uint32_t grfid)
Logs removal of a GRF.
Definition gamelog.cpp:517
void GRFUpdate(const GRFConfig *oldg, const GRFConfig *newg)
Compares two NewGRF lists and logs any change.
Definition gamelog.cpp:606
void Oldver()
Logs loading from savegame without gamelog.
Definition gamelog.cpp:399
void Emergency()
Logs a emergency savegame.
Definition gamelog.cpp:352
bool GRFBugReverse(uint32_t grfid, uint16_t internal_id)
Logs GRF bug - rail vehicle has different length after reversing.
Definition gamelog.cpp:482
void TestMode()
Finds last stored game mode or landscape.
Definition gamelog.cpp:446
void StopAction()
Stops logging of any changes.
Definition gamelog.cpp:74
void Setting(const std::string &name, int32_t oldval, int32_t newval)
Logs change in game settings.
Definition gamelog.cpp:413
void Print(std::function< void(const std::string &)> proc)
Prints active gamelog.
Definition gamelog.cpp:147
void Change(std::unique_ptr< LoggedChange > &&change)
Allocates a new LoggedAction if needed, and add the change when action is active.
Definition gamelog.cpp:335
bool TestEmergency()
Finds out if current game is a loaded emergency savegame.
Definition gamelog.cpp:364
void GRFMove(uint32_t grfid, int32_t offset)
Logs changing GRF order.
Definition gamelog.cpp:554
void GRFAdd(const GRFConfig *newg)
Logs adding of a GRF.
Definition gamelog.cpp:528
Gamelog _gamelog
Gamelog instance.
Definition gamelog.cpp:31
GamelogChangeType
Type of logged change.
Definition gamelog.h:29
@ GLCT_MODE
Scenario editor x Game, different landscape.
Definition gamelog.h:30
@ GLCT_OLDVER
Loaded from savegame without logged data.
Definition gamelog.h:32
@ GLCT_SETTING
Non-networksafe setting value changed.
Definition gamelog.h:33
@ GLCT_GRFCOMPAT
Loading compatible GRF.
Definition gamelog.h:36
@ GLCT_GRFADD
Removed GRF.
Definition gamelog.h:34
@ GLCT_END
So we know how many GLCTs are there.
Definition gamelog.h:41
@ GLCT_EMERGENCY
Emergency savegame.
Definition gamelog.h:40
@ GLCT_GRFPARAM
GRF parameter changed.
Definition gamelog.h:37
@ GLCT_GRFMOVE
GRF order changed.
Definition gamelog.h:38
@ GLCT_GRFREM
Added GRF.
Definition gamelog.h:35
@ GLCT_GRFBUG
GRF bug triggered.
Definition gamelog.h:39
@ GLCT_REVISION
Changed game revision string.
Definition gamelog.h:31
@ GLCT_NONE
In savegames, end of list.
Definition gamelog.h:42
GamelogActionType
The actions we log.
Definition gamelog.h:16
@ GLAT_GRFBUG
GRF bug was triggered.
Definition gamelog.h:22
@ GLAT_START
Game created.
Definition gamelog.h:17
@ GLAT_NONE
No logging active; in savegames, end of list.
Definition gamelog.h:25
@ GLAT_GRF
GRF changed.
Definition gamelog.h:19
@ GLAT_END
So we know how many GLATs are there.
Definition gamelog.h:24
@ GLAT_LOAD
Game loaded.
Definition gamelog.h:18
@ GLAT_CHEAT
Cheat was used.
Definition gamelog.h:20
@ GLAT_EMERGENCY
Emergency savegame.
Definition gamelog.h:23
@ GLAT_SETTING
Setting changed.
Definition gamelog.h:21
Functions to find and configure NewGRFs.
Information about GRF, used in the game and (part of it) in savegames.
Basic data to distinguish a GRF.
Contains information about one logged action that caused at least one logged change.