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
8#include <generated/protocol.h>
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
38enum
39{
42};
43
45{
46public:
48 ~CSaveTee() = default;
49 void Save(CCharacter *pChr, bool AddPenalty = true);
50 bool Load(CCharacter *pChr, std::optional<int> Team = std::nullopt);
51 char *GetString(const CSaveTeam *pTeam);
52 // returns false if the tee could not be parsed or contains invalid values
53 bool FromString(const char *pString, int MembersCount);
54 void LoadHookedPlayer(const CSaveTeam *pTeam);
55 bool IsHooking() const;
56 vec2 GetPos() const { return m_Pos; }
57 const char *GetName() const { return m_aName; }
58 int GetClientId() const { return m_ClientId; }
59 void SetClientId(int ClientId) { m_ClientId = ClientId; }
60
61 enum
62 {
68 };
69
70private:
72
74 char m_aName[16];
75
79
80 // Teamstuff
84
86 {
87 public:
89 int m_Ammo;
91 int m_Got;
92 } m_aWeapons[NUM_WEAPONS];
93
94 // ninja
95 struct
96 {
97 vec2 m_ActivationDir;
98 int m_ActivationTick;
99 int m_CurrentMoveTime;
100 int m_OldVelAmount;
102
105
115
126
131
133
137
138 // Core
152
153 // player input
158
160
162};
163
165{
166public:
167 CSaveHotReloadTee() = default;
169 void Save(CCharacter *pChr, bool AddPenalty = true);
170 bool Load(CCharacter *pChr, int Team);
171
172private:
177 std::optional<CSaveTee> m_LastDeath;
178};
179
181{
182public:
183 ~CSaveTeam();
184 // Returns nullptr if the team is too large to be saved
185 const char *GetString();
186 int GetMembersCount() const { return m_MembersCount; }
187 // MatchPlayers has to be called afterwards
188 int FromString(const char *pString);
189 // returns true if a team can load, otherwise writes a nice error Message in pMessage
190 bool MatchPlayers(const char (*paNames)[MAX_NAME_LENGTH], const int *pClientId, int NumPlayer, char *pMessage, int MessageLen) const;
191 ESaveResult Save(CGameContext *pGameServer, int Team, bool Dry = false, bool Force = false);
192 bool Load(CGameContext *pGameServer, int Team, bool KeepCurrentWeakStrong, bool IgnorePlayers = false);
193
195
196 // returns true if an error occurred
197 static bool HandleSaveError(ESaveResult Result, int ClientId, CGameContext *pGameContext);
198
199private:
200 CCharacter *MatchCharacter(CGameContext *pGameServer, int ClientId, int SaveId, bool KeepCurrentCharacter) const;
201
203
205 {
209 };
211
216 int m_Practice = 0;
217};
218
219#endif // GAME_SERVER_SAVE_H
Definition character.h:24
Definition gamecontext.h:114
Definition gameworld.h:18
CSaveTee m_SavedTeleTee
Definition save.h:176
std::optional< CSaveTee > m_LastDeath
Definition save.h:177
CSaveTee m_SaveTee
Definition save.h:173
~CSaveHotReloadTee()=default
void Save(CCharacter *pChr, bool AddPenalty=true)
Definition save.cpp:536
CSaveHotReloadTee()=default
bool m_Invincible
Definition save.h:175
bool m_Super
Definition save.h:174
bool Load(CCharacter *pChr, int Team)
Definition save.cpp:545
Definition save.h:181
bool Load(CGameContext *pGameServer, int Team, bool KeepCurrentWeakStrong, bool IgnorePlayers=false)
Definition save.cpp:661
const char * GetString()
Definition save.cpp:715
int FromString(const char *pString)
Definition save.cpp:747
SSimpleSwitchers * m_pSwitchers
Definition save.h:210
ETeamState m_TeamState
Definition save.h:212
ESaveResult Save(CGameContext *pGameServer, int Team, bool Dry=false, bool Force=false)
Definition save.cpp:562
int m_MembersCount
Definition save.h:213
char m_aString[MAX_SAVE_STRING_LENGTH]
Definition save.h:202
int m_TeamLocked
Definition save.h:215
CCharacter * MatchCharacter(CGameContext *pGameServer, int ClientId, int SaveId, bool KeepCurrentCharacter) const
Definition save.cpp:704
static bool HandleSaveError(ESaveResult Result, int ClientId, CGameContext *pGameContext)
Definition save.cpp:633
int GetMembersCount() const
Definition save.h:186
CSaveTee * m_pSavedTees
Definition save.h:194
int m_HighestSwitchNumber
Definition save.h:214
bool MatchPlayers(const char(*paNames)[MAX_NAME_LENGTH], const int *pClientId, int NumPlayer, char *pMessage, int MessageLen) const
Definition save.cpp:905
int m_Practice
Definition save.h:216
Definition save.h:86
int m_Ammocost
Definition save.h:90
int m_AmmoRegenStart
Definition save.h:88
int m_Got
Definition save.h:91
int m_Ammo
Definition save.h:89
Definition save.h:45
int m_HookHitEnabled
Definition save.h:120
vec2 m_HookTeleBase
Definition save.h:147
int m_LastPenalty
Definition save.h:125
void SetClientId(int ClientId)
Definition save.h:59
int m_Jumps
Definition save.h:144
bool Load(CCharacter *pChr, std::optional< int > Team=std::nullopt)
Definition save.cpp:142
int m_LiveFrozen
Definition save.h:112
int m_Jetpack
Definition save.h:107
int m_QueuedWeapon
Definition save.h:104
int m_DeepFrozen
Definition save.h:111
int m_LastTimeCp
Definition save.h:128
~CSaveTee()=default
int m_NinjaJetpack
Definition save.h:108
int m_Time
Definition save.h:121
int m_CollisionEnabled
Definition save.h:117
int m_HitDisabledFlags
Definition save.h:116
int m_EndlessHook
Definition save.h:113
int m_NewHook
Definition save.h:151
int m_TuneZoneOld
Definition save.h:119
struct CSaveTee::@310247200256332105157274107322233264224301363171 m_Ninja
int GetClientId() const
Definition save.h:58
int m_InputFire
Definition save.h:156
class CSaveTee::CWeaponStat m_aWeapons[NUM_WEAPONS]
int m_NeededFaketuning
Definition save.h:78
int m_LastTimeCpBroadcasted
Definition save.h:129
int m_InputJump
Definition save.h:155
int m_HookState
Definition save.h:149
int m_LastWeapon
Definition save.h:103
int m_Paused
Definition save.h:77
bool FromString(const char *pString, int MembersCount)
Definition save.cpp:365
const char * GetName() const
Definition save.h:57
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition save.h:130
int m_Alive
Definition save.h:76
char m_aString[MAX_SAVE_TEE_STRING_LENGTH]
Definition save.h:73
int m_JumpedTotal
Definition save.h:143
int m_FreezeTime
Definition save.h:109
int m_Jumped
Definition save.h:142
int m_HasTelegunLaser
Definition save.h:136
int m_HasTelegunGrenade
Definition save.h:135
vec2 m_HookPos
Definition save.h:145
int m_TeleCheckpoint
Definition save.h:124
char m_aGameUuid[UUID_MAXSTRSIZE]
Definition save.h:161
int m_TeeFinished
Definition save.h:82
int m_TimeCpBroadcastEndTime
Definition save.h:127
vec2 m_PrevPos
Definition save.h:123
int m_TuneZone
Definition save.h:118
vec2 GetPos() const
Definition save.h:56
char m_aName[16]
Definition save.h:74
bool IsHooking() const
Definition save.cpp:531
void Save(CCharacter *pChr, bool AddPenalty=true)
Definition save.cpp:22
int m_IsSolo
Definition save.h:83
void LoadHookedPlayer(const CSaveTeam *pTeam)
Definition save.cpp:524
vec2 m_CorePos
Definition save.h:139
int m_InputHook
Definition save.h:157
int m_HookedPlayer
Definition save.h:150
int m_HasTelegunGun
Definition save.h:134
vec2 m_Pos
Definition save.h:122
int m_ReloadTimer
Definition save.h:159
int m_ClientId
Definition save.h:71
int m_ActiveWeapon
Definition save.h:141
char * GetString(const CSaveTeam *pTeam)
Definition save.cpp:278
int m_HookTick
Definition save.h:148
vec2 m_Vel
Definition save.h:140
int m_NotEligibleForFinish
Definition save.h:132
int m_TeeStarted
Definition save.h:81
int m_EndlessJump
Definition save.h:106
int m_InputDirection
Definition save.h:154
@ SHOTGUN_HIT_DISABLED
Definition save.h:65
@ LASER_HIT_DISABLED
Definition save.h:67
@ GRENADE_HIT_DISABLED
Definition save.h:66
@ HAMMER_HIT_DISABLED
Definition save.h:64
@ HIT_ALL
Definition save.h:63
int m_FreezeStart
Definition save.h:110
vec2 m_HookDir
Definition save.h:146
int m_DDRaceState
Definition save.h:114
Definition gamecontroller.h:24
@ MAX_CHECKPOINTS
Definition protocol.h:93
@ MAX_NAME_LENGTH
Definition protocol.h:109
@ 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
@ MAX_SAVE_TEE_STRING_LENGTH
Definition save.h:40
@ MAX_SAVE_STRING_LENGTH
Definition save.h:41
Definition save.h:205
int m_EndTime
Definition save.h:207
int m_Type
Definition save.h:208
int m_Status
Definition save.h:206
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