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 ~CCharacter() override;
38
39 void Reset() override;
40 void Destroy() override;
41 void PreTick();
42 void Tick() override;
43 void TickDeferred() override;
44 void TickPaused() override;
45 void Snap(int SnappingClient) override;
46 void SwapClients(int Client1, int Client2) override;
47
48 void PostGlobalSnap();
49
50 bool CanSnapCharacter(int SnappingClient);
51 bool IsSnappingCharacterInView(int SnappingClientId);
52
53 bool IsGrounded();
54
55 void SetWeapon(int W);
56 void SetJetpack(bool Active);
57 void SetEndlessJump(bool Active);
58 void SetJumps(int Jumps);
59 void SetSolo(bool Solo);
60 void SetSuper(bool Super);
61 void SetInvincible(bool Invincible);
62 void SetCollisionDisabled(bool CollisionDisabled);
63 void SetHookHitDisabled(bool HookHitDisabled);
64 void SetLiveFrozen(bool Active);
65 void SetDeepFrozen(bool Active);
68
72
73 void OnPredictedInput(const CNetObj_PlayerInput *pNewInput);
74 void OnDirectInput(const CNetObj_PlayerInput *pNewInput);
76 void ResetHook();
77 void ResetInput();
78 void FireWeapon();
79
80 void Die(int Killer, int Weapon, bool SendKillMsg = true);
81 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
82 void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial);
83 void CancelSwapRequests();
84
85 bool Spawn(class CPlayer *pPlayer, vec2 Pos);
86 bool Remove();
87
88 bool IncreaseHealth(int Amount);
89 bool IncreaseArmor(int Amount);
90
91 void GiveWeapon(int Weapon, bool Remove = false);
92 void GiveNinja();
94 void SetEndlessHook(bool Enable);
95
96 void SetEmote(int Emote, int Tick);
98
99 bool Rescue();
100
101 int NeededFaketuning() const { return m_NeededFaketuning; }
102 bool IsAlive() const { return m_Alive; }
103 bool IsPaused() const { return m_Paused; }
105 const CPlayer *GetPlayer() const { return m_pPlayer; }
107
108 void SetPosition(const vec2 &Position);
109 void Move(vec2 RelPos);
110
112 void SetVelocity(vec2 NewVelocity);
113 void SetRawVelocity(vec2 NewVelocity);
114 void AddVelocity(vec2 Addition);
116
117private:
118 // player controlling this character
120
125
126 // weapon info
128 int m_NumObjectsHit;
129
130 int m_LastWeapon;
131 int m_QueuedWeapon;
132
133 int m_ReloadTimer;
134 int m_AttackTick;
135
137
139
142
143 // last tick that the player took any action ie some input
145
146 // these are non-heldback inputs
150
151 // input
155 int m_NumInputs;
156
158
162
163 // the player core for the physics
166
167 // info for dead reckoning
168 int m_ReckoningTick; // tick that we are performing dead reckoning From
169 CCharacterCore m_SendCore; // core that we should send
170 CCharacterCore m_ReckoningCore; // the dead reckoning core
171
172 // DDRace
173
174 void SnapCharacter(int SnappingClient, int MapId);
175 static bool IsSwitchActiveCb(unsigned char Number, void *pUser);
176 void SetTimeCheckpoint(int TimeCheckpoint);
177 void HandleTiles(int Index);
178 float m_Time;
180 void DDRaceInit();
181 void HandleSkippableTiles(int Index);
182 void ForceSetRescue(int RescueMode);
185 void HandleBroadcast();
187 void SendZoneMsgs();
188 IAntibot *Antibot();
189
192
200
201public:
202 CGameTeams *Teams() { return m_pTeams; }
203 void SetTeams(CGameTeams *pTeams);
204 bool TrySetRescue(int RescueMode);
205
207 void Pause(bool Pause);
208 bool Freeze(int Seconds);
209 bool Freeze();
210 bool Unfreeze();
212 void ResetPickups();
213 void ResetJumps();
215 int Team();
216 bool CanCollide(int ClientId) override;
217 bool SameTeam(int ClientId);
218 void StopRecording();
219 bool m_NinjaJetpack;
221 int m_FreezeTime;
222 bool m_FrozenLastTick;
223 int m_TuneZone;
230
235
236 int m_TileIndex;
237 int m_TileFIndex;
238
247 int m_StrongWeakId;
248
251
252 // Setters/Getters because i don't want to modify vanilla vars access modifiers
253 int GetLastWeapon() const { return m_LastWeapon; }
254 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
255 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
256 void SetActiveWeapon(int ActiveWeap) { m_Core.m_ActiveWeapon = ActiveWeap; }
257 void SetLastAction(int LastAction) { m_LastAction = LastAction; }
258 int GetArmor() const { return m_Armor; }
259 void SetArmor(int Armor) { m_Armor = Armor; }
262 const CCharacterCore *Core() const { return &m_Core; }
263 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
264 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
265 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
266 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
267 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
268 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
269 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
270
271 int GetLastAction() const { return m_LastAction; }
272 bool IsIdle() const { return !m_SavedInput.m_Direction && !m_SavedInput.m_Hook && !m_SavedInput.m_Jump && !(m_SavedInput.m_Fire & 1); }
273
274 bool HasTelegunGun() const { return m_Core.m_HasTelegunGun; }
275 bool HasTelegunGrenade() const { return m_Core.m_HasTelegunGrenade; }
276 bool HasTelegunLaser() const { return m_Core.m_HasTelegunLaser; }
277
278 bool HammerHitDisabled() const { return m_Core.m_HammerHitDisabled; }
279 bool ShotgunHitDisabled() const { return m_Core.m_ShotgunHitDisabled; }
280 bool LaserHitDisabled() const { return m_Core.m_LaserHitDisabled; }
281 bool GrenadeHitDisabled() const { return m_Core.m_GrenadeHitDisabled; }
282
286 void SetLaserHitDisabled(bool LaserHitDisabled) { m_Core.m_LaserHitDisabled = LaserHitDisabled; }
287
288 bool IsSuper() const { return m_Core.m_Super; }
289
291 CTuningParams *GetTuning(int Zone) { return &TuningList()[Zone]; }
292};
293
294#endif
#define MACRO_ALLOC_POOL_ID()
Definition alloc.h:39
Definition gamecore.h:183
Definition character.h:24
bool m_LastBonus
Definition character.h:243
void FireWeapon()
Definition character.cpp:255
int m_NumInputs
Definition character.h:166
bool IsPaused() const
Definition character.h:103
void SetLastWeapon(int LastWeap)
Definition character.h:254
bool Freeze(int Seconds)
bool IsIdle() const
Definition character.h:272
bool GetWeaponGot(int Type)
Definition character.h:263
int m_ReloadTimer
Definition character.h:150
CNetObj_PlayerInput m_LatestPrevInput
Definition character.h:158
int GetArmor() const
Definition character.h:258
void TickPaused() override
Definition character.cpp:967
void SetArmor(int Armor)
Definition character.h:259
void ApplyMoveRestrictions()
CSaveTee m_RescueTee[NUM_RESCUEMODES]
Definition character.h:191
bool m_SetSavePos[NUM_RESCUEMODES]
Definition character.h:190
void RemoveNinja()
Definition character.cpp:97
void DDRaceTick()
int m_WeaponChangeTick
Definition character.h:250
bool CanCollide(int ClientId) override
void SetActiveWeapon(int ActiveWeap)
Definition character.h:256
void HandleTiles(int Index)
bool HasTelegunGun() const
Definition character.h:274
int m_Armor
Definition character.h:160
void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial)
Definition character.cpp:1058
void SetEndlessHook(bool Enable)
Definition character.cpp:2442
bool HasTelegunGrenade() const
Definition character.h:275
int m_LastAction
Definition character.h:144
void SnapCharacter(int SnappingClient, int MapId)
Definition character.cpp:1081
bool Spawn(class CPlayer *pPlayer, vec2 Pos)
Definition character.cpp:69
bool m_LastRefillJumps
Definition character.h:85
const CCharacterCore * Core() const
Definition character.h:94
void SetLastAction(int LastAction)
Definition character.h:257
int m_SpawnTick
Definition character.h:249
void Pause(bool Pause)
Definition character.cpp:2453
void SetNinjaActivationTick(int ActivationTick)
Definition character.h:268
int GetLastWeapon() const
Definition character.h:253
int m_LastWeapon
Definition character.h:147
int GetLastAction() const
Definition character.h:271
void ResetInput()
Definition character.cpp:598
static bool IsSwitchActiveCb(unsigned char Number, void *pUser)
int m_TriggeredEvents7
Definition character.h:161
int m_EmoteStop
Definition character.h:141
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition character.cpp:1286
void ResetHook()
Definition character.cpp:592
void SetEmote(int Emote, int Tick)
Definition character.cpp:703
void HandleSkippableTiles(int Index)
int m_NumObjectsHit
Definition character.h:145
int m_TuneZoneOld
Definition character.h:224
CCharacterCore m_ReckoningCore
Definition character.h:170
int m_LastTimeCp
Definition character.h:232
bool m_FrozenLastTick
Definition character.h:77
void Tick() override
Definition character.cpp:618
CNetObj_PlayerInput m_SavedInput
Definition character.h:164
void HandleNinja()
Definition character.cpp:106
int GetWeaponAmmo(int Type)
Definition character.h:265
void AddVelocity(vec2 Addition)
bool Freeze()
void SwapClients(int Client1, int Client2) override
Definition character.cpp:2609
void ReleaseHook()
Definition character.cpp:585
CCharacterCore m_Core
Definition character.h:173
int m_ReckoningTick
Definition character.h:168
void SetCore(const CCharacterCore &Core)
Definition character.h:261
void Snap(int SnappingClient) override
Definition character.cpp:1252
int m_PausedTick
Definition character.h:123
CNetObj_PlayerInput m_PrevInput
Definition character.h:162
bool m_Alive
Definition character.h:121
void SetCollisionDisabled(bool CollisionDisabled)
Definition character.cpp:223
int m_TuneZone
Definition character.h:169
void ForceSetRescue(int RescueMode)
Definition character.cpp:2215
bool IncreaseArmor(int Amount)
Definition character.cpp:989
vec2 m_TeleGunPos
Definition character.h:244
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition character.h:269
int m_StartTime
Definition character.h:227
bool IncreaseHealth(int Amount)
Definition character.cpp:981
void DoWeaponSwitch()
Definition character.cpp:193
CGameTeams * m_pTeams
Definition character.h:165
void SetTimeCheckpoint(int TimeCheckpoint)
Definition character.cpp:1597
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition character.cpp:659
CSaveTee & GetLastRescueTeeRef(int Mode=RESCUEMODE_AUTO)
Definition character.h:290
EUntranslatedMap
Definition character.h:194
@ ID_WEAPON
Definition character.h:196
@ ID_HOOK
Definition character.h:195
@ NUM_IDS
Definition character.h:197
void SetDeepFrozen(bool Active)
Definition character.cpp:238
void CancelSwapRequests()
Definition character.cpp:1071
int m_FreezeTime
Definition character.h:76
std::optional< int > m_aUntranslatedId[EUntranslatedMap::NUM_IDS]
Definition character.h:199
bool IsSnappingCharacterInView(int SnappingClientId)
Definition character.cpp:1225
int m_PainSoundTimer
Definition character.h:155
void SetSolo(bool Solo)
Definition character.cpp:29
bool CanSnapCharacter(int SnappingClient)
Definition character.cpp:1204
void SetGrenadeHitDisabled(bool GrenadeHitDisabled)
Definition character.h:285
void SendZoneMsgs()
Definition character.cpp:2133
void SetSuper(bool Super)
Definition character.cpp:35
bool HammerHitDisabled() const
Definition character.h:278
void SetWeaponAmmo(int Type, int Value)
Definition character.h:266
void HandleWeaponSwitch()
Definition character.cpp:205
void HandleTuneLayer()
void SetEndlessJump(bool Active)
Definition character.cpp:172
int m_LastTimeCpBroadcasted
Definition character.h:233
vec2 m_PrevPos
Definition character.h:78
void Reset() override
Definition character.cpp:63
const CPlayer * GetPlayer() const
Definition character.h:105
CGameTeams * Teams()
Definition character.h:202
void PreTick() override
Definition character.cpp:610
void Destroy() override
Definition character.cpp:146
bool IsGrounded()
Definition character.cpp:42
bool m_IsBlueTeleGunTeleport
Definition character.h:246
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition character.h:234
IAntibot * Antibot()
Definition character.cpp:2168
void SetVelocity(vec2 NewVelocity)
CPlayer * GetPlayer()
Definition character.h:104
CCharacterCore m_SendCore
Definition character.h:169
bool SameTeam(int ClientId)
void SetShotgunHitDisabled(bool ShotgunHitDisabled)
Definition character.h:284
bool Remove()
CCharacterCore GetCore()
Definition character.h:260
CClientMask TeamMask()
Definition character.cpp:2567
void FillAntibot(CAntibotCharacterData *pData)
Definition character.cpp:1395
int m_QueuedWeapon
Definition character.h:148
void SetLiveFrozen(bool Active)
Definition character.cpp:233
void PostGlobalSnap()
Definition character.cpp:1374
void DDRacePostCoreTick()
void HandleJetpack()
Definition character.cpp:51
bool TrySetRescue(int RescueMode)
Definition character.cpp:2179
void SetRawVelocity(vec2 NewVelocity)
void SetHookHitDisabled(bool HookHitDisabled)
Definition character.cpp:228
void SetWeapon(int Weapon)
Definition character.cpp:17
CTuningParams * GetTuning(int Zone)
Definition character.h:291
bool IsAlive() const
Definition character.h:102
ERaceState m_DDRaceState
Definition character.h:214
CNetObj_PlayerInput m_LatestPrevPrevInput
Definition character.h:147
bool Unfreeze()
void SetLaserHitDisabled(bool LaserHitDisabled)
Definition character.h:286
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:536
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:556
void HandleBroadcast()
Definition character.cpp:1441
int m_LastMove
Definition character.h:226
int m_EmoteType
Definition character.h:140
bool IsSuper() const
Definition character.h:288
int m_DamageTaken
Definition character.h:138
int m_LastBroadcast
Definition character.h:179
int m_aHitObjects[MAX_CLIENTS]
Definition character.h:144
void SetHammerHitDisabled(bool HammerHitDisabled)
Definition character.h:283
void SetNinjaActivationDir(vec2 ActivationDir)
Definition character.h:267
int m_DamageTakenTick
Definition character.h:157
int m_Health
Definition character.h:159
void SetTeams(CGameTeams *pTeams)
Definition character.cpp:2173
void GiveWeapon(int Weapon, bool Remove=false)
Definition character.cpp:1222
void ResetJumps()
Definition character.cpp:2394
int64_t m_LastStartWarning
Definition character.h:239
int NeededFaketuning() const
Definition character.h:101
void TickDeferred() override
Definition character.cpp:652
int GetActiveWeapon() const
Definition character.h:255
void DDRaceInit()
Definition character.cpp:2480
void SetJumps(int Jumps)
Definition character.cpp:177
CNetObj_PlayerInput m_Input
Definition character.h:163
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:159
bool HasTelegunLaser() const
Definition character.h:276
bool GrenadeHitDisabled() const
Definition character.h:281
int m_NeededFaketuning
Definition character.h:124
void HandleWeapons()
Definition character.cpp:502
int m_TimeCpBroadcastEndTick
Definition character.h:231
friend class CGameWorld
Definition character.h:25
int m_MoveRestrictions
Definition character.h:153
void ResetPickups()
Definition character.cpp:2432
bool ShotgunHitDisabled() const
Definition character.h:279
friend class CSaveHotReloadTee
Definition character.h:33
void StopRecording()
Definition character.cpp:997
bool LaserHitDisabled() const
Definition character.h:280
class CPlayer * m_pPlayer
Definition character.h:119
int DetermineEyeEmote()
Definition character.cpp:709
void SetInvincible(bool Invincible)
Definition character.cpp:210
void ResetVelocity()
int m_TeamBeforeSuper
Definition character.h:220
void SetPosition(const vec2 &Position)
Definition character.cpp:2572
int64_t m_LastRescue
Definition character.h:240
int m_StrongWeakId
Definition character.h:184
void Move(vec2 RelPos)
Definition character.cpp:2577
bool m_TeleGunTeleport
Definition character.h:245
bool Rescue()
Definition character.cpp:2533
int m_TileIndex
Definition character.h:82
void Die(int Killer, int Weapon, bool SendKillMsg=true)
Definition character.cpp:1012
float m_Time
Definition character.h:178
void SetJetpack(bool Active)
Definition character.cpp:167
bool m_Paused
Definition character.h:122
void SetWeaponGot(int Type, bool Value)
Definition character.h:264
void GiveNinja()
Definition character.cpp:522
friend class CSaveTee
Definition character.h:32
bool m_LastPenalty
Definition character.h:242
int m_AttackTick
Definition character.h:151
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:192
@ MAX_CHECKPOINTS
Definition protocol.h:93
@ 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:168