1/* (c) Redix and Sushi */
2
3#ifndef GAME_CLIENT_COMPONENTS_RACE_DEMO_H
4#define GAME_CLIENT_COMPONENTS_RACE_DEMO_H
5
6#include <game/client/component.h>
7
8#include <chrono>
9
10class CRaceDemo : public CComponent
11{
12 enum
13 {
14 RACE_NONE = 0,
15 RACE_IDLE,
16 RACE_PREPARE,
17 RACE_STARTED,
18 RACE_FINISHED,
19 };
20
21 static const char *ms_pRaceDemoDir;
22
23 char m_aTmpFilename[128];
24
25 int m_RaceState;
26 int m_RaceStartTick;
27 int m_RecordStopTick;
28 int m_Time;
29
30 std::chrono::nanoseconds m_RaceDemosLoadStartTime{0};
31
32 static int RaceDemolistFetchCallback(const CFsFileInfo *pInfo, int IsDir, int StorageType, void *pUser);
33
34 void GetPath(char *pBuf, int Size, int Time = -1) const;
35
36 void StopRecord(int Time = -1);
37 bool CheckDemo(int Time);
38
39public:
40 bool m_AllowRestart;
41
42 CRaceDemo();
43 int Sizeof() const override { return sizeof(*this); }
44
45 void OnReset() override;
46 void OnStateChange(int NewState, int OldState) override;
47 void OnMessage(int MsgType, void *pRawMsg) override;
48 void OnMapLoad() override;
49 void OnShutdown() override;
50 void OnNewSnapshot() override;
51};
52#endif
53