DDraceNetwork Docs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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;
109
110 // network latency calculations
111 struct
112 {
116 int m_Avg;
117 int m_Min;
118 int m_Max;
120
121private:
122 const uint32_t m_UniqueClientId;
126
128 IServer *Server() const;
129
130 //
135
138 int64_t m_LastPause;
139 bool m_Afk;
140
145
146public:
147 enum
148 {
152 };
153
154 enum
155 {
162 };
163
164 bool m_DND;
168
169 void ProcessPause();
170 int Pause(int State, bool Force);
171 int ForcePause(int Time);
172 int IsPaused() const;
173 bool CanSpec() const;
174
175 bool IsPlaying() const;
177 int64_t m_Last_Team;
183
184 // camera info is used sparingly for converting aim target to absolute world coordinates
186 {
187 friend class CPlayer;
189 float m_Zoom;
192
193 public:
194 vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const;
195 void Write(const CNetMsg_Cl_CameraInfo *pMsg);
196 void Reset();
198
200
202
203 void UpdatePlaytime();
204 void AfkTimer();
205 void SetAfk(bool Afk);
206 void SetInitialAfk(bool Afk);
207 bool IsAfk() const { return m_Afk; }
208
213
216
219
220 int GetDefaultEmote() const;
221 void OverrideDefaultEmote(int Emote, int Tick);
222 bool CanOverrideDefaultEmote() const;
223
227 std::shared_ptr<CScorePlayerResult> m_ScoreQueryResult;
228 std::shared_ptr<CScorePlayerResult> m_ScoreFinishResult;
232 int m_SwapTargetsClientId; //Client ID of the swap target for the given player
234
236
238};
239
240#endif
#define MACRO_ALLOC_POOL_ID()
Definition: alloc.h:36
Definition: character.h:23
Definition: gamecontext.h:74
Definition: player.h:186
float m_Zoom
Definition: player.h:189
int m_Deadzone
Definition: player.h:190
void Write(const CNetMsg_Cl_CameraInfo *pMsg)
Definition: player.cpp:1023
bool m_HasCameraInfo
Definition: player.h:188
void Reset()
Definition: player.cpp:1031
vec2 ConvertTargetToWorld(vec2 Position, vec2 Target) const
Definition: player.cpp:1009
int m_FollowFactor
Definition: player.h:191
Definition: player.h:24
int m_TimerType
Definition: player.h:218
int64_t m_LastSqlQuery
Definition: player.h:225
int m_ShowOthers
Definition: player.h:178
bool m_SpecTeam
Definition: player.h:181
void OverrideDefaultEmote(int Emote, int Tick)
Definition: player.cpp:796
int GetClientVersion() const
Definition: player.cpp:611
void SpectatePlayerName(const char *pName)
Definition: player.cpp:907
int m_AccumMin
Definition: player.h:114
void SetTeam(int Team, bool DoChatMsg=true)
Definition: player.cpp:659
bool m_IsReady
Definition: player.h:79
class CPlayer::CCameraInfo m_CameraInfo
bool m_Moderating
Definition: player.h:201
bool m_LastBroadcastImportance
Definition: player.h:212
int m_Paused
Definition: player.h:136
int m_Team
Definition: player.h:134
void SetInitialAfk(bool Afk)
Definition: player.cpp:771
void KillCharacter(int Weapon=WEAPON_GAME, bool SendKillMsg=true)
Definition: player.cpp:630
vec2 m_ShowDistance
Definition: player.h:180
const uint32_t m_UniqueClientId
Definition: player.h:122
bool m_BirthdayAnnounced
Definition: player.h:233
CGameContext * GameServer() const
Definition: player.h:127
IServer * Server() const
Definition: player.cpp:20
int m_LastKill
Definition: player.h:93
bool m_Spawning
Definition: player.h:131
int m_SpectatorId
Definition: player.h:77
int GetTeam() const
Definition: player.h:37
std::shared_ptr< CScorePlayerResult > m_ScoreQueryResult
Definition: player.h:227
int m_DieTick
Definition: player.h:103
int64_t m_EligibleForFinishCheck
Definition: player.h:230
void FakeSnap()
Definition: player.cpp:508
void ProcessScoreResult(CScorePlayerResult &Result)
Definition: player.cpp:922
int m_VotePos
Definition: player.h:83
int GetDefaultEmote() const
Definition: player.cpp:788
CPlayer(CGameContext *pGameServer, uint32_t UniqueClientId, int ClientId, int Team)
Definition: player.cpp:22
bool IsAfk() const
Definition: player.h:207
CCharacter * m_pCharacter
Definition: player.h:123
void PostTick()
Definition: player.cpp:281
int m_aCurLatency[MAX_CLIENTS]
Definition: player.h:72
int m_TeamChangeTick
Definition: player.h:108
void OnPredictedEarlyInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:596
int m_Avg
Definition: player.h:116
CGameContext * m_pGameServer
Definition: player.h:125
CTeeInfo m_TeeInfos
Definition: player.h:101
int64_t m_ForcePauseTime
Definition: player.h:137
int m_DefEmote
Definition: player.h:141
int m_AccumMax
Definition: player.h:115
int m_OverrideEmoteReset
Definition: player.h:143
int m_LastChangeInfo
Definition: player.h:90
int m_LastActionTick
Definition: player.h:107
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:237
int m_ChatScore
Definition: player.h:199
void AfkTimer()
Definition: player.cpp:757
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:209
void OnDisconnect()
Definition: player.cpp:550
int m_Vote
Definition: player.h:82
std::shared_ptr< CScorePlayerResult > m_ScoreFinishResult
Definition: player.h:228
bool m_Afk
Definition: player.h:139
int m_RescueMode
Definition: player.h:235
int m_Max
Definition: player.h:118
bool m_EyeEmoteEnabled
Definition: player.h:217
void ProcessPause()
Definition: player.cpp:813
int m_LastVoteCall
Definition: player.h:85
int m_ClientId
Definition: player.h:133
bool m_ShowAll
Definition: player.h:179
int IsPaused() const
Definition: player.cpp:897
int m_SendVoteIndex
Definition: player.h:99
int ForcePause(int Time)
Definition: player.cpp:883
int m_OverrideEmote
Definition: player.h:142
void UpdatePlaytime()
Definition: player.cpp:752
int m_NumInputs
Definition: player.h:124
std::optional< int > m_Score
Definition: player.h:105
void OnPredictedInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:557
char m_aTimeoutCode[64]
Definition: player.h:167
void TryRespawn()
Definition: player.cpp:734
int GetCid() const
Definition: player.h:38
bool m_NotEligibleForFinish
Definition: player.h:229
int m_SwapTargetsClientId
Definition: player.h:232
int m_LastSetTeam
Definition: player.h:88
int64_t m_Last_KickVote
Definition: player.h:176
int64_t m_LastBroadcast
Definition: player.h:211
int m_LastCommandPos
Definition: player.h:95
CNetObj_PlayerInput * m_pLastTarget
Definition: player.h:214
int m_Min
Definition: player.h:117
bool m_LastTargetInit
Definition: player.h:215
void SetAfk(bool Afk)
Definition: player.cpp:762
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:829
CCharacter * ForceSpawn(vec2 Pos)
Definition: player.cpp:650
void PostPostTick()
Definition: player.cpp:301
@ TIMERTYPE_GAMETIMER
Definition: player.h:157
@ TIMERTYPE_DEFAULT
Definition: player.h:156
@ TIMERTYPE_BROADCAST
Definition: player.h:158
@ TIMERTYPE_SIXUP
Definition: player.h:160
@ TIMERTYPE_NONE
Definition: player.h:161
@ TIMERTYPE_GAMETIMER_AND_BROADCAST
Definition: player.h:159
void Reset()
Definition: player.cpp:41
int m_TuneZone
Definition: player.h:65
int m_Accum
Definition: player.h:113
bool m_FirstPacket
Definition: player.h:224
int64_t m_LastPause
Definition: player.h:138
int m_LastEmote
Definition: player.h:91
@ PAUSE_NONE
Definition: player.h:149
@ PAUSE_SPEC
Definition: player.h:151
@ PAUSE_PAUSED
Definition: player.h:150
CCharacter * GetCharacter()
Definition: player.cpp:616
~CPlayer()
Definition: player.cpp:33
void OnDirectInput(CNetObj_PlayerInput *pNewInput)
Definition: player.cpp:575
bool m_DND
Definition: player.h:164
bool CanSpec() const
Definition: player.cpp:808
bool m_WeakHookSpawn
Definition: player.h:132
bool SetTimerType(int TimerType)
Definition: player.cpp:688
int64_t m_LastEyeEmote
Definition: player.h:210
bool m_VotedForPractice
Definition: player.h:231
bool CanOverrideDefaultEmote() const
Definition: player.cpp:803
int m_LastEmoteGlobal
Definition: player.h:92
void Tick()
Definition: player.cpp:164
int m_SentSnaps
Definition: player.h:74
struct CPlayer::@256 m_Latency
bool IsPlaying() const
Definition: player.cpp:902
int m_JoinTick
Definition: player.h:106
bool m_Halloween
Definition: player.h:144
bool m_Whispers
Definition: player.h:165
int m_LastChat
Definition: player.h:87
void Respawn(bool WeakHook=false)
Definition: player.cpp:641
bool m_NinjaJetpack
Definition: player.h:182
int64_t m_FirstVoteTick
Definition: player.h:166
int64_t m_Last_Team
Definition: player.h:177
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