DDraceNetwork Docs
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 <base/vmath.h>
8#include <game/alloc.h>
9#include <game/server/save.h>
10
11#include "teeinfo.h"
12
13#include <memory>
14#include <optional>
15
16class CCharacter;
17class CGameContext;
18class IServer;
21
22// player object
24{
26
27public:
28 CPlayer(CGameContext *pGameServer, uint32_t UniqueClientId, int ClientId, int Team);
29 ~CPlayer();
30
31 void Reset();
32
33 void TryRespawn();
34 void Respawn(bool WeakHook = false); // with WeakHook == true the character will be spawned after all calls of Tick from other Players
35 CCharacter *ForceSpawn(vec2 Pos); // required for loading savegames
36 void SetTeam(int Team, bool DoChatMsg = true);
37 int GetTeam() const { return m_Team; }
38 int GetCid() const { return m_ClientId; }
39 uint32_t GetUniqueCid() const { return m_UniqueClientId; }
40 int GetClientVersion() const;
41 bool SetTimerType(int TimerType);
42
43 void Tick();
44 void PostTick();
45
46 // will be called after all Tick and PostTick calls from other players
47 void PostPostTick();
48 void Snap(int SnappingClient);
49 void FakeSnap();
50
51 void OnDirectInput(CNetObj_PlayerInput *pNewInput);
54 void OnDisconnect();
55
56 void KillCharacter(int Weapon = WEAPON_GAME, bool SendKillMsg = true);
58 const CCharacter *GetCharacter() const;
59
60 void SpectatePlayerName(const char *pName);
61
62 //---------------------------------------------------------
63 // this is used for snapping so we know how we can clip the view for the player
67
68 // states if the client is chatting, accessing a menu etc.
70
71 // used for snapping to just update latency if the scoreboard is active
73
74 int m_SentSnaps = 0;
75
76 // used for spectator mode
78
80
81 //
82 int m_Vote;
84 //
98
100
102
105 std::optional<int> m_Score;
110
111 // network latency calculations
112 struct
113 {
117 int m_Avg;
118 int m_Min;
119 int m_Max;
121
122private:
123 const uint32_t m_UniqueClientId;
127
129 IServer *Server() const;
130
131 //
136
139 int64_t m_LastPause;
140 bool m_Afk;
141
146
147public:
148 enum
149 {
153 };
154
155 enum
156 {
163 };
164
165 bool m_DND;
169
170 void ProcessPause();
171 int Pause(int State, bool Force);
172 int ForcePause(int Time);
173 int IsPaused() const;
174 bool CanSpec() const;
175
176 bool IsPlaying() const;
178 int64_t m_Last_Team;
184
185 // camera info is used sparingly for converting aim target to absolute world coordinates
187 {
188 friend class CPlayer;
190 float m_Zoom;
193
194 public:
195 vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const;
196 void Write(const CNetMsg_Cl_CameraInfo *pMsg);
197 void Reset();
199
201
203
204 void UpdatePlaytime();
205 void AfkTimer();
206 void SetAfk(bool Afk);
207 void SetInitialAfk(bool Afk);
208 bool IsAfk() const { return m_Afk; }
209
214
217
220
221 int GetDefaultEmote() const;
222 void OverrideDefaultEmote(int Emote, int Tick);
223 bool CanOverrideDefaultEmote() const;
224
228 std::shared_ptr<CScorePlayerResult> m_ScoreQueryResult;
229 std::shared_ptr<CScorePlayerResult> m_ScoreFinishResult;
233 int m_SwapTargetsClientId; //Client ID of the swap target for the given player
235
237
239};
240
241#endif
#define MACRO_ALLOC_POOL_ID()
Definition: alloc.h:36
Definition: character.h:24
Definition: gamecontext.h:74
Definition: player.h:187
float m_Zoom
Definition: player.h:190
int m_Deadzone
Definition: player.h:191
void Write(const CNetMsg_Cl_CameraInfo *pMsg)
Definition: player.cpp:1022
bool m_HasCameraInfo
Definition: player.h:189
void Reset()
Definition: player.cpp:1030
vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const
Definition: player.cpp:1008
int m_FollowFactor
Definition: player.h:192
Definition: player.h:24
int m_TimerType
Definition: player.h:219
int64_t m_LastSqlQuery
Definition: player.h:226
int m_ShowOthers
Definition: player.h:179
bool m_SpecTeam
Definition: player.h:182
void OverrideDefaultEmote(int Emote, int Tick)
Definition: player.cpp:795
int GetClientVersion() const
Definition: player.cpp:610
void SpectatePlayerName(const char *pName)
Definition: player.cpp:906
int m_AccumMin
Definition: player.h:115
void SetTeam(int Team, bool DoChatMsg=true)
Definition: player.cpp:658
bool m_IsReady
Definition: player.h:79
class CPlayer::CCameraInfo m_CameraInfo
bool m_Moderating
Definition: player.h:202
bool m_LastBroadcastImportance
Definition: player.h:213
int m_Paused
Definition: player.h:137
int m_Team
Definition: player.h:135
void SetInitialAfk(bool Afk)
Definition: player.cpp:770
void KillCharacter(int Weapon=WEAPON_GAME, bool SendKillMsg=true)
Definition: player.cpp:629
vec2 m_ShowDistance
Definition: player.h:181
const uint32_t m_UniqueClientId
Definition: player.h:123
bool m_BirthdayAnnounced
Definition: player.h:234
CGameContext * GameServer() const
Definition: player.h:128
IServer * Server() const
Definition: player.cpp:20
int m_LastKill
Definition: player.h:93
bool m_Spawning
Definition: player.h:132
int m_SpectatorId
Definition: player.h:77
int GetTeam() const
Definition: player.h:37
std::shared_ptr< CScorePlayerResult > m_ScoreQueryResult
Definition: player.h:228
int m_DieTick
Definition: player.h:103
int64_t m_EligibleForFinishCheck
Definition: player.h:231
void FakeSnap()
Definition: player.cpp:507
void ProcessScoreResult(CScorePlayerResult &Result)
Definition: player.cpp:921
int m_VotePos
Definition: player.h:83
int GetDefaultEmote() const
Definition: player.cpp:787
CPlayer(CGameContext *pGameServer, uint32_t UniqueClientId, int ClientId, int Team)
Definition: player.cpp:22
bool IsAfk() const
Definition: player.h:208
CCharacter * m_pCharacter
Definition: player.h:124
void PostTick()
Definition: player.cpp:281
int m_aCurLatency[MAX_CLIENTS]
Definition: player.h:72
int m_TeamChangeTick
Definition: player.h:109
void OnPredictedEarlyInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:595
int m_Avg
Definition: player.h:117
CGameContext * m_pGameServer
Definition: player.h:126
CTeeInfo m_TeeInfos
Definition: player.h:101
int64_t m_ForcePauseTime
Definition: player.h:138
int m_DefEmote
Definition: player.h:142
int m_AccumMax
Definition: player.h:116
int m_OverrideEmoteReset
Definition: player.h:144
int m_LastChangeInfo
Definition: player.h:90
int m_LastActionTick
Definition: player.h:108
int m_LastInvited
Definition: player.h:97
int m_LastWhisperTo
Definition: player.h:96
int m_LastVoteTry
Definition: player.h:86
CSaveTee m_LastTeleTee
Definition: player.h:238
int m_ChatScore
Definition: player.h:200
void AfkTimer()
Definition: player.cpp:756
int m_PreviousDieTick
Definition: player.h:104
void Snap(int SnappingClient)
Definition: player.cpp:310
int m_LastSetSpectatorMode
Definition: player.h:89
int m_aLastCommands[4]
Definition: player.h:94
vec2 m_ViewPos
Definition: player.h:64
int64_t m_LastPlaytime
Definition: player.h:210
void OnDisconnect()
Definition: player.cpp:549
int m_Vote
Definition: player.h:82
std::shared_ptr< CScorePlayerResult > m_ScoreFinishResult
Definition: player.h:229
bool m_Afk
Definition: player.h:140
int m_RescueMode
Definition: player.h:236
int m_Max
Definition: player.h:119
bool m_EyeEmoteEnabled
Definition: player.h:218
void ProcessPause()
Definition: player.cpp:812
int m_LastVoteCall
Definition: player.h:85
int m_ClientId
Definition: player.h:134
bool m_ShowAll
Definition: player.h:180
int IsPaused() const
Definition: player.cpp:896
int m_SendVoteIndex
Definition: player.h:99
int ForcePause(int Time)
Definition: player.cpp:882
int m_OverrideEmote
Definition: player.h:143
void UpdatePlaytime()
Definition: player.cpp:751
int m_NumInputs
Definition: player.h:125
std::optional< int > m_Score
Definition: player.h:105
void OnPredictedInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:556
char m_aTimeoutCode[64]
Definition: player.h:168
void TryRespawn()
Definition: player.cpp:733
int GetCid() const
Definition: player.h:38
bool m_NotEligibleForFinish
Definition: player.h:230
int m_SwapTargetsClientId
Definition: player.h:233
int m_LastSetTeam
Definition: player.h:88
int64_t m_Last_KickVote
Definition: player.h:177
int64_t m_LastBroadcast
Definition: player.h:212
int m_LastCommandPos
Definition: player.h:95
CNetObj_PlayerInput * m_pLastTarget
Definition: player.h:215
int m_Min
Definition: player.h:118
bool m_ForceBalanced
Definition: player.h:107
bool m_LastTargetInit
Definition: player.h:216
void SetAfk(bool Afk)
Definition: player.cpp:761
uint32_t GetUniqueCid() const
Definition: player.h:39
int m_TuneZoneOld
Definition: player.h:66
int m_PlayerFlags
Definition: player.h:69
int Pause(int State, bool Force)
Definition: player.cpp:828
CCharacter * ForceSpawn(vec2 Pos)
Definition: player.cpp:649
void PostPostTick()
Definition: player.cpp:301
@ PAUSE_NONE
Definition: player.h:150
@ PAUSE_SPEC
Definition: player.h:152
@ PAUSE_PAUSED
Definition: player.h:151
void Reset()
Definition: player.cpp:41
int m_TuneZone
Definition: player.h:65
int m_Accum
Definition: player.h:114
bool m_FirstPacket
Definition: player.h:225
int64_t m_LastPause
Definition: player.h:139
int m_LastEmote
Definition: player.h:91
@ TIMERTYPE_GAMETIMER
Definition: player.h:158
@ TIMERTYPE_DEFAULT
Definition: player.h:157
@ TIMERTYPE_BROADCAST
Definition: player.h:159
@ TIMERTYPE_SIXUP
Definition: player.h:161
@ TIMERTYPE_NONE
Definition: player.h:162
@ TIMERTYPE_GAMETIMER_AND_BROADCAST
Definition: player.h:160
CCharacter * GetCharacter()
Definition: player.cpp:615
~CPlayer()
Definition: player.cpp:33
void OnDirectInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:574
bool m_DND
Definition: player.h:165
bool CanSpec() const
Definition: player.cpp:807
bool m_WeakHookSpawn
Definition: player.h:133
bool SetTimerType(int TimerType)
Definition: player.cpp:687
int64_t m_LastEyeEmote
Definition: player.h:211
bool m_VotedForPractice
Definition: player.h:232
struct CPlayer::@258 m_Latency
bool CanOverrideDefaultEmote() const
Definition: player.cpp:802
int m_LastEmoteGlobal
Definition: player.h:92
void Tick()
Definition: player.cpp:164
int m_SentSnaps
Definition: player.h:74
bool IsPlaying() const
Definition: player.cpp:901
int m_JoinTick
Definition: player.h:106
bool m_Halloween
Definition: player.h:145
bool m_Whispers
Definition: player.h:166
int m_LastChat
Definition: player.h:87
void Respawn(bool WeakHook=false)
Definition: player.cpp:640
bool m_NinjaJetpack
Definition: player.h:183
int64_t m_FirstVoteTick
Definition: player.h:167
int64_t m_Last_Team
Definition: player.h:178
Definition: save.h:34
Definition: teeinfo.h:7
Definition: server.h:31
@ MAX_CLIENTS
Definition: protocol.h:88
Definition: protocol.h:360
Definition: scoreworker.h:27