DDraceNetwork Docs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
8#include <game/gamecore.h>
10
11enum
12{
14 FAKETUNE_SOLO = 1 << 1,
20};
21
22class CCharacter : public CEntity
23{
24 friend class CGameWorld;
25
26public:
28
29 void PreTick() override;
30 void Tick() override;
31 void TickDeferred() override;
32
33 bool IsGrounded();
34
35 void SetWeapon(int W);
36 void SetSolo(bool Solo);
37 void SetSuper(bool Super);
38 void HandleWeaponSwitch();
39 void DoWeaponSwitch();
40
41 void HandleWeapons();
42 void HandleNinja();
43 void HandleJetpack();
44
46 void OnDirectInput(CNetObj_PlayerInput *pNewInput);
47 void ReleaseHook();
48 void ResetHook();
49 void ResetInput();
50 void FireWeapon();
51
52 bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon);
53
54 void GiveWeapon(int Weapon, bool Remove = false);
55 void GiveNinja();
56 void RemoveNinja();
57
58 void ResetVelocity();
59 void SetVelocity(vec2 NewVelocity);
60 void SetRawVelocity(vec2 NewVelocity);
61 void AddVelocity(vec2 Addition);
63
65
67 bool Freeze(int Seconds);
68 bool Freeze();
69 bool UnFreeze();
70 void GiveAllWeapons();
71 int Team();
72 bool CanCollide(int ClientId) override;
73 bool SameTeam(int ClientId);
80
83
85
86 // Setters/Getters because i don't want to modify vanilla vars access modifiers
87 int GetLastWeapon() { return m_LastWeapon; }
88 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
90 void SetActiveWeapon(int ActiveWeap);
93 const CCharacterCore *Core() const { return &m_Core; }
94 bool GetWeaponGot(int Type) { return m_Core.m_aWeapons[Type].m_Got; }
95 void SetWeaponGot(int Type, bool Value) { m_Core.m_aWeapons[Type].m_Got = Value; }
96 int GetWeaponAmmo(int Type) { return m_Core.m_aWeapons[Type].m_Ammo; }
97 void SetWeaponAmmo(int Type, int Value) { m_Core.m_aWeapons[Type].m_Ammo = Value; }
98 void SetNinjaActivationDir(vec2 ActivationDir) { m_Core.m_Ninja.m_ActivationDir = ActivationDir; }
99 void SetNinjaActivationTick(int ActivationTick) { m_Core.m_Ninja.m_ActivationTick = ActivationTick; }
100 void SetNinjaCurrentMoveTime(int CurrentMoveTime) { m_Core.m_Ninja.m_CurrentMoveTime = CurrentMoveTime; }
101 int GetCid() { return m_Id; }
102 void SetInput(const CNetObj_PlayerInput *pNewInput)
103 {
104 m_LatestInput = m_Input = *pNewInput;
105 // it is not allowed to aim in the center
106 if(m_Input.m_TargetX == 0 && m_Input.m_TargetY == 0)
107 {
109 }
110 };
111 int GetJumped() { return m_Core.m_Jumped; }
112 int GetAttackTick() { return m_AttackTick; }
114
115 CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended = nullptr);
116 void Read(CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended, bool IsLocal);
117 void SetCoreWorld(CGameWorld *pGameWorld);
118
124
125 bool Match(CCharacter *pChar) const;
126 void ResetPrediction();
127 void SetTuneZone(int Zone);
128 int GetOverriddenTuneZone() const;
129 int GetPureTuneZone() const;
130
135
136 bool IsSuper() { 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
181
184};
185
186enum
187{
190 DDRACE_CHEAT, // no time and won't start again unless ordered by a mod or death
193
194#endif
Definition: gamecore.h:177
int m_ActivationTick
Definition: gamecore.h:209
struct CCharacterCore::@193 m_Ninja
bool m_HammerHitDisabled
Definition: gamecore.h:254
bool m_Super
Definition: gamecore.h:259
bool m_LaserHitDisabled
Definition: gamecore.h:256
bool m_GrenadeHitDisabled
Definition: gamecore.h:255
bool m_ShotgunHitDisabled
Definition: gamecore.h:257
int m_CurrentMoveTime
Definition: gamecore.h:210
int m_ActiveWeapon
Definition: gamecore.h:196
vec2 m_ActivationDir
Definition: gamecore.h:208
int m_Jumped
Definition: gamecore.h:216
struct CCharacterCore::WeaponStat m_aWeapons[NUM_WEAPONS]
Definition: character.h:23
void FireWeapon()
Definition: character.cpp:250
int m_NumInputs
Definition: character.h:160
void SetLastWeapon(int LastWeap)
Definition: character.h:88
vec2 m_PrevPrevPos
Definition: character.h:78
bool GetWeaponGot(int Type)
Definition: character.h:94
int m_ReloadTimer
Definition: character.h:146
CNetObj_PlayerInput m_LatestPrevInput
Definition: character.h:152
void ApplyMoveRestrictions()
Definition: character.cpp:1173
void RemoveNinja()
Definition: character.cpp:95
void DDRaceTick()
Definition: character.cpp:981
bool CanCollide(int ClientId) override
Definition: character.cpp:620
void SetActiveWeapon(int ActiveWeap)
Definition: character.cpp:1439
void HandleTiles(int Index)
Definition: character.cpp:729
void SetCoreWorld(CGameWorld *pGameWorld)
Definition: character.cpp:1429
bool m_LastRefillJumps
Definition: character.h:84
const CCharacterCore * Core() const
Definition: character.h:93
void SetNinjaActivationTick(int ActivationTick)
Definition: character.h:99
int m_LastWeapon
Definition: character.h:143
void ResetInput()
Definition: character.cpp:561
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition: character.cpp:1183
void ResetHook()
Definition: character.cpp:555
void HandleSkippableTiles(int Index)
Definition: character.cpp:635
int m_NumObjectsHit
Definition: character.h:141
void OnPredictedInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:498
int GetPureTuneZone() const
Definition: character.cpp:1458
bool m_FrozenLastTick
Definition: character.h:76
void Tick() override
Definition: character.cpp:581
CNetObj_PlayerInput m_SavedInput
Definition: character.h:158
int m_LastSnapWeapon
Definition: character.h:119
int m_TuneZoneOverride
Definition: character.h:164
void HandleNinja()
Definition: character.cpp:104
int GetWeaponAmmo(int Type)
Definition: character.h:96
void AddVelocity(vec2 Addition)
Definition: character.cpp:1168
void OnDirectInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:519
bool Freeze()
Definition: character.cpp:1100
void ReleaseHook()
Definition: character.cpp:548
bool ShotgunHitDisabled()
Definition: character.h:132
CCharacterCore m_Core
Definition: character.h:167
bool Match(CCharacter *pChar) const
Definition: character.cpp:1434
void SetCore(CCharacterCore Core)
Definition: character.h:92
bool m_KeepHooked
Definition: character.h:121
CNetObj_PlayerInput m_PrevInput
Definition: character.h:156
int GetActiveWeapon()
Definition: character.h:89
int m_TuneZone
Definition: character.h:163
int Team()
Definition: character.cpp:630
int m_GameTeam
Definition: character.h:122
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition: character.h:100
bool m_IsLocal
Definition: character.h:64
void DoWeaponSwitch()
Definition: character.cpp:190
static bool IsSwitchActiveCb(int Number, void *pUser)
Definition: character.cpp:722
void SetWeapon(int W)
Definition: character.cpp:14
bool TakeDamage(vec2 Force, int Dmg, int From, int Weapon)
Definition: character.cpp:611
int m_FreezeTime
Definition: character.h:75
void SetSolo(bool Solo)
Definition: character.cpp:27
void SetSuper(bool Super)
Definition: character.cpp:33
void SetWeaponAmmo(int Type, int Value)
Definition: character.h:97
void HandleWeaponSwitch()
Definition: character.cpp:200
void HandleTuneLayer()
Definition: character.cpp:971
vec2 m_PrevPos
Definition: character.h:77
CTeamsCore * TeamsCore()
Definition: character.cpp:1178
int m_aHitObjects[10]
Definition: character.h:140
void PreTick() override
Definition: character.cpp:573
bool IsGrounded()
Definition: character.cpp:40
bool LaserHitDisabled()
Definition: character.h:133
void SetVelocity(vec2 NewVelocity)
Definition: character.cpp:1158
bool HammerHitDisabled()
Definition: character.h:131
~CCharacter()
Definition: character.cpp:1463
bool SameTeam(int ClientId)
Definition: character.cpp:625
CTuningParams * CharacterTuning()
bool Remove()
bool m_CanMoveInFreeze
Definition: character.h:123
int GetStrongWeakId()
Definition: character.h:113
CCharacterCore GetCore()
Definition: character.h:91
bool UnFreeze()
Definition: character.cpp:1105
int m_QueuedWeapon
Definition: character.h:144
void DDRacePostCoreTick()
Definition: character.cpp:1030
void HandleJetpack()
Definition: character.cpp:51
int GetJumped()
Definition: character.h:111
void SetRawVelocity(vec2 NewVelocity)
Definition: character.cpp:1163
bool IsSuper()
Definition: character.h:136
int GetAttackTick()
Definition: character.h:112
int m_LastTuneZoneTick
Definition: character.h:183
int GetCid()
Definition: character.h:101
int GetLastWeapon()
Definition: character.h:87
int GetOverriddenTuneZone() const
Definition: character.cpp:1453
void SetNinjaActivationDir(vec2 ActivationDir)
Definition: character.h:98
void GiveWeapon(int Weapon, bool Remove=false)
Definition: character.cpp:1119
void SetInput(const CNetObj_PlayerInput *pNewInput)
Definition: character.h:102
void TickDeferred() override
Definition: character.cpp:604
CNetObj_PlayerInput m_Input
Definition: character.h:157
int m_LastJetpackStrength
Definition: character.h:120
bool m_NinjaJetpack
Definition: character.h:74
int m_TeleCheckpoint
Definition: character.h:79
void GiveAllWeapons()
Definition: character.cpp:1143
int m_TileFIndex
Definition: character.h:82
CNetObj_PlayerInput m_LatestInput
Definition: character.h:153
void HandleWeapons()
Definition: character.cpp:470
void ResetPrediction()
Definition: character.cpp:1217
int m_MoveRestrictions
Definition: character.h:149
void ResetVelocity()
Definition: character.cpp:1151
int m_StrongWeakId
Definition: character.h:180
bool GrenadeHitDisabled()
Definition: character.h:134
int m_LastWeaponSwitchTick
Definition: character.h:182
int m_TileIndex
Definition: character.h:81
void Read(CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended, bool IsLocal)
Definition: character.cpp:1253
void SetTuneZone(int Zone)
Definition: character.cpp:1445
void SetWeaponGot(int Type, bool Value)
Definition: character.h:95
void GiveNinja()
Definition: character.cpp:487
int m_AttackTick
Definition: character.h:147
Definition: entity.h:13
int m_Id
Definition: entity.h:24
Definition: gameworld.h:18
Definition: teamscore.h:25
Definition: gamecore.h:42
@ 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
@ DDRACE_STARTED
Definition: character.h:189
@ DDRACE_FINISHED
Definition: character.h:191
@ DDRACE_CHEAT
Definition: character.h:190
@ DDRACE_NONE
Definition: character.h:188
bool m_Got
Definition: gamecore.h:202
int m_Ammo
Definition: gamecore.h:200
Definition: protocol.h:455
Definition: protocol.h:513
Definition: protocol.h:360
int m_TargetY
Definition: protocol.h:364
int m_TargetX
Definition: protocol.h:363