DDraceNetwork Docs
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
7#include <game/server/save.h>
8
9class CGameTeams;
10class CGameWorld;
11class IAntibot;
13
14enum
15{
23};
24
25class CCharacter : public CEntity
26{
28
29 // need to use core
30 friend class CSaveTee;
31 friend class CSaveHotReloadTee;
32
33public:
34 CCharacter(CGameWorld *pWorld, CNetObj_PlayerInput LastInput);
35
36 void Reset() override;
37 void Destroy() override;
38 void PreTick();
39 void Tick() override;
40 void TickDeferred() override;
41 void TickPaused() override;
42 void Snap(int SnappingClient) override;
43 void PostSnap() override;
44 void SwapClients(int Client1, int Client2) override;
45
46 bool CanSnapCharacter(int SnappingClient);
47 bool IsSnappingCharacterInView(int SnappingClientId);
48
49 bool IsGrounded();
50
51 void SetWeapon(int W);
52 void SetJetpack(bool Active);
53 void SetEndlessJump(bool Active);
54 void SetJumps(int Jumps);
55 void SetSolo(bool Solo);
56 void SetSuper(bool Super);
57 void SetInvincible(bool Invincible);
58 void SetLiveFrozen(bool Active);
59 void SetDeepFrozen(bool Active);
62
66
70 void ResetHook();
71 void ResetInput();
72 void FireWeapon();
73
74 void Die(int Killer, int Weapon, bool SendKillMsg = true);
75 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
76
77 bool Spawn(class CPlayer *pPlayer, vec2 Pos);
78 bool Remove();
79
80 bool IncreaseHealth(int Amount);
81 bool IncreaseArmor(int Amount);
82
83 void GiveWeapon(int Weapon, bool Remove = false);
84 void GiveNinja();
86 void SetEndlessHook(bool Enable);
87
88 void SetEmote(int Emote, int Tick);
89
90 void Rescue();
91
92 int NeededFaketuning() const { return m_NeededFaketuning; }
93 bool IsAlive() const { return m_Alive; }
94 bool IsPaused() const { return m_Paused; }
95 class CPlayer *GetPlayer() { return m_pPlayer; }
97
98 void SetPosition(const vec2 &Position);
99 void Move(vec2 RelPos);
100
102 void SetVelocity(vec2 NewVelocity);
103 void SetRawVelocity(vec2 NewVelocity);
104 void AddVelocity(vec2 Addition);
106
107private:
108 // player controlling this character
110
115
116 // weapon info
118 int m_NumObjectsHit;
119
120 int m_LastWeapon;
121 int m_QueuedWeapon;
122
123 int m_ReloadTimer;
124 int m_AttackTick;
125
127
129
132
133 // last tick that the player took any action ie some input
136
137 // these are non-heldback inputs
141
142 // input
146 int m_NumInputs;
147
149
152
154
155 // the player core for the physics
158
159 // info for dead reckoning
160 int m_ReckoningTick; // tick that we are performing dead reckoning From
161 CCharacterCore m_SendCore; // core that we should send
162 CCharacterCore m_ReckoningCore; // the dead reckoning core
163
164 // DDRace
165
166 void SnapCharacter(int SnappingClient, int Id);
167 static bool IsSwitchActiveCb(int Number, void *pUser);
168 void SetTimeCheckpoint(int TimeCheckpoint);
169 void HandleTiles(int Index);
170 float m_Time;
172 void DDRaceInit();
173 void HandleSkippableTiles(int Index);
174 void ForceSetRescue(int RescueMode);
177 void HandleBroadcast();
179 void SendZoneMsgs();
180 IAntibot *Antibot();
181
184
185public:
186 CGameTeams *Teams() { return m_pTeams; }
187 void SetTeams(CGameTeams *pTeams);
188 bool TrySetRescue(int RescueMode);
189
191 void Pause(bool Pause);
192 bool Freeze(int Seconds);
193 bool Freeze();
194 bool UnFreeze();
196 void ResetPickups();
197 void ResetJumps();
199 int Team();
200 bool CanCollide(int ClientId);
201 bool SameTeam(int ClientId);
202 void StopRecording();
203 bool m_NinjaJetpack;
205 int m_FreezeTime;
206 bool m_FrozenLastTick;
208 int m_TuneZone;
215
220
221 int m_TileIndex;
222 int m_TileFIndex;
223
232 int m_StrongWeakId;
233
236
237 // Setters/Getters because i don't want to modify vanilla vars access modifiers
238 int GetLastWeapon() const { return m_LastWeapon; }
239 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
240 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
241 void SetActiveWeapon(int ActiveWeap) { m_Core.m_ActiveWeapon = ActiveWeap; }
242 void SetLastAction(int LastAction) { m_LastAction = LastAction; }
243 int GetArmor() const { return m_Armor; }
244 void SetArmor(int Armor) { m_Armor = Armor; }
247 const CCharacterCore *Core() const { return &m_Core; }
248 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
249 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
250 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
251 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
252 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
253 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
254 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
255
256 int GetLastAction() const { return m_LastAction; }
257
258 bool HasTelegunGun() const { return m_Core.m_HasTelegunGun; }
260 bool HasTelegunLaser() const { return m_Core.m_HasTelegunLaser; }
261
266
267 bool IsSuper() const { return m_Core.m_Super; }
268
270 CTuningParams *GetTuning(int Zone) { return Zone ? &TuningList()[Zone] : Tuning(); }
271};
272
273enum
274{
277 DDRACE_CHEAT, // no time and won't start again unless ordered by a mod or death
280
281#endif
#define MACRO_ALLOC_POOL_ID()
Definition: alloc.h:36
Definition: gamecore.h:176
int m_ActivationTick
Definition: gamecore.h:208
bool m_HammerHitDisabled
Definition: gamecore.h:253
bool m_Super
Definition: gamecore.h:258
bool m_HasTelegunGun
Definition: gamecore.h:260
bool m_LaserHitDisabled
Definition: gamecore.h:255
bool m_HasTelegunLaser
Definition: gamecore.h:262
struct CCharacterCore::@195 m_Ninja
bool m_GrenadeHitDisabled
Definition: gamecore.h:254
bool m_HasTelegunGrenade
Definition: gamecore.h:261
bool m_ShotgunHitDisabled
Definition: gamecore.h:256
int m_CurrentMoveTime
Definition: gamecore.h:209
int m_ActiveWeapon
Definition: gamecore.h:195
vec2 m_ActivationDir
Definition: gamecore.h:207
struct CCharacterCore::WeaponStat m_aWeapons[NUM_WEAPONS]
Definition: character.h:24
bool m_LastBonus
Definition: character.h:228
void FireWeapon()
Definition: character.cpp:250
int m_NumInputs
Definition: character.h:161
bool IsPaused() const
Definition: character.h:94
void SetLastWeapon(int LastWeap)
Definition: character.h:239
void Rescue()
Definition: character.cpp:2412
bool Freeze(int Seconds)
bool GetWeaponGot(int Type)
Definition: character.h:248
int m_ReloadTimer
Definition: character.h:147
CNetObj_PlayerInput m_LatestPrevInput
Definition: character.h:153
int GetArmor() const
Definition: character.h:243
void TickPaused() override
Definition: character.cpp:921
void SetArmor(int Armor)
Definition: character.h:244
void ApplyMoveRestrictions()
CSaveTee m_RescueTee[NUM_RESCUEMODES]
Definition: character.h:183
bool m_SetSavePos[NUM_RESCUEMODES]
Definition: character.h:182
void RemoveNinja()
Definition: character.cpp:95
void DDRaceTick()
int m_WeaponChangeTick
Definition: character.h:235
void SetActiveWeapon(int ActiveWeap)
Definition: character.h:241
void HandleTiles(int Index)
bool HasTelegunGun() const
Definition: character.h:258
int m_Armor
Definition: character.h:151
void SetEndlessHook(bool Enable)
Definition: character.cpp:2320
bool HasTelegunGrenade() const
Definition: character.h:259
int m_LastAction
Definition: character.h:134
bool Spawn(class CPlayer *pPlayer, vec2 Pos)
Definition: character.cpp:55
class CPlayer * GetPlayer()
Definition: character.h:95
bool m_LastRefillJumps
Definition: character.h:85
const CCharacterCore * Core() const
Definition: character.h:94
void SetLastAction(int LastAction)
Definition: character.h:242
int m_SpawnTick
Definition: character.h:234
void Pause(bool Pause)
Definition: character.cpp:2331
void SetNinjaActivationTick(int ActivationTick)
Definition: character.h:253
int GetLastWeapon() const
Definition: character.h:238
int m_LastWeapon
Definition: character.h:144
int GetLastAction() const
Definition: character.h:256
void ResetInput()
Definition: character.cpp:561
int m_TriggeredEvents7
Definition: character.h:153
int m_EmoteStop
Definition: character.h:131
void ResetHook()
Definition: character.cpp:555
void SetEmote(int Emote, int Tick)
Definition: character.cpp:676
void HandleSkippableTiles(int Index)
int m_NumObjectsHit
Definition: character.h:142
int m_TuneZoneOld
Definition: character.h:209
void OnPredictedInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:498
CCharacterCore m_ReckoningCore
Definition: character.h:162
int m_LastTimeCp
Definition: character.h:217
bool m_FreezeHammer
Definition: character.h:207
bool m_FrozenLastTick
Definition: character.h:77
void Tick() override
Definition: character.cpp:581
CNetObj_PlayerInput m_SavedInput
Definition: character.h:159
void HandleNinja()
Definition: character.cpp:104
int GetWeaponAmmo(int Type)
Definition: character.h:250
CEntity * m_apHitObjects[10]
Definition: character.h:117
void AddVelocity(vec2 Addition)
void OnDirectInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:519
bool Freeze()
void SwapClients(int Client1, int Client2) override
Definition: character.cpp:2484
void ReleaseHook()
Definition: character.cpp:548
CCharacterCore m_Core
Definition: character.h:168
int m_ReckoningTick
Definition: character.h:160
void SetCore(CCharacterCore Core)
Definition: character.h:246
void Snap(int SnappingClient) override
Definition: character.cpp:1219
int m_PausedTick
Definition: character.h:113
CNetObj_PlayerInput m_PrevInput
Definition: character.h:157
bool m_Alive
Definition: character.h:111
int m_TuneZone
Definition: character.h:164
void ForceSetRescue(int RescueMode)
Definition: character.cpp:2093
bool IncreaseArmor(int Amount)
Definition: character.cpp:943
vec2 m_TeleGunPos
Definition: character.h:229
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition: character.h:254
int m_StartTime
Definition: character.h:212
bool IncreaseHealth(int Amount)
Definition: character.cpp:935
void DoWeaponSwitch()
Definition: character.cpp:190
void SetWeapon(int W)
Definition: character.cpp:14
CGameTeams * m_pTeams
Definition: character.h:157
void SetTimeCheckpoint(int TimeCheckpoint)
Definition: character.cpp:1483
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition: character.cpp:611
CSaveTee & GetLastRescueTeeRef(int Mode=RESCUEMODE_AUTO)
Definition: character.h:269
void SetDeepFrozen(bool Active)
Definition: character.cpp:211
int m_FreezeTime
Definition: character.h:76
bool IsSnappingCharacterInView(int SnappingClientId)
Definition: character.cpp:1190
int m_PainSoundTimer
Definition: character.h:210
void SetSolo(bool Solo)
Definition: character.cpp:27
bool CanSnapCharacter(int SnappingClient)
Definition: character.cpp:1169
void SendZoneMsgs()
Definition: character.cpp:2011
void SetSuper(bool Super)
Definition: character.cpp:33
bool HammerHitDisabled() const
Definition: character.h:262
bool CanCollide(int ClientId)
void SetWeaponAmmo(int Type, int Value)
Definition: character.h:251
void HandleWeaponSwitch()
Definition: character.cpp:200
void HandleTuneLayer()
void SetEndlessJump(bool Active)
Definition: character.cpp:157
int m_LastTimeCpBroadcasted
Definition: character.h:218
vec2 m_PrevPos
Definition: character.h:78
void Reset() override
Definition: character.cpp:49
CGameTeams * Teams()
Definition: character.h:186
void PreTick() override
Definition: character.cpp:573
void Destroy() override
Definition: character.cpp:131
bool IsGrounded()
Definition: character.cpp:40
bool m_IsBlueTeleGunTeleport
Definition: character.h:231
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition: character.h:219
IAntibot * Antibot()
Definition: character.cpp:2046
void SetVelocity(vec2 NewVelocity)
static bool IsSwitchActiveCb(int Number, void *pUser)
int m_LastNoAmmoSound
Definition: character.h:135
CCharacterCore m_SendCore
Definition: character.h:161
bool SameTeam(int ClientId)
bool Remove()
void PostSnap() override
Definition: character.cpp:1315
CCharacterCore GetCore()
Definition: character.h:245
bool UnFreeze()
CClientMask TeamMask()
Definition: character.cpp:2442
void FillAntibot(CAntibotCharacterData *pData)
Definition: character.cpp:1336
int m_QueuedWeapon
Definition: character.h:145
void SetLiveFrozen(bool Active)
Definition: character.cpp:206
void DDRacePostCoreTick()
void HandleJetpack()
Definition: character.cpp:51
bool TrySetRescue(int RescueMode)
Definition: character.cpp:2057
void SetRawVelocity(vec2 NewVelocity)
CTuningParams * GetTuning(int Zone)
Definition: character.h:270
bool IsAlive() const
Definition: character.h:93
CNetObj_PlayerInput m_LatestPrevPrevInput
Definition: character.h:138
void HandleBroadcast()
Definition: character.cpp:1352
int m_LastMove
Definition: character.h:211
int m_EmoteType
Definition: character.h:130
bool IsSuper() const
Definition: character.h:267
int m_DamageTaken
Definition: character.h:128
int m_LastBroadcast
Definition: character.h:171
void SetNinjaActivationDir(vec2 ActivationDir)
Definition: character.h:252
int m_DamageTakenTick
Definition: character.h:148
int m_Health
Definition: character.h:150
void SetTeams(CGameTeams *pTeams)
Definition: character.cpp:2051
void GiveWeapon(int Weapon, bool Remove=false)
Definition: character.cpp:1096
void ResetJumps()
Definition: character.cpp:2272
int64_t m_LastStartWarning
Definition: character.h:224
int NeededFaketuning() const
Definition: character.h:92
void TickDeferred() override
Definition: character.cpp:604
int GetActiveWeapon() const
Definition: character.h:240
void DDRaceInit()
Definition: character.cpp:2358
void SetJumps(int Jumps)
Definition: character.cpp:162
CNetObj_PlayerInput m_Input
Definition: character.h:158
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:154
bool HasTelegunLaser() const
Definition: character.h:260
bool GrenadeHitDisabled() const
Definition: character.h:265
int m_NeededFaketuning
Definition: character.h:114
void HandleWeapons()
Definition: character.cpp:470
int m_TimeCpBroadcastEndTick
Definition: character.h:216
int m_MoveRestrictions
Definition: character.h:150
void ResetPickups()
Definition: character.cpp:2310
bool ShotgunHitDisabled() const
Definition: character.h:263
void StopRecording()
Definition: character.cpp:951
bool LaserHitDisabled() const
Definition: character.h:264
class CPlayer * m_pPlayer
Definition: character.h:109
void SetInvincible(bool Invincible)
Definition: character.cpp:193
void ResetVelocity()
int m_TeamBeforeSuper
Definition: character.h:204
void SetPosition(const vec2 &Position)
Definition: character.cpp:2447
int64_t m_LastRescue
Definition: character.h:225
int m_StrongWeakId
Definition: character.h:181
void Move(vec2 RelPos)
Definition: character.cpp:2452
bool m_TeleGunTeleport
Definition: character.h:230
int m_TileIndex
Definition: character.h:82
void Die(int Killer, int Weapon, bool SendKillMsg=true)
Definition: character.cpp:966
float m_Time
Definition: character.h:170
void SetJetpack(bool Active)
Definition: character.cpp:152
bool m_Paused
Definition: character.h:112
int m_DDRaceState
Definition: character.h:198
void SetWeaponGot(int Type, bool Value)
Definition: character.h:249
void GiveNinja()
Definition: character.cpp:487
void SnapCharacter(int SnappingClient, int Id)
Definition: character.cpp:1026
bool m_LastPenalty
Definition: character.h:227
int m_AttackTick
Definition: character.h:148
Definition: entity.h:13
CTuningParams * TuningList()
Definition: entity.h:36
CTuningParams * Tuning()
Definition: entity.h:35
Definition: teams.h:14
Definition: gameworld.h:18
Definition: player.h:24
Definition: save.h:152
Definition: save.h:34
Definition: gamecore.h:41
Definition: antibot.h:7
@ DDRACE_STARTED
Definition: character.h:190
@ DDRACE_FINISHED
Definition: character.h:192
@ DDRACE_CHEAT
Definition: character.h:191
@ DDRACE_NONE
Definition: character.h:189
@ FAKETUNE_SOLO
Definition: character.h:14
@ FAKETUNE_NOCOLL
Definition: character.h:16
@ FAKETUNE_FREEZE
Definition: character.h:13
@ FAKETUNE_NOJUMP
Definition: character.h:15
@ FAKETUNE_JETPACK
Definition: character.h:18
@ FAKETUNE_NOHOOK
Definition: character.h:17
@ FAKETUNE_NOHAMMER
Definition: character.h:19
std::bitset< MAX_CLIENTS > CClientMask
Definition: protocol.h:139
@ MAX_CHECKPOINTS
Definition: protocol.h:90
@ NUM_RESCUEMODES
Definition: save.h:19
@ RESCUEMODE_AUTO
Definition: save.h:17
Definition: antibot_data.h:43
bool m_Got
Definition: gamecore.h:201
int m_Ammo
Definition: gamecore.h:199
Definition: protocol.h:360