blob: d91bc3469b0e69334cd738f41f0527bbd4f9713c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
#ifndef GAME_SERVER_PLAYER_H
#define GAME_SERVER_PLAYER_H
// this include should perhaps be removed
#include "entities/character.h"
#include "gamecontext.h"
// player object
class CPlayer
{
MACRO_ALLOC_POOL_ID()
public:
CPlayer(CGameContext *pGameServer, int ClientID, int Team);
~CPlayer();
void Init(int CID);
void TryRespawn();
void Respawn();
void SetTeam(int Team);
int GetTeam() const { return m_Team; };
int GetCID() const { return m_ClientID; };
void Tick();
void PostTick();
void Snap(int SnappingClient);
void OnDirectInput(CNetObj_PlayerInput *NewInput);
void OnPredictedInput(CNetObj_PlayerInput *NewInput);
void OnDisconnect();
void KillCharacter(int Weapon = WEAPON_GAME);
CCharacter *GetCharacter();
//---------------------------------------------------------
// this is used for snapping so we know how we can clip the view for the player
vec2 m_ViewPos;
// states if the client is chatting, accessing a menu etc.
int m_PlayerFlags;
// used for snapping to just update latency if the scoreboard is active
int m_aActLatency[MAX_CLIENTS];
// used for spectator mode
int m_SpectatorID;
bool m_IsReady;
//
int m_Vote;
int m_VotePos;
//
int m_LastVoteCall;
int m_LastVoteTry;
int m_LastChat;
int m_LastSetTeam;
int m_LastSetSpectatorMode;
int m_LastChangeInfo;
int m_LastEmote;
int m_LastKill;
// TODO: clean this up
struct
{
char m_SkinName[64];
int m_UseCustomColor;
int m_ColorBody;
int m_ColorFeet;
} m_TeeInfos;
int m_RespawnTick;
int m_DieTick;
int m_Score;
int m_ScoreStartTick;
bool m_ForceBalanced;
int m_LastActionTick;
struct
{
int m_TargetX;
int m_TargetY;
} m_LatestActivity;
// network latency calculations
struct
{
int m_Accum;
int m_AccumMin;
int m_AccumMax;
int m_Avg;
int m_Min;
int m_Max;
} m_Latency;
private:
CCharacter *Character;
CGameContext *m_pGameServer;
CGameContext *GameServer() const { return m_pGameServer; }
IServer *Server() const;
//
bool m_Spawning;
int m_ClientID;
int m_Team;
};
#endif
|