DDraceNetwork 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 CGameTeams;
11class CGameWorld;
12class IAntibot;
14
15enum
16{
18 FAKETUNE_SOLO = 1 << 1,
24};
25
26class CCharacter : public CEntity
27{
29
30 // need to use core
31 friend class CSaveTee;
32 friend class CSaveHotReloadTee;
33
34public:
35 CCharacter(CGameWorld *pWorld, CNetObj_PlayerInput LastInput);
36
37 void Reset() override;
38 void Destroy() override;
39 void PreTick();
40 void Tick() override;
41 void TickDeferred() override;
42 void TickPaused() override;
43 void Snap(int SnappingClient) override;
44 void SwapClients(int Client1, int Client2) override;
45
46 void PostGlobalSnap();
47
48 bool CanSnapCharacter(int SnappingClient);
49 bool IsSnappingCharacterInView(int SnappingClientId);
50
51 bool IsGrounded();
52
53 void SetWeapon(int W);
54 void SetJetpack(bool Active);
55 void SetEndlessJump(bool Active);
56 void SetJumps(int Jumps);
57 void SetSolo(bool Solo);
58 void SetSuper(bool Super);
59 void SetInvincible(bool Invincible);
60 void SetCollisionDisabled(bool CollisionDisabled);
61 void SetHookHitDisabled(bool HookHitDisabled);
62 void SetLiveFrozen(bool Active);
63 void SetDeepFrozen(bool Active);
66
70
71 void OnPredictedInput(const CNetObj_PlayerInput *pNewInput);
72 void OnDirectInput(const CNetObj_PlayerInput *pNewInput);
74 void ResetHook();
75 void ResetInput();
76 void FireWeapon();
77
78 void Die(int Killer, int Weapon, bool SendKillMsg = true);
79 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
80 void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial);
81 void CancelSwapRequests();
82
83 bool Spawn(class CPlayer *pPlayer, vec2 Pos);
84 bool Remove();
85
86 bool IncreaseHealth(int Amount);
87 bool IncreaseArmor(int Amount);
88
89 void GiveWeapon(int Weapon, bool Remove = false);
90 void GiveNinja();
92 void SetEndlessHook(bool Enable);
93
94 void SetEmote(int Emote, int Tick);
96
97 void Rescue();
98
99 int NeededFaketuning() const { return m_NeededFaketuning; }
100 bool IsAlive() const { return m_Alive; }
101 bool IsPaused() const { return m_Paused; }
102 class CPlayer *GetPlayer() { return m_pPlayer; }
104
105 void SetPosition(const vec2 &Position);
106 void Move(vec2 RelPos);
107
109 void SetVelocity(vec2 NewVelocity);
110 void SetRawVelocity(vec2 NewVelocity);
111 void AddVelocity(vec2 Addition);
113
114private:
115 // player controlling this character
117
122
123 // weapon info
125 int m_NumObjectsHit;
126
127 int m_LastWeapon;
128 int m_QueuedWeapon;
129
130 int m_ReloadTimer;
131 int m_AttackTick;
132
134
136
139
140 // last tick that the player took any action ie some input
142
143 // these are non-heldback inputs
147
148 // input
152 int m_NumInputs;
153
155
159
160 // the player core for the physics
163
164 // info for dead reckoning
165 int m_ReckoningTick; // tick that we are performing dead reckoning From
166 CCharacterCore m_SendCore; // core that we should send
167 CCharacterCore m_ReckoningCore; // the dead reckoning core
168
169 // DDRace
170
171 void SnapCharacter(int SnappingClient, int Id);
172 static bool IsSwitchActiveCb(int Number, void *pUser);
173 void SetTimeCheckpoint(int TimeCheckpoint);
174 void HandleTiles(int Index);
175 float m_Time;
177 void DDRaceInit();
178 void HandleSkippableTiles(int Index);
179 void ForceSetRescue(int RescueMode);
182 void HandleBroadcast();
184 void SendZoneMsgs();
185 IAntibot *Antibot();
186
189
190public:
191 CGameTeams *Teams() { return m_pTeams; }
192 void SetTeams(CGameTeams *pTeams);
193 bool TrySetRescue(int RescueMode);
194
196 void Pause(bool Pause);
197 bool Freeze(int Seconds);
198 bool Freeze();
199 bool UnFreeze();
201 void ResetPickups();
202 void ResetJumps();
204 int Team();
205 bool CanCollide(int ClientId) override;
206 bool SameTeam(int ClientId);
207 void StopRecording();
208 bool m_NinjaJetpack;
210 int m_FreezeTime;
211 bool m_FrozenLastTick;
212 int m_TuneZone;
219
224
225 int m_TileIndex;
226 int m_TileFIndex;
227
236 int m_StrongWeakId;
237
240
241 // Setters/Getters because i don't want to modify vanilla vars access modifiers
242 int GetLastWeapon() const { return m_LastWeapon; }
243 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
244 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
245 void SetActiveWeapon(int ActiveWeap) { m_Core.m_ActiveWeapon = ActiveWeap; }
246 void SetLastAction(int LastAction) { m_LastAction = LastAction; }
247 int GetArmor() const { return m_Armor; }
248 void SetArmor(int Armor) { m_Armor = Armor; }
251 const CCharacterCore *Core() const { return &m_Core; }
252 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
253 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
254 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
255 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
256 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
257 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
258 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
259
260 int GetLastAction() const { return m_LastAction; }
261
262 bool HasTelegunGun() const { return m_Core.m_HasTelegunGun; }
263 bool HasTelegunGrenade() const { return m_Core.m_HasTelegunGrenade; }
264 bool HasTelegunLaser() const { return m_Core.m_HasTelegunLaser; }
265
266 bool HammerHitDisabled() const { return m_Core.m_HammerHitDisabled; }
267 bool ShotgunHitDisabled() const { return m_Core.m_ShotgunHitDisabled; }
268 bool LaserHitDisabled() const { return m_Core.m_LaserHitDisabled; }
269 bool GrenadeHitDisabled() const { return m_Core.m_GrenadeHitDisabled; }
270
274 void SetLaserHitDisabled(bool LaserHitDisabled) { m_Core.m_LaserHitDisabled = LaserHitDisabled; }
275
276 bool IsSuper() const { return m_Core.m_Super; }
277
279 CTuningParams *GetTuning(int Zone) { return &TuningList()[Zone]; }
280};
281
282#endif
#define MACRO_ALLOC_POOL_ID()
Definition alloc.h:37
Definition gamecore.h:179
Definition character.h:24
bool m_LastBonus
Definition character.h:232
void FireWeapon()
Definition character.cpp:251
int m_NumInputs
Definition character.h:160
bool IsPaused() const
Definition character.h:101
void SetLastWeapon(int LastWeap)
Definition character.h:243
void Rescue()
Definition character.cpp:2503
bool Freeze(int Seconds)
bool GetWeaponGot(int Type)
Definition character.h:252
int m_ReloadTimer
Definition character.h:146
CNetObj_PlayerInput m_LatestPrevInput
Definition character.h:152
int GetArmor() const
Definition character.h:247
void TickPaused() override
Definition character.cpp:957
void SetArmor(int Armor)
Definition character.h:248
void ApplyMoveRestrictions()
CSaveTee m_RescueTee[NUM_RESCUEMODES]
Definition character.h:188
bool m_SetSavePos[NUM_RESCUEMODES]
Definition character.h:187
void RemoveNinja()
Definition character.cpp:94
void DDRaceTick()
int m_WeaponChangeTick
Definition character.h:239
bool CanCollide(int ClientId) override
void SetActiveWeapon(int ActiveWeap)
Definition character.h:245
void HandleTiles(int Index)
bool HasTelegunGun() const
Definition character.h:262
int m_Armor
Definition character.h:157
void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial)
Definition character.cpp:1048
void SetEndlessHook(bool Enable)
Definition character.cpp:2412
bool HasTelegunGrenade() const
Definition character.h:263
int m_LastAction
Definition character.h:141
bool Spawn(class CPlayer *pPlayer, vec2 Pos)
Definition character.cpp:59
class CPlayer * GetPlayer()
Definition character.h:102
bool m_LastRefillJumps
Definition character.h:85
const CCharacterCore * Core() const
Definition character.h:94
void SetLastAction(int LastAction)
Definition character.h:246
int m_SpawnTick
Definition character.h:238
void Pause(bool Pause)
Definition character.cpp:2423
void SetNinjaActivationTick(int ActivationTick)
Definition character.h:257
int GetLastWeapon() const
Definition character.h:242
int m_LastWeapon
Definition character.h:143
int GetLastAction() const
Definition character.h:260
void ResetInput()
Definition character.cpp:560
int m_TriggeredEvents7
Definition character.h:158
int m_EmoteStop
Definition character.h:138
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition character.cpp:1230
void ResetHook()
Definition character.cpp:554
void SetEmote(int Emote, int Tick)
Definition character.cpp:693
void HandleSkippableTiles(int Index)
int m_NumObjectsHit
Definition character.h:141
int m_TuneZoneOld
Definition character.h:213
CCharacterCore m_ReckoningCore
Definition character.h:167
int m_LastTimeCp
Definition character.h:221
bool m_FrozenLastTick
Definition character.h:77
void Tick() override
Definition character.cpp:580
CNetObj_PlayerInput m_SavedInput
Definition character.h:158
void HandleNinja()
Definition character.cpp:103
int GetWeaponAmmo(int Type)
Definition character.h:254
void AddVelocity(vec2 Addition)
bool Freeze()
void SwapClients(int Client1, int Client2) override
Definition character.cpp:2575
void ReleaseHook()
Definition character.cpp:547
CCharacterCore m_Core
Definition character.h:167
int m_ReckoningTick
Definition character.h:165
void SetCore(const CCharacterCore &Core)
Definition character.h:250
void Snap(int SnappingClient) override
Definition character.cpp:1247
int m_PausedTick
Definition character.h:120
CNetObj_PlayerInput m_PrevInput
Definition character.h:156
bool m_Alive
Definition character.h:118
void SetCollisionDisabled(bool CollisionDisabled)
Definition character.cpp:213
int m_TuneZone
Definition character.h:163
void ForceSetRescue(int RescueMode)
Definition character.cpp:2185
bool IncreaseArmor(int Amount)
Definition character.cpp:979
vec2 m_TeleGunPos
Definition character.h:233
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition character.h:258
int m_StartTime
Definition character.h:216
bool IncreaseHealth(int Amount)
Definition character.cpp:971
void DoWeaponSwitch()
Definition character.cpp:189
CGameTeams * m_pTeams
Definition character.h:162
void SetTimeCheckpoint(int TimeCheckpoint)
Definition character.cpp:1570
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition character.cpp:610
CSaveTee & GetLastRescueTeeRef(int Mode=RESCUEMODE_AUTO)
Definition character.h:278
void SetDeepFrozen(bool Active)
Definition character.cpp:228
void CancelSwapRequests()
Definition character.cpp:1061
int m_FreezeTime
Definition character.h:76
bool IsSnappingCharacterInView(int SnappingClientId)
Definition character.cpp:1218
int m_PainSoundTimer
Definition character.h:214
void SetSolo(bool Solo)
Definition character.cpp:27
bool CanSnapCharacter(int SnappingClient)
Definition character.cpp:1197
void SetGrenadeHitDisabled(bool GrenadeHitDisabled)
Definition character.h:273
void SendZoneMsgs()
Definition character.cpp:2103
void SetSuper(bool Super)
Definition character.cpp:33
bool HammerHitDisabled() const
Definition character.h:266
void SetWeaponAmmo(int Type, int Value)
Definition character.h:255
void HandleWeaponSwitch()
Definition character.cpp:201
void HandleTuneLayer()
void SetEndlessJump(bool Active)
Definition character.cpp:162
int m_LastTimeCpBroadcasted
Definition character.h:222
vec2 m_PrevPos
Definition character.h:78
void Reset() override
Definition character.cpp:53
CGameTeams * Teams()
Definition character.h:191
void PreTick() override
Definition character.cpp:572
void Destroy() override
Definition character.cpp:136
bool IsGrounded()
Definition character.cpp:40
bool m_IsBlueTeleGunTeleport
Definition character.h:235
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition character.h:223
IAntibot * Antibot()
Definition character.cpp:2138
void SetVelocity(vec2 NewVelocity)
static bool IsSwitchActiveCb(int Number, void *pUser)
CCharacterCore m_SendCore
Definition character.h:166
bool SameTeam(int ClientId)
void SetShotgunHitDisabled(bool ShotgunHitDisabled)
Definition character.h:272
bool Remove()
CCharacterCore GetCore()
Definition character.h:249
bool UnFreeze()
CClientMask TeamMask()
Definition character.cpp:2533
void FillAntibot(CAntibotCharacterData *pData)
Definition character.cpp:1368
int m_QueuedWeapon
Definition character.h:144
void SetLiveFrozen(bool Active)
Definition character.cpp:223
void PostGlobalSnap()
Definition character.cpp:1347
void DDRacePostCoreTick()
void HandleJetpack()
Definition character.cpp:51
bool TrySetRescue(int RescueMode)
Definition character.cpp:2149
void SetRawVelocity(vec2 NewVelocity)
void SetHookHitDisabled(bool HookHitDisabled)
Definition character.cpp:218
void SetWeapon(int Weapon)
Definition character.cpp:17
CTuningParams * GetTuning(int Zone)
Definition character.h:279
bool IsAlive() const
Definition character.h:100
ERaceState m_DDRaceState
Definition character.h:203
CNetObj_PlayerInput m_LatestPrevPrevInput
Definition character.h:144
void SetLaserHitDisabled(bool LaserHitDisabled)
Definition character.h:274
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:498
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:518
void HandleBroadcast()
Definition character.cpp:1414
int m_LastMove
Definition character.h:215
int m_EmoteType
Definition character.h:137
bool IsSuper() const
Definition character.h:276
int m_DamageTaken
Definition character.h:135
int m_LastBroadcast
Definition character.h:176
int m_aHitObjects[MAX_CLIENTS]
Definition character.h:140
void SetHammerHitDisabled(bool HammerHitDisabled)
Definition character.h:271
void SetNinjaActivationDir(vec2 ActivationDir)
Definition character.h:256
int m_DamageTakenTick
Definition character.h:154
int m_Health
Definition character.h:156
void SetTeams(CGameTeams *pTeams)
Definition character.cpp:2143
void GiveWeapon(int Weapon, bool Remove=false)
Definition character.cpp:1166
void ResetJumps()
Definition character.cpp:2364
int64_t m_LastStartWarning
Definition character.h:228
int NeededFaketuning() const
Definition character.h:99
void TickDeferred() override
Definition character.cpp:603
int GetActiveWeapon() const
Definition character.h:244
void DDRaceInit()
Definition character.cpp:2450
void SetJumps(int Jumps)
Definition character.cpp:167
CNetObj_PlayerInput m_Input
Definition character.h:157
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:153
bool HasTelegunLaser() const
Definition character.h:264
bool GrenadeHitDisabled() const
Definition character.h:269
int m_NeededFaketuning
Definition character.h:121
void HandleWeapons()
Definition character.cpp:470
int m_TimeCpBroadcastEndTick
Definition character.h:220
friend class CGameWorld
Definition character.h:25
int m_MoveRestrictions
Definition character.h:149
void ResetPickups()
Definition character.cpp:2402
bool ShotgunHitDisabled() const
Definition character.h:267
friend class CSaveHotReloadTee
Definition character.h:32
void StopRecording()
Definition character.cpp:987
bool LaserHitDisabled() const
Definition character.h:268
class CPlayer * m_pPlayer
Definition character.h:116
int DetermineEyeEmote()
Definition character.cpp:699
void SetInvincible(bool Invincible)
Definition character.cpp:200
void ResetVelocity()
int m_TeamBeforeSuper
Definition character.h:209
void SetPosition(const vec2 &Position)
Definition character.cpp:2538
int64_t m_LastRescue
Definition character.h:229
int m_StrongWeakId
Definition character.h:178
void Move(vec2 RelPos)
Definition character.cpp:2543
bool m_TeleGunTeleport
Definition character.h:234
int m_TileIndex
Definition character.h:82
void Die(int Killer, int Weapon, bool SendKillMsg=true)
Definition character.cpp:1002
float m_Time
Definition character.h:175
void SetJetpack(bool Active)
Definition character.cpp:157
bool m_Paused
Definition character.h:119
void SetWeaponGot(int Type, bool Value)
Definition character.h:253
void GiveNinja()
Definition character.cpp:487
friend class CSaveTee
Definition character.h:31
void SnapCharacter(int SnappingClient, int Id)
Definition character.cpp:1071
bool m_LastPenalty
Definition character.h:231
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:166
@ 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:423
vector2_base< float > vec2
Definition vmath.h:161