DDNet documentation
Loading...
Searching...
No Matches
save.h
Go to the documentation of this file.
1#ifndef GAME_SERVER_SAVE_H
2#define GAME_SERVER_SAVE_H
3
4#include <base/vmath.h>
5
7
9
10#include <game/team_state.h>
11
12#include <optional>
13
14class IGameController;
15class CGameContext;
16class CGameWorld;
17class CCharacter;
18class CSaveTeam;
19
20enum
21{
25};
26
37
39{
40public:
42 ~CSaveTee() = default;
43 void Save(CCharacter *pChr, bool AddPenalty = true);
44 bool Load(CCharacter *pChr, std::optional<int> Team = std::nullopt);
45 char *GetString(const CSaveTeam *pTeam);
46 // returns false if the tee could not be parsed or contains invalid values
47 bool FromString(const char *pString, int MembersCount);
48 void LoadHookedPlayer(const CSaveTeam *pTeam);
49 bool IsHooking() const;
50 vec2 GetPos() const { return m_Pos; }
51 const char *GetName() const { return m_aName; }
52 int GetClientId() const { return m_ClientId; }
53 void SetClientId(int ClientId) { m_ClientId = ClientId; }
54
55 enum
56 {
62 };
63
64private:
66
67 char m_aString[2048];
68 char m_aName[16];
69
73
74 // Teamstuff
78
87
88 // ninja
89 struct
90 {
96
99
109
120
125
127
131
132 // Core
146
147 // player input
152
154
156};
157
159{
160public:
161 CSaveHotReloadTee() = default;
163 void Save(CCharacter *pChr, bool AddPenalty = true);
164 bool Load(CCharacter *pChr, int Team);
165
166private:
171 std::optional<CSaveTee> m_LastDeath;
172};
173
175{
176public:
177 CSaveTeam();
178 ~CSaveTeam();
179 char *GetString();
180 int GetMembersCount() const { return m_MembersCount; }
181 // MatchPlayers has to be called afterwards
182 int FromString(const char *pString);
183 // returns true if a team can load, otherwise writes a nice error Message in pMessage
184 bool MatchPlayers(const char (*paNames)[MAX_NAME_LENGTH], const int *pClientId, int NumPlayer, char *pMessage, int MessageLen) const;
185 ESaveResult Save(CGameContext *pGameServer, int Team, bool Dry = false, bool Force = false);
186 bool Load(CGameContext *pGameServer, int Team, bool KeepCurrentWeakStrong, bool IgnorePlayers = false);
187
189
190 // returns true if an error occurred
191 static bool HandleSaveError(ESaveResult Result, int ClientId, CGameContext *pGameContext);
192
193private:
194 CCharacter *MatchCharacter(CGameContext *pGameServer, int ClientId, int SaveId, bool KeepCurrentCharacter) const;
195
196 char m_aString[65536];
197
199 {
203 };
205
210 int m_Practice = 0;
211};
212
213#endif // GAME_SERVER_SAVE_H
Definition character.h:24
Definition gamecontext.h:114
Definition gameworld.h:18
CSaveTee m_SavedTeleTee
Definition save.h:170
std::optional< CSaveTee > m_LastDeath
Definition save.h:171
CSaveTee m_SaveTee
Definition save.h:167
~CSaveHotReloadTee()=default
void Save(CCharacter *pChr, bool AddPenalty=true)
Definition save.cpp:528
CSaveHotReloadTee()=default
bool m_Invincible
Definition save.h:169
bool m_Super
Definition save.h:168
bool Load(CCharacter *pChr, int Team)
Definition save.cpp:537
Definition save.h:175
bool Load(CGameContext *pGameServer, int Team, bool KeepCurrentWeakStrong, bool IgnorePlayers=false)
Definition save.cpp:658
int FromString(const char *pString)
Definition save.cpp:736
CSaveTeam()
Definition save.cpp:548
SSimpleSwitchers * m_pSwitchers
Definition save.h:204
ETeamState m_TeamState
Definition save.h:206
ESaveResult Save(CGameContext *pGameServer, int Team, bool Dry=false, bool Force=false)
Definition save.cpp:559
char * GetString()
Definition save.cpp:712
int m_MembersCount
Definition save.h:207
char m_aString[65536]
Definition save.h:196
int m_TeamLocked
Definition save.h:209
CCharacter * MatchCharacter(CGameContext *pGameServer, int ClientId, int SaveId, bool KeepCurrentCharacter) const
Definition save.cpp:701
static bool HandleSaveError(ESaveResult Result, int ClientId, CGameContext *pGameContext)
Definition save.cpp:630
~CSaveTeam()
Definition save.cpp:553
int GetMembersCount() const
Definition save.h:180
CSaveTee * m_pSavedTees
Definition save.h:188
int m_HighestSwitchNumber
Definition save.h:208
bool MatchPlayers(const char(*paNames)[MAX_NAME_LENGTH], const int *pClientId, int NumPlayer, char *pMessage, int MessageLen) const
Definition save.cpp:896
int m_Practice
Definition save.h:210
Definition save.h:80
int m_Ammocost
Definition save.h:84
int m_AmmoRegenStart
Definition save.h:82
int m_Got
Definition save.h:85
int m_Ammo
Definition save.h:83
Definition save.h:39
char m_aString[2048]
Definition save.h:67
int m_HookHitEnabled
Definition save.h:114
vec2 m_HookTeleBase
Definition save.h:141
int m_LastPenalty
Definition save.h:119
void SetClientId(int ClientId)
Definition save.h:53
int m_Jumps
Definition save.h:138
struct CSaveTee::@364004040053243103036316345110337021171270201272 m_Ninja
bool Load(CCharacter *pChr, std::optional< int > Team=std::nullopt)
Definition save.cpp:141
int m_LiveFrozen
Definition save.h:106
vec2 m_ActivationDir
Definition save.h:91
int m_Jetpack
Definition save.h:101
int m_QueuedWeapon
Definition save.h:98
int m_DeepFrozen
Definition save.h:105
int m_LastTimeCp
Definition save.h:122
~CSaveTee()=default
int m_NinjaJetpack
Definition save.h:102
int m_Time
Definition save.h:115
int m_CollisionEnabled
Definition save.h:111
int m_HitDisabledFlags
Definition save.h:110
int m_EndlessHook
Definition save.h:107
int m_CurrentMoveTime
Definition save.h:93
int m_NewHook
Definition save.h:145
int m_TuneZoneOld
Definition save.h:113
int GetClientId() const
Definition save.h:52
int m_InputFire
Definition save.h:150
class CSaveTee::CWeaponStat m_aWeapons[NUM_WEAPONS]
int m_NeededFaketuning
Definition save.h:72
int m_LastTimeCpBroadcasted
Definition save.h:123
int m_InputJump
Definition save.h:149
int m_HookState
Definition save.h:143
int m_LastWeapon
Definition save.h:97
int m_Paused
Definition save.h:71
bool FromString(const char *pString, int MembersCount)
Definition save.cpp:357
const char * GetName() const
Definition save.h:51
int m_ActivationTick
Definition save.h:92
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition save.h:124
int m_Alive
Definition save.h:70
int m_JumpedTotal
Definition save.h:137
int m_OldVelAmount
Definition save.h:94
int m_FreezeTime
Definition save.h:103
int m_Jumped
Definition save.h:136
int m_HasTelegunLaser
Definition save.h:130
int m_HasTelegunGrenade
Definition save.h:129
vec2 m_HookPos
Definition save.h:139
int m_TeleCheckpoint
Definition save.h:118
char m_aGameUuid[UUID_MAXSTRSIZE]
Definition save.h:155
int m_TeeFinished
Definition save.h:76
int m_TimeCpBroadcastEndTime
Definition save.h:121
vec2 m_PrevPos
Definition save.h:117
int m_TuneZone
Definition save.h:112
vec2 GetPos() const
Definition save.h:50
char m_aName[16]
Definition save.h:68
bool IsHooking() const
Definition save.cpp:523
void Save(CCharacter *pChr, bool AddPenalty=true)
Definition save.cpp:21
int m_IsSolo
Definition save.h:77
void LoadHookedPlayer(const CSaveTeam *pTeam)
Definition save.cpp:516
vec2 m_CorePos
Definition save.h:133
int m_InputHook
Definition save.h:151
int m_HookedPlayer
Definition save.h:144
int m_HasTelegunGun
Definition save.h:128
vec2 m_Pos
Definition save.h:116
int m_ReloadTimer
Definition save.h:153
int m_ClientId
Definition save.h:65
int m_ActiveWeapon
Definition save.h:135
char * GetString(const CSaveTeam *pTeam)
Definition save.cpp:270
int m_HookTick
Definition save.h:142
@ SHOTGUN_HIT_DISABLED
Definition save.h:59
@ LASER_HIT_DISABLED
Definition save.h:61
@ GRENADE_HIT_DISABLED
Definition save.h:60
@ HAMMER_HIT_DISABLED
Definition save.h:58
@ HIT_ALL
Definition save.h:57
vec2 m_Vel
Definition save.h:134
int m_NotEligibleForFinish
Definition save.h:126
int m_TeeStarted
Definition save.h:75
int m_EndlessJump
Definition save.h:100
int m_InputDirection
Definition save.h:148
int m_FreezeStart
Definition save.h:104
vec2 m_HookDir
Definition save.h:140
int m_DDRaceState
Definition save.h:108
Definition gamecontroller.h:24
@ MAX_CHECKPOINTS
Definition protocol.h:93
@ MAX_NAME_LENGTH
Definition protocol.h:109
@ NUM_WEAPONS
Definition protocol.h:1601
@ NUM_RESCUEMODES
Definition save.h:24
@ RESCUEMODE_AUTO
Definition save.h:22
@ RESCUEMODE_MANUAL
Definition save.h:23
ESaveResult
Definition save.h:28
@ NOT_STARTED
Definition save.h:33
@ TEAM_0_MODE
Definition save.h:34
@ DRAGGER_ACTIVE
Definition save.h:35
@ TEAM_NOT_FOUND
Definition save.h:31
@ SUCCESS
Definition save.h:29
@ CHAR_NOT_FOUND
Definition save.h:32
Definition save.h:199
int m_EndTime
Definition save.h:201
int m_Type
Definition save.h:202
int m_Status
Definition save.h:200
ETeamState
Definition team_state.h:5
@ EMPTY
Definition team_state.h:6
@ TEAM_FLOCK
Definition teamscore.h:9
@ UUID_MAXSTRSIZE
Definition uuid_manager.h:8
vector2_base< float > vec2
Definition vmath.h:168