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
7
8#include <game/race_state.h>
9#include <game/server/save.h>
10
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
34
35public:
37
38 void Reset() override;
39 void Destroy() override;
40 void PreTick();
41 void Tick() override;
43 void TickPaused() override;
45 void SwapClients(int Client1, int Client2) override;
46
47 void PostGlobalSnap();
48
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 SetLiveFrozen(bool Active);
62 void SetDeepFrozen(bool Active);
65
69
73 void ResetHook();
74 void ResetInput();
75 void FireWeapon();
76
77 void Die(int Killer, int Weapon, bool SendKillMsg = true);
78 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
79 void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial);
80 void CancelSwapRequests();
81
83 bool Remove();
84
85 bool IncreaseHealth(int Amount);
86 bool IncreaseArmor(int Amount);
87
88 void GiveWeapon(int Weapon, bool Remove = false);
89 void GiveNinja();
91 void SetEndlessHook(bool Enable);
92
93 void SetEmote(int Emote, int Tick);
94
95 void Rescue();
96
97 int NeededFaketuning() const { return m_NeededFaketuning; }
98 bool IsAlive() const { return m_Alive; }
99 bool IsPaused() const { return m_Paused; }
100 class CPlayer *GetPlayer() { return m_pPlayer; }
102
103 void SetPosition(const vec2 &Position);
104 void Move(vec2 RelPos);
105
111
112private:
113 // player controlling this character
115
120
121 // weapon info
123 int m_NumObjectsHit;
124
125 int m_LastWeapon;
126 int m_QueuedWeapon;
127
128 int m_ReloadTimer;
129 int m_AttackTick;
130
132
134
137
138 // last tick that the player took any action ie some input
141
142 // these are non-heldback inputs
146
147 // input
151 int m_NumInputs;
152
154
158
159 // the player core for the physics
162
163 // info for dead reckoning
164 int m_ReckoningTick; // tick that we are performing dead reckoning From
165 CCharacterCore m_SendCore; // core that we should send
166 CCharacterCore m_ReckoningCore; // the dead reckoning core
167
168 // DDRace
169
170 void SnapCharacter(int SnappingClient, int Id);
171 static bool IsSwitchActiveCb(int Number, void *pUser);
174 float m_Time;
176 void DDRaceInit();
178 void ForceSetRescue(int RescueMode);
181 void HandleBroadcast();
183 void SendZoneMsgs();
184 IAntibot *Antibot();
185
188
189public:
190 CGameTeams *Teams() { return m_pTeams; }
192 bool TrySetRescue(int RescueMode);
193
195 void Pause(bool Pause);
196 bool Freeze(int Seconds);
197 bool Freeze();
198 bool UnFreeze();
200 void ResetPickups();
201 void ResetJumps();
203 int Team();
204 bool CanCollide(int ClientId) override;
205 bool SameTeam(int ClientId);
206 void StopRecording();
207 bool m_NinjaJetpack;
209 int m_FreezeTime;
210 bool m_FrozenLastTick;
211 int m_TuneZone;
218
223
224 int m_TileIndex;
225 int m_TileFIndex;
226
235 int m_StrongWeakId;
236
239
240 // Setters/Getters because i don't want to modify vanilla vars access modifiers
241 int GetLastWeapon() const { return m_LastWeapon; }
243 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
246 int GetArmor() const { return m_Armor; }
247 void SetArmor(int Armor) { m_Armor = Armor; }
250 const CCharacterCore *Core() const { return &m_Core; }
251 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
252 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
253 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
254 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
258
259 int GetLastAction() const { return m_LastAction; }
260
261 bool HasTelegunGun() const { return m_Core.m_HasTelegunGun; }
263 bool HasTelegunLaser() const { return m_Core.m_HasTelegunLaser; }
264
269
270 bool IsSuper() const { return m_Core.m_Super; }
271
274};
275
276#endif
#define MACRO_ALLOC_POOL_ID()
Definition alloc.h:36
Definition gamecore.h:180
bool m_HammerHitDisabled
Definition gamecore.h:258
bool m_Super
Definition gamecore.h:263
bool m_HasTelegunGun
Definition gamecore.h:265
bool m_LaserHitDisabled
Definition gamecore.h:260
class CCharacterCore::CWeaponStat m_aWeapons[NUM_WEAPONS]
bool m_HasTelegunLaser
Definition gamecore.h:267
struct CCharacterCore::@195 m_Ninja
bool m_GrenadeHitDisabled
Definition gamecore.h:259
bool m_HasTelegunGrenade
Definition gamecore.h:266
bool m_ShotgunHitDisabled
Definition gamecore.h:261
int m_ActiveWeapon
Definition gamecore.h:199
Definition character.h:24
bool m_LastBonus
Definition character.h:231
void FireWeapon()
Definition character.cpp:248
int m_NumInputs
Definition character.h:160
bool IsPaused() const
Definition character.h:99
void SetLastWeapon(int LastWeap)
Definition character.h:242
void Rescue()
Definition character.cpp:2480
bool Freeze(int Seconds)
bool GetWeaponGot(int Type)
Definition character.h:251
int m_ReloadTimer
Definition character.h:146
CNetObj_PlayerInput m_LatestPrevInput
Definition character.h:152
int GetArmor() const
Definition character.h:246
void TickPaused() override
Definition character.cpp:921
void SetArmor(int Armor)
Definition character.h:247
void ApplyMoveRestrictions()
CSaveTee m_RescueTee[NUM_RESCUEMODES]
Definition character.h:187
bool m_SetSavePos[NUM_RESCUEMODES]
Definition character.h:186
void RemoveNinja()
Definition character.cpp:93
void DDRaceTick()
int m_WeaponChangeTick
Definition character.h:238
bool CanCollide(int ClientId) override
void SetActiveWeapon(int ActiveWeap)
Definition character.h:244
void HandleTiles(int Index)
bool HasTelegunGun() const
Definition character.h:261
int m_Armor
Definition character.h:156
void SendDeathMessageIfNotInLockedTeam(int Killer, int Weapon, int ModeSpecial)
Definition character.cpp:1012
void SetEndlessHook(bool Enable)
Definition character.cpp:2389
bool HasTelegunGrenade() const
Definition character.h:262
int m_LastAction
Definition character.h:139
bool Spawn(class CPlayer *pPlayer, vec2 Pos)
Definition character.cpp:58
class CPlayer * GetPlayer()
Definition character.h:100
bool m_LastRefillJumps
Definition character.h:85
const CCharacterCore * Core() const
Definition character.h:94
void SetLastAction(int LastAction)
Definition character.h:245
int m_SpawnTick
Definition character.h:237
void Pause(bool Pause)
Definition character.cpp:2400
void SetNinjaActivationTick(int ActivationTick)
Definition character.h:256
int GetLastWeapon() const
Definition character.h:241
int m_LastWeapon
Definition character.h:143
int GetLastAction() const
Definition character.h:259
void ResetInput()
Definition character.cpp:559
int m_TriggeredEvents7
Definition character.h:157
int m_EmoteStop
Definition character.h:136
void ResetHook()
Definition character.cpp:553
void SetEmote(int Emote, int Tick)
Definition character.cpp:676
void HandleSkippableTiles(int Index)
int m_NumObjectsHit
Definition character.h:141
int m_TuneZoneOld
Definition character.h:212
CCharacterCore m_ReckoningCore
Definition character.h:166
int m_LastTimeCp
Definition character.h:220
bool m_FrozenLastTick
Definition character.h:77
void Tick() override
Definition character.cpp:579
CNetObj_PlayerInput m_SavedInput
Definition character.h:158
void HandleNinja()
Definition character.cpp:102
int GetWeaponAmmo(int Type)
Definition character.h:253
CEntity * m_apHitObjects[10]
Definition character.h:122
void AddVelocity(vec2 Addition)
bool Freeze()
void SwapClients(int Client1, int Client2) override
Definition character.cpp:2552
void ReleaseHook()
Definition character.cpp:546
CCharacterCore m_Core
Definition character.h:167
int m_ReckoningTick
Definition character.h:164
void SetCore(CCharacterCore Core)
Definition character.h:249
void Snap(int SnappingClient) override
Definition character.cpp:1229
int m_PausedTick
Definition character.h:118
CNetObj_PlayerInput m_PrevInput
Definition character.h:156
bool m_Alive
Definition character.h:116
int m_TuneZone
Definition character.h:163
void ForceSetRescue(int RescueMode)
Definition character.cpp:2162
bool IncreaseArmor(int Amount)
Definition character.cpp:943
vec2 m_TeleGunPos
Definition character.h:232
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition character.h:257
int m_StartTime
Definition character.h:215
bool IncreaseHealth(int Amount)
Definition character.cpp:935
void DoWeaponSwitch()
Definition character.cpp:188
CGameTeams * m_pTeams
Definition character.h:161
void SetTimeCheckpoint(int TimeCheckpoint)
Definition character.cpp:1552
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition character.cpp:609
CSaveTee & GetLastRescueTeeRef(int Mode=RESCUEMODE_AUTO)
Definition character.h:272
void SetDeepFrozen(bool Active)
Definition character.cpp:214
void CancelSwapRequests()
Definition character.cpp:1025
int m_FreezeTime
Definition character.h:76
bool IsSnappingCharacterInView(int SnappingClientId)
Definition character.cpp:1200
int m_PainSoundTimer
Definition character.h:213
void SetSolo(bool Solo)
Definition character.cpp:26
bool CanSnapCharacter(int SnappingClient)
Definition character.cpp:1179
void SendZoneMsgs()
Definition character.cpp:2080
void SetSuper(bool Super)
Definition character.cpp:32
bool HammerHitDisabled() const
Definition character.h:265
void SetWeaponAmmo(int Type, int Value)
Definition character.h:254
void HandleWeaponSwitch()
Definition character.cpp:198
void HandleTuneLayer()
void SetEndlessJump(bool Active)
Definition character.cpp:160
int m_LastTimeCpBroadcasted
Definition character.h:221
vec2 m_PrevPos
Definition character.h:78
void Reset() override
Definition character.cpp:52
CGameTeams * Teams()
Definition character.h:190
void PreTick() override
Definition character.cpp:571
void Destroy() override
Definition character.cpp:134
bool IsGrounded()
Definition character.cpp:39
bool m_IsBlueTeleGunTeleport
Definition character.h:234
float m_aCurrentTimeCp[MAX_CHECKPOINTS]
Definition character.h:222
IAntibot * Antibot()
Definition character.cpp:2115
void SetVelocity(vec2 NewVelocity)
static bool IsSwitchActiveCb(int Number, void *pUser)
int m_LastNoAmmoSound
Definition character.h:140
CCharacterCore m_SendCore
Definition character.h:165
bool SameTeam(int ClientId)
bool Remove()
CCharacterCore GetCore()
Definition character.h:248
bool UnFreeze()
CClientMask TeamMask()
Definition character.cpp:2510
void FillAntibot(CAntibotCharacterData *pData)
Definition character.cpp:1350
int m_QueuedWeapon
Definition character.h:144
void SetLiveFrozen(bool Active)
Definition character.cpp:209
void PostGlobalSnap()
Definition character.cpp:1329
void DDRacePostCoreTick()
void HandleJetpack()
Definition character.cpp:50
bool TrySetRescue(int RescueMode)
Definition character.cpp:2126
void SetRawVelocity(vec2 NewVelocity)
void SetWeapon(int Weapon)
Definition character.cpp:16
CTuningParams * GetTuning(int Zone)
Definition character.h:273
bool IsAlive() const
Definition character.h:98
ERaceState m_DDRaceState
Definition character.h:202
CNetObj_PlayerInput m_LatestPrevPrevInput
Definition character.h:143
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:496
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:517
void HandleBroadcast()
Definition character.cpp:1396
int m_LastMove
Definition character.h:214
int m_EmoteType
Definition character.h:135
bool IsSuper() const
Definition character.h:270
int m_DamageTaken
Definition character.h:133
int m_LastBroadcast
Definition character.h:175
void SetNinjaActivationDir(vec2 ActivationDir)
Definition character.h:255
int m_DamageTakenTick
Definition character.h:153
int m_Health
Definition character.h:155
void SetTeams(CGameTeams *pTeams)
Definition character.cpp:2120
void GiveWeapon(int Weapon, bool Remove=false)
Definition character.cpp:1168
void ResetJumps()
Definition character.cpp:2341
int64_t m_LastStartWarning
Definition character.h:227
int NeededFaketuning() const
Definition character.h:97
void TickDeferred() override
Definition character.cpp:602
int GetActiveWeapon() const
Definition character.h:243
void DDRaceInit()
Definition character.cpp:2427
void SetJumps(int Jumps)
Definition character.cpp:165
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:263
bool GrenadeHitDisabled() const
Definition character.h:268
int m_NeededFaketuning
Definition character.h:119
void HandleWeapons()
Definition character.cpp:468
int m_TimeCpBroadcastEndTick
Definition character.h:219
int m_MoveRestrictions
Definition character.h:149
void ResetPickups()
Definition character.cpp:2379
bool ShotgunHitDisabled() const
Definition character.h:266
void StopRecording()
Definition character.cpp:951
bool LaserHitDisabled() const
Definition character.h:267
class CPlayer * m_pPlayer
Definition character.h:114
void SetInvincible(bool Invincible)
Definition character.cpp:196
void ResetVelocity()
int m_TeamBeforeSuper
Definition character.h:208
void SetPosition(const vec2 &Position)
Definition character.cpp:2515
int64_t m_LastRescue
Definition character.h:228
int m_StrongWeakId
Definition character.h:180
void Move(vec2 RelPos)
Definition character.cpp:2520
bool m_TeleGunTeleport
Definition character.h:233
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:174
void SetJetpack(bool Active)
Definition character.cpp:155
bool m_Paused
Definition character.h:117
void SetWeaponGot(int Type, bool Value)
Definition character.h:252
void GiveNinja()
Definition character.cpp:485
void SnapCharacter(int SnappingClient, int Id)
Definition character.cpp:1036
bool m_LastPenalty
Definition character.h:230
int m_AttackTick
Definition character.h:147
Definition entity.h:13
CTuningParams * TuningList()
Definition entity.h:36
CTuningParams * Tuning()
Definition entity.h:35
Definition teams.h:16
Definition gameworld.h:18
Definition player.h:24
Definition save.h:157
Definition save.h:38
Definition gamecore.h:43
Definition antibot.h:7
Definition vmath.h:15
@ 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:142
@ MAX_CHECKPOINTS
Definition protocol.h:91
ERaceState
Definition race_state.h:5
@ NUM_RESCUEMODES
Definition save.h:23
@ RESCUEMODE_AUTO
Definition save.h:21
Definition antibot_data.h:56
Definition protocol.h:402