DDNet documentation
Loading...
Searching...
No Matches
character.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_ENTITIES_CHARACTER_H
4#define GAME_SERVER_ENTITIES_CHARACTER_H
5
6#include <game/race_state.h>
8#include <game/server/save.h>
9
10class CPlayer;
11class CGameTeams;
12class CGameWorld;
13class IAntibot;
15
16enum
17{
19 FAKETUNE_SOLO = 1 << 1,
25};
26
27class CCharacter : public CEntity
28{
30
31 // need to use core
32 friend class CSaveTee;
33 friend class CSaveHotReloadTee;
34
35public:
36 CCharacter(CGameWorld *pWorld, CNetObj_PlayerInput LastInput);
37
38 void Reset() override;
39 void Destroy() override;
40 void PreTick();
41 void Tick() override;
42 void TickDeferred() override;
43 void TickPaused() override;
44 void Snap(int SnappingClient) override;
45 void SwapClients(int Client1, int Client2) override;
46
47 void PostGlobalSnap();
48
49 bool CanSnapCharacter(int SnappingClient);
50 bool IsSnappingCharacterInView(int SnappingClientId);
51
52 bool IsGrounded();
53
54 void SetWeapon(int W);
55 void SetJetpack(bool Active);
56 void SetEndlessJump(bool Active);
57 void SetJumps(int Jumps);
58 void SetSolo(bool Solo);
59 void SetSuper(bool Super);
60 void SetInvincible(bool Invincible);
61 void SetCollisionDisabled(bool CollisionDisabled);
62 void SetHookHitDisabled(bool HookHitDisabled);
63 void SetLiveFrozen(bool Active);
64 void SetDeepFrozen(bool Active);
67
71
72 void OnPredictedInput(const CNetObj_PlayerInput *pNewInput);
73 void OnDirectInput(const CNetObj_PlayerInput *pNewInput);
75 void ResetHook();
76 void ResetInput();
77 void FireWeapon();
78
79 void Die(int Killer, int Weapon, bool SendKillMsg = true);
80 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
81 void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial);
82 void CancelSwapRequests();
83
84 bool Spawn(class CPlayer *pPlayer, vec2 Pos);
85 bool Remove();
86
87 bool IncreaseHealth(int Amount);
88 bool IncreaseArmor(int Amount);
89
90 void GiveWeapon(int Weapon, bool Remove = false);
91 void GiveNinja();
93 void SetEndlessHook(bool Enable);
94
95 void SetEmote(int Emote, int Tick);
97
98 void Rescue();
99
100 int NeededFaketuning() const { return m_NeededFaketuning; }
101 bool IsAlive() const { return m_Alive; }
102 bool IsPaused() const { return m_Paused; }
104 const CPlayer *GetPlayer() const { return m_pPlayer; }
106
107 void SetPosition(const vec2 &Position);
108 void Move(vec2 RelPos);
109
111 void SetVelocity(vec2 NewVelocity);
112 void SetRawVelocity(vec2 NewVelocity);
113 void AddVelocity(vec2 Addition);
115
116private:
117 // player controlling this character
119
124
125 // weapon info
127 int m_NumObjectsHit;
128
129 int m_LastWeapon;
130 int m_QueuedWeapon;
131
132 int m_ReloadTimer;
133 int m_AttackTick;
134
136
138
141
142 // last tick that the player took any action ie some input
144
145 // these are non-heldback inputs
149
150 // input
154 int m_NumInputs;
155
157
161
162 // the player core for the physics
165
166 // info for dead reckoning
167 int m_ReckoningTick; // tick that we are performing dead reckoning From
168 CCharacterCore m_SendCore; // core that we should send
169 CCharacterCore m_ReckoningCore; // the dead reckoning core
170
171 // DDRace
172
173 void SnapCharacter(int SnappingClient, int Id);
174 static bool IsSwitchActiveCb(unsigned char Number, void *pUser);
175 void SetTimeCheckpoint(int TimeCheckpoint);
176 void HandleTiles(int Index);
177 float m_Time;
179 void DDRaceInit();
180 void HandleSkippableTiles(int Index);
181 void ForceSetRescue(int RescueMode);
184 void HandleBroadcast();
186 void SendZoneMsgs();
187 IAntibot *Antibot();
188
191
192public:
193 CGameTeams *Teams() { return m_pTeams; }
194 void SetTeams(CGameTeams *pTeams);
195 bool TrySetRescue(int RescueMode);
196
198 void Pause(bool Pause);
199 bool Freeze(int Seconds);
200 bool Freeze();
201 bool Unfreeze();
203 void ResetPickups();
204 void ResetJumps();
206 int Team();
207 bool CanCollide(int ClientId) override;
208 bool SameTeam(int ClientId);
209 void StopRecording();
210 bool m_NinjaJetpack;
212 int m_FreezeTime;
213 bool m_FrozenLastTick;
214 int m_TuneZone;
221
226
227 int m_TileIndex;
228 int m_TileFIndex;
229
238 int m_StrongWeakId;
239
242
243 // Setters/Getters because i don't want to modify vanilla vars access modifiers
244 int GetLastWeapon() const { return m_LastWeapon; }
245 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
246 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
247 void SetActiveWeapon(int ActiveWeap) { m_Core.m_ActiveWeapon = ActiveWeap; }
248 void SetLastAction(int LastAction) { m_LastAction = LastAction; }
249 int GetArmor() const { return m_Armor; }
250 void SetArmor(int Armor) { m_Armor = Armor; }
253 const CCharacterCore *Core() const { return &m_Core; }
254 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
255 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
256 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
257 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
258 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
259 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
260 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
261
262 int GetLastAction() const { return m_LastAction; }
263
264 bool HasTelegunGun() const { return m_Core.m_HasTelegunGun; }
265 bool HasTelegunGrenade() const { return m_Core.m_HasTelegunGrenade; }
266 bool HasTelegunLaser() const { return m_Core.m_HasTelegunLaser; }
267
268 bool HammerHitDisabled() const { return m_Core.m_HammerHitDisabled; }
269 bool ShotgunHitDisabled() const { return m_Core.m_ShotgunHitDisabled; }
270 bool LaserHitDisabled() const { return m_Core.m_LaserHitDisabled; }
271 bool GrenadeHitDisabled() const { return m_Core.m_GrenadeHitDisabled; }
272
276 void SetLaserHitDisabled(bool LaserHitDisabled) { m_Core.m_LaserHitDisabled = LaserHitDisabled; }
277
278 bool IsSuper() const { return m_Core.m_Super; }
279
281 CTuningParams *GetTuning(int Zone) { return &TuningList()[Zone]; }
282};
283
284#endif
#define MACRO_ALLOC_POOL_ID()
Definition alloc.h:39
Definition gamecore.h:181
Definition character.h:24
bool m_LastBonus
Definition character.h:234
void FireWeapon()
Definition character.cpp:252
int m_NumInputs
Definition character.h:162
bool IsPaused() const
Definition character.h:102
void SetLastWeapon(int LastWeap)
Definition character.h:245
void Rescue()
Definition character.cpp:2501
bool Freeze(int Seconds)
bool GetWeaponGot(int Type)
Definition character.h:254
int m_ReloadTimer
Definition character.h:146
CNetObj_PlayerInput m_LatestPrevInput
Definition character.h:154
int GetArmor() const
Definition character.h:249
void TickPaused() override
Definition character.cpp:955
void SetArmor(int Armor)
Definition character.h:250
void ApplyMoveRestrictions()
CSaveTee m_RescueTee[NUM_RESCUEMODES]
Definition character.h:190
bool m_SetSavePos[NUM_RESCUEMODES]
Definition character.h:189
void RemoveNinja()
Definition character.cpp:94
void DDRaceTick()
int m_WeaponChangeTick
Definition character.h:241
bool CanCollide(int ClientId) override
void SetActiveWeapon(int ActiveWeap)
Definition character.h:247
void HandleTiles(int Index)
bool HasTelegunGun() const
Definition character.h:264
int m_Armor
Definition character.h:159
void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial)
Definition character.cpp:1046
void SetEndlessHook(bool Enable)
Definition character.cpp:2410
bool HasTelegunGrenade() const
Definition character.h:265
int m_LastAction
Definition character.h:143
bool Spawn(class CPlayer *pPlayer, vec2 Pos)
Definition character.cpp:60
bool m_LastRefillJumps
Definition character.h:85
const CCharacterCore * Core() const
Definition character.h:94
void SetLastAction(int LastAction)
Definition character.h:248
int m_SpawnTick
Definition character.h:240
void Pause(bool Pause)
Definition character.cpp:2421
void SetNinjaActivationTick(int ActivationTick)
Definition character.h:259
int GetLastWeapon() const
Definition character.h:244
int m_LastWeapon
Definition character.h:143
int GetLastAction() const
Definition character.h:262
void ResetInput()
Definition character.cpp:591
static bool IsSwitchActiveCb(unsigned char Number, void *pUser)
int m_TriggeredEvents7
Definition character.h:160
int m_EmoteStop
Definition character.h:140
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition character.cpp:1264
void ResetHook()
Definition character.cpp:585
void SetEmote(int Emote, int Tick)
Definition character.cpp:691
void HandleSkippableTiles(int Index)
int m_NumObjectsHit
Definition character.h:141
int m_TuneZoneOld
Definition character.h:215
CCharacterCore m_ReckoningCore
Definition character.h:169
int m_LastTimeCp
Definition character.h:223
bool m_FrozenLastTick
Definition character.h:77
void Tick() override
Definition character.cpp:611
CNetObj_PlayerInput m_SavedInput
Definition character.h:160
void HandleNinja()
Definition character.cpp:103
int GetWeaponAmmo(int Type)
Definition character.h:256
void AddVelocity(vec2 Addition)
bool Freeze()
void SwapClients(int Client1, int Client2) override
Definition character.cpp:2573
void ReleaseHook()
Definition character.cpp:578
CCharacterCore m_Core
Definition character.h:169
int m_ReckoningTick
Definition character.h:167
void SetCore(const CCharacterCore &Core)
Definition character.h:252
void Snap(int SnappingClient) override
Definition character.cpp:1242
int m_PausedTick
Definition character.h:122
CNetObj_PlayerInput m_PrevInput
Definition character.h:158
bool m_Alive
Definition character.h:120
void SetCollisionDisabled(bool CollisionDisabled)
Definition character.cpp:214
int m_TuneZone
Definition character.h:165
void ForceSetRescue(int RescueMode)
Definition character.cpp:2183
bool IncreaseArmor(int Amount)
Definition character.cpp:977
vec2 m_TeleGunPos
Definition character.h:235
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition character.h:260
int m_StartTime
Definition character.h:218
bool IncreaseHealth(int Amount)
Definition character.cpp:969
void DoWeaponSwitch()
Definition character.cpp:190
CGameTeams * m_pTeams
Definition character.h:164
void SetTimeCheckpoint(int TimeCheckpoint)
Definition character.cpp:1565
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition character.cpp:641
CSaveTee & GetLastRescueTeeRef(int Mode=RESCUEMODE_AUTO)
Definition character.h:280
void SetDeepFrozen(bool Active)
Definition character.cpp:229
void CancelSwapRequests()
Definition character.cpp:1059
int m_FreezeTime
Definition character.h:76
bool IsSnappingCharacterInView(int SnappingClientId)
Definition character.cpp:1213
int m_PainSoundTimer
Definition character.h:151
void SetSolo(bool Solo)
Definition character.cpp:29
bool CanSnapCharacter(int SnappingClient)
Definition character.cpp:1192
void SetGrenadeHitDisabled(bool GrenadeHitDisabled)
Definition character.h:275
void SendZoneMsgs()
Definition character.cpp:2101
void SetSuper(bool Super)
Definition character.cpp:35
bool HammerHitDisabled() const
Definition character.h:268
void SetWeaponAmmo(int Type, int Value)
Definition character.h:257
void HandleWeaponSwitch()
Definition character.cpp:202
void HandleTuneLayer()
void SetEndlessJump(bool Active)
Definition character.cpp:163
int m_LastTimeCpBroadcasted
Definition character.h:224
vec2 m_PrevPos
Definition character.h:78
void Reset() override
Definition character.cpp:54
const CPlayer * GetPlayer() const
Definition character.h:104
CGameTeams * Teams()
Definition character.h:193
void PreTick() override
Definition character.cpp:603
void Destroy() override
Definition character.cpp:137
bool IsGrounded()
Definition character.cpp:42
bool m_IsBlueTeleGunTeleport
Definition character.h:237
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition character.h:225
IAntibot * Antibot()
Definition character.cpp:2136
void SetVelocity(vec2 NewVelocity)
CPlayer * GetPlayer()
Definition character.h:103
CCharacterCore m_SendCore
Definition character.h:168
bool SameTeam(int ClientId)
void SetShotgunHitDisabled(bool ShotgunHitDisabled)
Definition character.h:274
bool Remove()
CCharacterCore GetCore()
Definition character.h:251
CClientMask TeamMask()
Definition character.cpp:2531
void FillAntibot(CAntibotCharacterData *pData)
Definition character.cpp:1363
int m_QueuedWeapon
Definition character.h:144
void SetLiveFrozen(bool Active)
Definition character.cpp:224
void PostGlobalSnap()
Definition character.cpp:1342
void DDRacePostCoreTick()
void HandleJetpack()
Definition character.cpp:51
bool TrySetRescue(int RescueMode)
Definition character.cpp:2147
void SetRawVelocity(vec2 NewVelocity)
void SetHookHitDisabled(bool HookHitDisabled)
Definition character.cpp:219
void SetWeapon(int Weapon)
Definition character.cpp:17
CTuningParams * GetTuning(int Zone)
Definition character.h:281
bool IsAlive() const
Definition character.h:101
ERaceState m_DDRaceState
Definition character.h:205
CNetObj_PlayerInput m_LatestPrevPrevInput
Definition character.h:146
bool Unfreeze()
void SetLaserHitDisabled(bool LaserHitDisabled)
Definition character.h:276
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:529
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:549
void HandleBroadcast()
Definition character.cpp:1409
int m_LastMove
Definition character.h:217
int m_EmoteType
Definition character.h:139
bool IsSuper() const
Definition character.h:278
int m_DamageTaken
Definition character.h:137
int m_LastBroadcast
Definition character.h:178
int m_aHitObjects[MAX_CLIENTS]
Definition character.h:140
void SetHammerHitDisabled(bool HammerHitDisabled)
Definition character.h:273
void SetNinjaActivationDir(vec2 ActivationDir)
Definition character.h:258
int m_DamageTakenTick
Definition character.h:156
int m_Health
Definition character.h:158
void SetTeams(CGameTeams *pTeams)
Definition character.cpp:2141
void GiveWeapon(int Weapon, bool Remove=false)
Definition character.cpp:1200
void ResetJumps()
Definition character.cpp:2362
int64_t m_LastStartWarning
Definition character.h:230
int NeededFaketuning() const
Definition character.h:100
void TickDeferred() override
Definition character.cpp:634
int GetActiveWeapon() const
Definition character.h:246
void DDRaceInit()
Definition character.cpp:2448
void SetJumps(int Jumps)
Definition character.cpp:168
CNetObj_PlayerInput m_Input
Definition character.h:159
bool m_NinjaJetpack
Definition character.h:75
int m_TeleCheckpoint
Definition character.h:80
void GiveAllWeapons()
int m_TileFIndex
Definition character.h:83
CNetObj_PlayerInput m_LatestInput
Definition character.h:155
bool HasTelegunLaser() const
Definition character.h:266
bool GrenadeHitDisabled() const
Definition character.h:271
int m_NeededFaketuning
Definition character.h:123
void HandleWeapons()
Definition character.cpp:495
int m_TimeCpBroadcastEndTick
Definition character.h:222
friend class CGameWorld
Definition character.h:25
int m_MoveRestrictions
Definition character.h:149
void ResetPickups()
Definition character.cpp:2400
bool ShotgunHitDisabled() const
Definition character.h:269
friend class CSaveHotReloadTee
Definition character.h:33
void StopRecording()
Definition character.cpp:985
bool LaserHitDisabled() const
Definition character.h:270
class CPlayer * m_pPlayer
Definition character.h:118
int DetermineEyeEmote()
Definition character.cpp:697
void SetInvincible(bool Invincible)
Definition character.cpp:201
void ResetVelocity()
int m_TeamBeforeSuper
Definition character.h:211
void SetPosition(const vec2 &Position)
Definition character.cpp:2536
int64_t m_LastRescue
Definition character.h:231
int m_StrongWeakId
Definition character.h:180
void Move(vec2 RelPos)
Definition character.cpp:2541
bool m_TeleGunTeleport
Definition character.h:236
int m_TileIndex
Definition character.h:82
void Die(int Killer, int Weapon, bool SendKillMsg=true)
Definition character.cpp:1000
float m_Time
Definition character.h:177
void SetJetpack(bool Active)
Definition character.cpp:158
bool m_Paused
Definition character.h:121
void SetWeaponGot(int Type, bool Value)
Definition character.h:255
void GiveNinja()
Definition character.cpp:515
friend class CSaveTee
Definition character.h:32
void SnapCharacter(int SnappingClient, int Id)
Definition character.cpp:1069
bool m_LastPenalty
Definition character.h:233
int m_AttackTick
Definition character.h:147
Definition entity.h:13
CTuningParams * TuningList()
Definition entity.h:36
Definition teams.h:20
Definition gameworld.h:18
Definition player.h:26
Definition gamecore.h:43
Definition antibot.h:7
@ FAKETUNE_SOLO
Definition character.h:15
@ FAKETUNE_NOCOLL
Definition character.h:17
@ FAKETUNE_FREEZE
Definition character.h:14
@ FAKETUNE_NOJUMP
Definition character.h:16
@ FAKETUNE_JETPACK
Definition character.h:19
@ FAKETUNE_NOHOOK
Definition character.h:18
@ FAKETUNE_NOHAMMER
Definition character.h:20
std::bitset< MAX_CLIENTS > CClientMask
Definition protocol.h:175
@ MAX_CHECKPOINTS
Definition protocol.h:92
@ MAX_CLIENTS
Definition protocol.h:89
ERaceState
Definition race_state.h:5
@ NUM_RESCUEMODES
Definition save.h:24
@ RESCUEMODE_AUTO
Definition save.h:22
Definition antibot_data.h:56
Definition protocol.h:426
vector2_base< float > vec2
Definition vmath.h:161