22#ifndef GUI_EVENTRECORDER_H
23#define GUI_EVENTRECORDER_H
25#include "common/system.h"
27#include "common/events.h"
28#include "common/savefile.h"
29#include "common/singleton.h"
31#include "engines/advancedDetector.h"
33#ifdef ENABLE_EVENTRECORDER
35#include "common/mutex.h"
36#include "common/array.h"
37#include "common/memstream.h"
38#include "backends/mixer/mixer.h"
39#include "common/hashmap.h"
40#include "common/hash-str.h"
41#include "backends/timer/sdl/sdl-timer.h"
42#include "common/config-manager.h"
43#include "common/recorderfile.h"
44#include "backends/saves/recorder/recorder-saves.h"
45#include "backends/mixer/null/null-mixer.h"
46#include "backends/saves/default/default-saves.h"
49#define g_eventRec (GUI::EventRecorder::instance())
57class SeekableReadStream;
69 ~EventRecorder()
override;
75 kRecorderPlayback = 2,
76 kRecorderPlaybackPause = 3,
82 bool processDelayMillis();
83 void setFastPlayback(
bool fastPlayback);
85 void processTimeAndDate(
TimeDate &td,
bool skipRecord);
86 void processMillis(uint32 &millis,
bool skipRecord);
87 void processScreenUpdate();
89 bool processAutosave();
94 void preDrawOverlayGui();
95 void postDrawOverlayGui();
144 void setRedraw(
bool redraw) {
145 _needRedraw = redraw;
147 void setRecordModalDialog(
bool record) {
148 _recordModalDialog = record;
158 bool checkForContinueGame();
160 void acquireRecording() {
161 assert(_acquireCount >= 0);
162 if (_acquireCount == 0) {
163 _savedState = _initialized;
164 if (!_recordModalDialog)
165 _initialized =
false;
170 void releaseRecording() {
171 assert(_acquireCount > 0);
173 if (_acquireCount == 0)
174 _initialized = _savedState;
177 RecordMode getRecordMode()
const {
185 SDL_Surface *getSurface(
int width,
int height);
186 void RegisterEventSource();
191 void updateSubsystems();
193 void switchFastMode();
201 bool isImGuiRecorderEnabled()
const;
205 void notifyPoll()
override;
207 volatile uint32 _fakeTimer;
211 bool _recordModalDialog;
212 bool _needcontinueGame;
226 void setFileHeader();
231 void applyPlaybackSettings();
234 void switchTimerManagers();
238 void takeScreenshot();
249 bool allowMapping()
const override {
return false; }
251 volatile uint32 _lastMillis;
252 uint32 _lastScreenshotTime;
253 uint32 _screenshotPeriod;
257 void saveScreenShot();
258 void checkRecordedMD5();
259 void deleteTemporarySave();
260 void updateFakeTimer(uint32 millis);
261 void postPlaybackQuit();
262 volatile RecordMode _recordMode;
266 bool _processingMillis;
267 bool _playbackQuitPosted;
Definition: config-manager.h:59
Definition: recorderfile.h:84
Definition: savefile.h:142
Definition: singleton.h:42
Definition: default-timer.h:47
Definition: onscreendialog.h:30
Definition: null-mixer.h:36
Definition: recorder-saves.h:30
Definition: advancedDetector.h:164
Definition: recorderfile.h:50