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_CLIENT_PREDICTION_ENTITIES_CHARACTER_H
4#define GAME_CLIENT_PREDICTION_ENTITIES_CHARACTER_H
5
7
9#include <game/gamecore.h>
10#include <game/race_state.h>
11
12enum
13{
15 FAKETUNE_SOLO = 1 << 1,
21};
22
23class CCharacter : public CEntity
24{
25 friend class CGameWorld;
26
27public:
28 ~CCharacter() override;
29
30 void PreTick() override;
31 void Tick() override;
32 void TickDeferred() override;
33
34 bool IsGrounded();
35
36 void SetWeapon(int Weapon);
37 void SetSolo(bool Solo);
38 void SetSuper(bool Super);
39 void HandleWeaponSwitch();
40 void DoWeaponSwitch();
41
42 void HandleWeapons();
43 void HandleNinja();
44 void HandleJetpack();
45
46 void OnPredictedInput(const CNetObj_PlayerInput *pNewInput);
47 void OnDirectInput(const CNetObj_PlayerInput *pNewInput);
48 void ReleaseHook();
49 void ResetHook();
50 void ResetInput();
51 void FireWeapon();
52
53 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
54
55 void GiveWeapon(int Weapon, bool Remove = false);
56 void GiveNinja();
57 void RemoveNinja();
58
59 void ResetVelocity();
60 void SetVelocity(vec2 NewVelocity);
61 void SetRawVelocity(vec2 NewVelocity);
62 void AddVelocity(vec2 Addition);
64
66
68 bool Freeze(int Seconds);
69 bool Freeze();
70 bool UnFreeze();
71 void GiveAllWeapons();
72 int Team();
73 bool CanCollide(int ClientId) override;
74 bool SameTeam(int ClientId);
81
84
86
87 // Setters/Getters because i don't want to modify vanilla vars access modifiers
88 int GetLastWeapon() const { return m_LastWeapon; }
89 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
90 int GetActiveWeapon() const { return m_Core.m_ActiveWeapon; }
91 void SetActiveWeapon(int ActiveWeapon);
94 const CCharacterCore *Core() const { return &m_Core; }
95 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
96 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
97 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
98 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
99 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
100 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
101 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
102 int GetCid() { return m_Id; }
103 void SetInput(const CNetObj_PlayerInput *pNewInput)
104 {
105 m_LatestInput = m_Input = *pNewInput;
106 // it is not allowed to aim in the center
107 if(m_Input.m_TargetX == 0 && m_Input.m_TargetY == 0)
108 {
109 m_Input.m_TargetY = m_LatestInput.m_TargetY = -1;
110 }
111 }
112 int GetJumped() const { return m_Core.m_Jumped; }
113 int GetAttackTick() const { return m_AttackTick; }
114 int GetStrongWeakId() const { return m_StrongWeakId; }
115
116 CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended = nullptr);
117 void Read(CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended, bool IsLocal);
118 void SetCoreWorld(CGameWorld *pGameWorld);
119
124
125 bool Match(CCharacter *pChar) const;
126 void ResetPrediction();
127 void SetTuneZone(int Zone);
128 int GetOverriddenTuneZone() const;
129 int GetPureTuneZone() const;
130
131 bool HammerHitDisabled() const { return m_Core.m_HammerHitDisabled; }
132 bool ShotgunHitDisabled() const { return m_Core.m_ShotgunHitDisabled; }
133 bool LaserHitDisabled() const { return m_Core.m_LaserHitDisabled; }
134 bool GrenadeHitDisabled() const { return m_Core.m_GrenadeHitDisabled; }
135
136 bool IsSuper() const { return m_Core.m_Super; }
137
138private:
139 // weapon info
142
145
148
150
151 // these are non-heldback inputs
154
155 // input
159
161
162 // tune
165
166 // the player core for the physics
168
169 // DDRace
170
171 static bool IsSwitchActiveCb(int Number, void *pUser);
172 void HandleTiles(int Index);
173 void HandleSkippableTiles(int Index);
174 void DDRaceTick();
175 void DDRacePostCoreTick();
176 void HandleTuneLayer();
177
179
182};
183
184#endif
Definition gamecore.h:179
void FireWeapon()
Definition character.cpp:251
int m_NumInputs
Definition character.h:160
void SetLastWeapon(int LastWeap)
Definition character.h:89
vec2 m_PrevPrevPos
Definition character.h:79
bool GetWeaponGot(int Type)
Definition character.h:95
int m_ReloadTimer
Definition character.h:146
CNetObj_PlayerInput m_LatestPrevInput
Definition character.h:152
void ApplyMoveRestrictions()
Definition character.cpp:1220
void RemoveNinja()
Definition character.cpp:94
void DDRaceTick()
Definition character.cpp:1025
bool CanCollide(int ClientId) override
Definition character.cpp:619
void HandleTiles(int Index)
Definition character.cpp:728
void SetCoreWorld(CGameWorld *pGameWorld)
Definition character.cpp:1476
bool m_LastRefillJumps
Definition character.h:85
const CCharacterCore * Core() const
Definition character.h:94
void SetNinjaActivationTick(int ActivationTick)
Definition character.h:100
int GetLastWeapon() const
Definition character.h:88
int m_LastWeapon
Definition character.h:143
void ResetInput()
Definition character.cpp:560
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition character.cpp:1230
void ResetHook()
Definition character.cpp:554
void HandleSkippableTiles(int Index)
Definition character.cpp:634
int m_NumObjectsHit
Definition character.h:141
int GetPureTuneZone() const
Definition character.cpp:1512
bool m_FrozenLastTick
Definition character.h:77
void Tick() override
Definition character.cpp:580
CNetObj_PlayerInput m_SavedInput
Definition character.h:158
int m_LastSnapWeapon
Definition character.h:120
int m_TuneZoneOverride
Definition character.h:164
void HandleNinja()
Definition character.cpp:103
int GetWeaponAmmo(int Type)
Definition character.h:97
void AddVelocity(vec2 Addition)
Definition character.cpp:1215
bool Freeze()
Definition character.cpp:1145
void ReleaseHook()
Definition character.cpp:547
CCharacterCore m_Core
Definition character.h:167
void SetCore(const CCharacterCore &Core)
Definition character.h:93
bool Match(CCharacter *pChar) const
Definition character.cpp:1481
bool m_KeepHooked
Definition character.h:121
CNetObj_PlayerInput m_PrevInput
Definition character.h:156
int m_TuneZone
Definition character.h:163
int Team()
Definition character.cpp:629
int m_GameTeam
Definition character.h:122
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition character.h:101
bool m_IsLocal
Definition character.h:65
void DoWeaponSwitch()
Definition character.cpp:189
static bool IsSwitchActiveCb(int Number, void *pUser)
Definition character.cpp:721
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition character.cpp:610
int m_FreezeTime
Definition character.h:76
void SetSolo(bool Solo)
Definition character.cpp:27
void SetSuper(bool Super)
Definition character.cpp:33
bool HammerHitDisabled() const
Definition character.h:131
void SetWeaponAmmo(int Type, int Value)
Definition character.h:98
void HandleWeaponSwitch()
Definition character.cpp:201
void HandleTuneLayer()
Definition character.cpp:1018
vec2 m_PrevPos
Definition character.h:78
CTeamsCore * TeamsCore()
Definition character.cpp:1225
void PreTick() override
Definition character.cpp:572
void SetActiveWeapon(int ActiveWeapon)
Definition character.cpp:1486
bool IsGrounded()
Definition character.cpp:40
int GetStrongWeakId() const
Definition character.h:114
void SetVelocity(vec2 NewVelocity)
Definition character.cpp:1205
int GetAttackTick() const
Definition character.h:113
bool SameTeam(int ClientId)
Definition character.cpp:624
bool Remove()
bool m_CanMoveInFreeze
Definition character.h:123
CCharacterCore GetCore()
Definition character.h:92
bool UnFreeze()
Definition character.cpp:1150
int m_QueuedWeapon
Definition character.h:144
~CCharacter() override
Definition character.cpp:1517
void DDRacePostCoreTick()
Definition character.cpp:1074
void HandleJetpack()
Definition character.cpp:51
int GetJumped() const
Definition character.h:112
void SetRawVelocity(vec2 NewVelocity)
Definition character.cpp:1210
void SetWeapon(int Weapon)
Definition character.cpp:17
void OnPredictedInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:498
void OnDirectInput(const CNetObj_PlayerInput *pNewInput)
Definition character.cpp:518
int m_LastTuneZoneTick
Definition character.h:181
int GetCid()
Definition character.h:102
bool IsSuper() const
Definition character.h:136
int GetOverriddenTuneZone() const
Definition character.cpp:1507
int m_aHitObjects[MAX_CLIENTS]
Definition character.h:140
void SetNinjaActivationDir(vec2 ActivationDir)
Definition character.h:99
void GiveWeapon(int Weapon, bool Remove=false)
Definition character.cpp:1166
void SetInput(const CNetObj_PlayerInput *pNewInput)
Definition character.h:103
void TickDeferred() override
Definition character.cpp:603
int GetActiveWeapon() const
Definition character.h:90
CNetObj_PlayerInput m_Input
Definition character.h:157
bool m_NinjaJetpack
Definition character.h:75
int m_TeleCheckpoint
Definition character.h:80
void GiveAllWeapons()
Definition character.cpp:1190
int m_TileFIndex
Definition character.h:83
CNetObj_PlayerInput m_LatestInput
Definition character.h:153
bool GrenadeHitDisabled() const
Definition character.h:134
void HandleWeapons()
Definition character.cpp:470
void ResetPrediction()
Definition character.cpp:1263
friend class CGameWorld
Definition character.h:25
int m_MoveRestrictions
Definition character.h:149
bool ShotgunHitDisabled() const
Definition character.h:132
bool LaserHitDisabled() const
Definition character.h:133
void ResetVelocity()
Definition character.cpp:1198
int m_StrongWeakId
Definition character.h:178
int m_LastWeaponSwitchTick
Definition character.h:180
int m_TileIndex
Definition character.h:82
void Read(CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended, bool IsLocal)
Definition character.cpp:1299
void SetTuneZone(int Zone)
Definition character.cpp:1499
void SetWeaponGot(int Type, bool Value)
Definition character.h:96
void GiveNinja()
Definition character.cpp:487
int m_AttackTick
Definition character.h:147
CEntity(CGameWorld *pGameWorld, int Objtype, vec2 Pos=vec2(0, 0), int ProximityRadius=0)
Definition entity.cpp:11
int m_Id
Definition entity.h:24
Definition gameworld.h:18
Definition teamscore.h:25
@ 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
@ MAX_CLIENTS
Definition protocol.h:89
Definition protocol.h:518
Definition protocol.h:566
Definition protocol.h:423
vector2_base< float > vec2
Definition vmath.h:161