DDNet documentation
Loading...
Searching...
No Matches
player.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_SERVER_PLAYER_H
4#define GAME_SERVER_PLAYER_H
5
6#include "teeinfo.h"
7
8#include <base/vmath.h>
9
11
12#include <game/alloc.h>
13#include <game/server/save.h>
14
15#include <memory>
16#include <optional>
17
18class CCharacter;
19class CGameContext;
20class IServer;
23
24// player object
26{
28
29public:
30 CPlayer(CGameContext *pGameServer, uint32_t UniqueClientId, int ClientId, int Team);
31 ~CPlayer();
32
33 void Reset();
34
35 void TryRespawn();
36
37 // mark respawning, with weak hook if WeakHook is true and strong otherwise
38 void Respawn(bool WeakHook = false);
39 CCharacter *ForceSpawn(vec2 Pos); // required for loading savegames
40 void SetTeam(int Team, bool DoChatMsg = true);
41 int GetTeam() const { return m_Team; }
42 int GetCid() const { return m_ClientId; }
43 uint32_t GetUniqueCid() const { return m_UniqueClientId; }
44 int GetClientVersion() const;
45 bool SetTimerType(int TimerType);
46
47 void Tick();
48 void PostTick();
49
50 // will be called after all Tick and PostTick calls from other players
51 void PostPostTick();
52 void Snap(int SnappingClient);
53 void FakeSnap();
54 void SendConnect(int FakeId, int ClientId);
55 void SendDisconnect(int FakeId);
57
58 void OnDirectInput(const CNetObj_PlayerInput *pNewInput);
59 void OnPredictedInput(const CNetObj_PlayerInput *pNewInput);
60 void OnPredictedEarlyInput(const CNetObj_PlayerInput *pNewInput);
61 void OnDisconnect();
62
63 void KillCharacter(int Weapon = WEAPON_GAME, bool SendKillMsg = true);
65 const CCharacter *GetCharacter() const;
66
67 void SpectatePlayerName(const char *pName);
68
69 //---------------------------------------------------------
70 // this is used for snapping so we know how we can clip the view for the player
74
75 // states if the client is chatting, accessing a menu etc.
77
78 // used for snapping to just update latency if the scoreboard is active
80
81 int m_SentSnaps = 0;
82
83 int SpectatorId() const { return m_SpectatorId; }
84 void SetSpectatorId(int Id);
85
87
88 //
89 int m_Vote;
91 //
105
107
109
115
116 // network latency calculations
117 struct
118 {
122 int m_Avg;
123 int m_Min;
124 int m_Max;
126
127private:
128 const uint32_t m_UniqueClientId;
132
134 IServer *Server() const;
135
136 //
141
142 // used for spectator mode
144
147 int64_t m_LastPause;
148 bool m_Afk;
149
154
155public:
156 enum
157 {
161 };
162
163 enum
164 {
171 };
172
173 bool m_DND;
177
178 void ProcessPause();
179 int Pause(int State, bool Force);
180 int ForcePause(int Time);
181 int IsPaused() const;
182 bool CanSpec() const;
183
184 bool IsPlaying() const;
186 std::optional<int64_t> m_LastDDRaceTeamChange;
193
194 // camera info is used sparingly for converting aim target to absolute world coordinates
196 {
197 friend class CPlayer;
199 float m_Zoom;
202
203 public:
204 vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const;
205 void Write(const CNetMsg_Cl_CameraInfo *pMsg);
206 void Reset();
208
209 // effective radius for network clipping, updated every tick since it depends on the dynamic camera offset
212
214
216
217 void UpdatePlaytime();
218 void AfkTimer();
219 void SetAfk(bool Afk);
220 void SetInitialAfk(bool Afk);
221 bool IsAfk() const { return m_Afk; }
222
227
230
233
234 // Tick at which to kick the client if it still hasn't identified as a DDNet-based client
236
237 int GetDefaultEmote() const;
238 void OverrideDefaultEmote(int Emote, int Tick);
239 bool CanOverrideDefaultEmote() const;
240
244 std::shared_ptr<CScorePlayerResult> m_ScoreQueryResult;
245 std::shared_ptr<CScorePlayerResult> m_ScoreFinishResult;
249 int m_SwapTargetsClientId; //Client ID of the swap target for the given player
251
253
255 std::optional<CSaveTee> m_LastDeath;
256};
257
258#endif
#define MACRO_ALLOC_POOL_ID()
Definition alloc.h:39
Definition character.h:24
Definition gamecontext.h:114
Definition player.h:196
float m_Zoom
Definition player.h:199
int m_Deadzone
Definition player.h:200
bool m_HasCameraInfo
Definition player.h:198
void Reset()
Definition player.cpp:1099
vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const
Definition player.cpp:1051
int m_FollowFactor
Definition player.h:201
friend class CPlayer
Definition player.h:197
int m_TimerType
Definition player.h:232
void SendConnect(int FakeId, int ClientId)
Definition player.cpp:535
int64_t m_LastSqlQuery
Definition player.h:242
int m_ShowOthers
Definition player.h:187
bool m_SpecTeam
Definition player.h:191
void OverrideDefaultEmote(int Emote, int Tick)
Definition player.cpp:827
int GetClientVersion() const
Definition player.cpp:642
void SpectatePlayerName(const char *pName)
Definition player.cpp:943
int m_AccumMin
Definition player.h:120
void SetTeam(int Team, bool DoChatMsg=true)
Definition player.cpp:690
bool m_IsReady
Definition player.h:86
void SendDisconnect(int FakeId)
Definition player.cpp:563
class CPlayer::CCameraInfo m_CameraInfo
bool m_Moderating
Definition player.h:215
bool m_LastBroadcastImportance
Definition player.h:226
int m_DDNetVersionKickTick
Definition player.h:235
int m_Paused
Definition player.h:145
int m_Team
Definition player.h:140
void SetInitialAfk(bool Afk)
Definition player.cpp:802
void KillCharacter(int Weapon=WEAPON_GAME, bool SendKillMsg=true)
Definition player.cpp:661
vec2 m_ShowDistance
Definition player.h:190
const uint32_t m_UniqueClientId
Definition player.h:128
bool m_BirthdayAnnounced
Definition player.h:250
CGameContext * GameServer() const
Definition player.h:133
IServer * Server() const
Definition player.cpp:27
int m_LastKill
Definition player.h:100
bool m_Spawning
Definition player.h:137
int m_SpectatorId
Definition player.h:143
int GetTeam() const
Definition player.h:41
std::shared_ptr< CScorePlayerResult > m_ScoreQueryResult
Definition player.h:244
int m_DieTick
Definition player.h:110
@ PAUSE_NONE
Definition player.h:158
@ PAUSE_SPEC
Definition player.h:160
@ PAUSE_PAUSED
Definition player.h:159
int64_t m_EligibleForFinishCheck
Definition player.h:247
void FakeSnap()
Definition player.cpp:483
void ProcessScoreResult(CScorePlayerResult &Result)
Definition player.cpp:958
int m_VotePos
Definition player.h:90
int GetDefaultEmote() const
Definition player.cpp:819
CPlayer(CGameContext *pGameServer, uint32_t UniqueClientId, int ClientId, int Team)
Definition player.cpp:29
bool IsAfk() const
Definition player.h:221
CCharacter * m_pCharacter
Definition player.h:129
void PostTick()
Definition player.cpp:282
int m_aCurLatency[MAX_CLIENTS]
Definition player.h:79
int m_TeamChangeTick
Definition player.h:114
void SetSpectatorId(int Id)
Definition player.cpp:952
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition player.cpp:583
int m_Avg
Definition player.h:122
CGameContext * m_pGameServer
Definition player.h:131
CTeeInfo m_TeeInfos
Definition player.h:108
int64_t m_ForcePauseTime
Definition player.h:146
int m_DefEmote
Definition player.h:150
int m_AccumMax
Definition player.h:121
int m_OverrideEmoteReset
Definition player.h:152
int m_LastChangeInfo
Definition player.h:97
int m_LastActionTick
Definition player.h:113
int m_aStrongWeakId[LEGACY_MAX_CLIENTS]
Definition player.h:56
int m_LastInvited
Definition player.h:104
int m_LastWhisperTo
Definition player.h:103
int m_LastVoteTry
Definition player.h:93
CSaveTee m_LastTeleTee
Definition player.h:254
int m_ChatScore
Definition player.h:213
void AfkTimer()
Definition player.cpp:788
int m_PreviousDieTick
Definition player.h:111
void Snap(int SnappingClient)
Definition player.cpp:313
int m_LastSetSpectatorMode
Definition player.h:96
int m_aLastCommands[4]
Definition player.h:101
vec2 m_ViewPos
Definition player.h:71
int64_t m_LastPlaytime
Definition player.h:223
void OnDisconnect()
Definition player.cpp:576
int m_Vote
Definition player.h:89
std::shared_ptr< CScorePlayerResult > m_ScoreFinishResult
Definition player.h:245
bool m_Afk
Definition player.h:148
int m_RescueMode
Definition player.h:252
int m_Max
Definition player.h:124
bool m_EyeEmoteEnabled
Definition player.h:231
void ProcessPause()
Definition player.cpp:844
int m_LastVoteCall
Definition player.h:92
std::optional< int64_t > m_LastDDRaceTeamChange
Definition player.h:186
int m_ClientId
Definition player.h:139
bool m_ShowAll
Definition player.h:188
int IsPaused() const
Definition player.cpp:933
int m_SendVoteIndex
Definition player.h:106
int ForcePause(int Time)
Definition player.cpp:919
int m_OverrideEmote
Definition player.h:151
void UpdatePlaytime()
Definition player.cpp:783
int m_NumInputs
Definition player.h:130
vec2 m_NetworkClipRadius
Definition player.h:210
char m_aTimeoutCode[64]
Definition player.h:176
void TryRespawn()
Definition player.cpp:765
int GetCid() const
Definition player.h:42
bool m_NotEligibleForFinish
Definition player.h:246
int m_SwapTargetsClientId
Definition player.h:249
int m_LastSetTeam
Definition player.h:95
void OnPredictedEarlyInput(const CNetObj_PlayerInput *pNewInput)
Definition player.cpp:627
int64_t m_LastBroadcast
Definition player.h:225
int m_LastCommandPos
Definition player.h:102
CNetObj_PlayerInput * m_pLastTarget
Definition player.h:228
int m_Min
Definition player.h:123
bool m_EnableSpectatorCount
Definition player.h:189
bool m_LastTargetInit
Definition player.h:229
void SetAfk(bool Afk)
Definition player.cpp:793
uint32_t GetUniqueCid() const
Definition player.h:43
int m_TuneZoneOld
Definition player.h:73
int m_PlayerFlags
Definition player.h:76
int Pause(int State, bool Force)
Definition player.cpp:860
CCharacter * ForceSpawn(vec2 Pos)
Definition player.cpp:681
void PostPostTick()
Definition player.cpp:304
void Reset()
Definition player.cpp:49
int m_TuneZone
Definition player.h:72
@ TIMERTYPE_GAMETIMER
Definition player.h:166
@ TIMERTYPE_DEFAULT
Definition player.h:165
@ TIMERTYPE_BROADCAST
Definition player.h:167
@ TIMERTYPE_SIXUP
Definition player.h:169
@ TIMERTYPE_NONE
Definition player.h:170
@ TIMERTYPE_GAMETIMER_AND_BROADCAST
Definition player.h:168
int m_Accum
Definition player.h:119
bool m_FirstPacket
Definition player.h:241
int64_t m_LastPause
Definition player.h:147
int m_LastEmote
Definition player.h:98
std::optional< CSaveTee > m_LastDeath
Definition player.h:255
CCharacter * GetCharacter()
Definition player.cpp:647
~CPlayer()
Definition player.cpp:41
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition player.cpp:601
bool m_DND
Definition player.h:173
bool CanSpec() const
Definition player.cpp:839
void UpdateNetworkClipRadius()
Definition player.cpp:1065
bool m_WeakHookSpawn
Definition player.h:138
bool SetTimerType(int TimerType)
Definition player.cpp:719
int SpectatorId() const
Definition player.h:83
int64_t m_LastEyeEmote
Definition player.h:224
bool m_VotedForPractice
Definition player.h:248
bool CanOverrideDefaultEmote() const
Definition player.cpp:834
int m_LastEmoteGlobal
Definition player.h:99
void Tick()
Definition player.cpp:167
int m_SentSnaps
Definition player.h:81
struct CPlayer::@362014343304371120322235126273006135276344116343 m_Latency
bool IsPlaying() const
Definition player.cpp:938
int m_JoinTick
Definition player.h:112
bool m_Halloween
Definition player.h:153
bool m_Whispers
Definition player.h:174
int m_LastChat
Definition player.h:94
void Respawn(bool WeakHook=false)
Definition player.cpp:672
bool m_NinjaJetpack
Definition player.h:192
int64_t m_LastKickVote
Definition player.h:185
int64_t m_FirstVoteTick
Definition player.h:175
Definition save.h:39
Definition teeinfo.h:9
Definition server.h:38
Write
Definition connection_pool.h:37
@ LEGACY_MAX_CLIENTS
Definition protocol.h:92
@ MAX_CLIENTS
Definition protocol.h:89
@ WEAPON_GAME
Definition protocol.h:1606
Definition protocol.h:1251
Definition protocol.h:426
Definition scoreworker.h:30
vector2_base< float > vec2
Definition vmath.h:168