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_CLIENT_PREDICTION_ENTITIES_CHARACTER_H
4#define GAME_CLIENT_PREDICTION_ENTITIES_CHARACTER_H
5
7
8#include <game/gamecore.h>
10
11enum
12{
20
21};
22
23class CCharacter : public CEntity
24{
25 friend class CGameWorld;
26
27public:
29
30 void PreTick() override;
31 void Tick() override;
32 void TickDeferred() override;
33
34 bool IsGrounded();
35
36 void SetWeapon(int W);
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
47 void OnDirectInput(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);
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() { return m_LastWeapon; }
89 void SetLastWeapon(int LastWeap) { m_LastWeapon = LastWeap; }
91 void SetActiveWeapon(int ActiveWeap);
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 {
110 }
111 };
112 int GetJumped() { return m_Core.m_Jumped; }
113 int GetAttackTick() { return m_AttackTick; }
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
125
126 bool Match(CCharacter *pChar) const;
127 void ResetPrediction();
128 void SetTuneZone(int Zone);
129 int GetOverriddenTuneZone() const;
130 int GetPureTuneZone() const;
131
136
137 bool IsSuper() { return m_Core.m_Super; }
138
139private:
140 // weapon info
143
146
149
151
152 // these are non-heldback inputs
155
156 // input
160
162
163 // tune
166
167 // the player core for the physics
169
170 // DDRace
171
172 static bool IsSwitchActiveCb(int Number, void *pUser);
173 void HandleTiles(int Index);
174 void HandleSkippableTiles(int Index);
175 void DDRaceTick();
176 void DDRacePostCoreTick();
177 void HandleTuneLayer();
178
180
182
185};
186
187enum
188{
191 DDRACE_CHEAT, // no time and won't start again unless ordered by a mod or death
194
195#endif
Definition: gamecore.h:176
int m_ActivationTick
Definition: gamecore.h:208
struct CCharacterCore::@193 m_Ninja
bool m_HammerHitDisabled
Definition: gamecore.h:253
bool m_Super
Definition: gamecore.h:258
bool m_LaserHitDisabled
Definition: gamecore.h:255
bool m_GrenadeHitDisabled
Definition: gamecore.h:254
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
int m_Jumped
Definition: gamecore.h:215
struct CCharacterCore::WeaponStat m_aWeapons[NUM_WEAPONS]
Definition: character.h:24
void FireWeapon()
Definition: character.cpp:250
int m_NumInputs
Definition: character.h:161
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:147
CNetObj_PlayerInput m_LatestPrevInput
Definition: character.h:153
void ApplyMoveRestrictions()
Definition: character.cpp:1150
void RemoveNinja()
Definition: character.cpp:95
void DDRaceTick()
Definition: character.cpp:958
void SetActiveWeapon(int ActiveWeap)
Definition: character.cpp:1416
void HandleTiles(int Index)
Definition: character.cpp:706
void SetCoreWorld(CGameWorld *pGameWorld)
Definition: character.cpp:1406
bool m_LastRefillJumps
Definition: character.h:85
const CCharacterCore * Core() const
Definition: character.h:94
void SetNinjaActivationTick(int ActivationTick)
Definition: character.h:100
int m_LastWeapon
Definition: character.h:144
void ResetInput()
Definition: character.cpp:561
CCharacter(CGameWorld *pGameWorld, int Id, CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended=nullptr)
Definition: character.cpp:1160
void ResetHook()
Definition: character.cpp:555
void HandleSkippableTiles(int Index)
Definition: character.cpp:635
int m_NumObjectsHit
Definition: character.h:142
void OnPredictedInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:498
int GetPureTuneZone() const
Definition: character.cpp:1435
bool m_FrozenLastTick
Definition: character.h:77
void Tick() override
Definition: character.cpp:581
CNetObj_PlayerInput m_SavedInput
Definition: character.h:159
int m_LastSnapWeapon
Definition: character.h:120
int m_TuneZoneOverride
Definition: character.h:165
void HandleNinja()
Definition: character.cpp:104
int GetWeaponAmmo(int Type)
Definition: character.h:97
void AddVelocity(vec2 Addition)
Definition: character.cpp:1145
void OnDirectInput(CNetObj_PlayerInput *pNewInput)
Definition: character.cpp:519
bool Freeze()
Definition: character.cpp:1077
void ReleaseHook()
Definition: character.cpp:548
bool ShotgunHitDisabled()
Definition: character.h:133
CCharacterCore m_Core
Definition: character.h:168
bool Match(CCharacter *pChar) const
Definition: character.cpp:1411
void SetCore(CCharacterCore Core)
Definition: character.h:93
bool m_KeepHooked
Definition: character.h:122
CNetObj_PlayerInput m_PrevInput
Definition: character.h:157
int GetActiveWeapon()
Definition: character.h:90
int m_TuneZone
Definition: character.h:164
int Team()
Definition: character.cpp:630
int m_GameTeam
Definition: character.h:123
void SetNinjaCurrentMoveTime(int CurrentMoveTime)
Definition: character.h:101
bool m_IsLocal
Definition: character.h:65
void DoWeaponSwitch()
Definition: character.cpp:190
static bool IsSwitchActiveCb(int Number, void *pUser)
Definition: character.cpp:699
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:76
void SetSolo(bool Solo)
Definition: character.cpp:27
void SetSuper(bool Super)
Definition: character.cpp:33
bool CanCollide(int ClientId)
Definition: character.cpp:620
void SetWeaponAmmo(int Type, int Value)
Definition: character.h:98
void HandleWeaponSwitch()
Definition: character.cpp:200
void HandleTuneLayer()
Definition: character.cpp:948
vec2 m_PrevPos
Definition: character.h:78
CTeamsCore * TeamsCore()
Definition: character.cpp:1155
int m_aHitObjects[10]
Definition: character.h:141
void PreTick() override
Definition: character.cpp:573
bool IsGrounded()
Definition: character.cpp:40
bool LaserHitDisabled()
Definition: character.h:134
void SetVelocity(vec2 NewVelocity)
Definition: character.cpp:1135
bool HammerHitDisabled()
Definition: character.h:132
~CCharacter()
Definition: character.cpp:1440
bool SameTeam(int ClientId)
Definition: character.cpp:625
CTuningParams * CharacterTuning()
bool Remove()
bool m_CanMoveInFreeze
Definition: character.h:124
int GetStrongWeakId()
Definition: character.h:114
CCharacterCore GetCore()
Definition: character.h:92
bool UnFreeze()
Definition: character.cpp:1082
int m_QueuedWeapon
Definition: character.h:145
void DDRacePostCoreTick()
Definition: character.cpp:1007
void HandleJetpack()
Definition: character.cpp:51
int GetJumped()
Definition: character.h:112
void SetRawVelocity(vec2 NewVelocity)
Definition: character.cpp:1140
bool IsSuper()
Definition: character.h:137
int GetAttackTick()
Definition: character.h:113
int m_LastTuneZoneTick
Definition: character.h:184
int GetCid()
Definition: character.h:102
int GetLastWeapon()
Definition: character.h:88
int GetOverriddenTuneZone() const
Definition: character.cpp:1430
void SetNinjaActivationDir(vec2 ActivationDir)
Definition: character.h:99
void GiveWeapon(int Weapon, bool Remove=false)
Definition: character.cpp:1096
void SetInput(const CNetObj_PlayerInput *pNewInput)
Definition: character.h:103
void TickDeferred() override
Definition: character.cpp:604
CNetObj_PlayerInput m_Input
Definition: character.h:158
int m_LastJetpackStrength
Definition: character.h:121
bool m_NinjaJetpack
Definition: character.h:75
int m_TeleCheckpoint
Definition: character.h:80
void GiveAllWeapons()
Definition: character.cpp:1120
int m_TileFIndex
Definition: character.h:83
CNetObj_PlayerInput m_LatestInput
Definition: character.h:154
void HandleWeapons()
Definition: character.cpp:470
void ResetPrediction()
Definition: character.cpp:1194
int m_MoveRestrictions
Definition: character.h:150
void ResetVelocity()
Definition: character.cpp:1128
int m_StrongWeakId
Definition: character.h:181
bool GrenadeHitDisabled()
Definition: character.h:135
int m_LastWeaponSwitchTick
Definition: character.h:183
int m_TileIndex
Definition: character.h:82
void Read(CNetObj_Character *pChar, CNetObj_DDNetCharacter *pExtended, bool IsLocal)
Definition: character.cpp:1230
void SetTuneZone(int Zone)
Definition: character.cpp:1422
void SetWeaponGot(int Type, bool Value)
Definition: character.h:96
void GiveNinja()
Definition: character.cpp:487
int m_AttackTick
Definition: character.h:148
Definition: entity.h:13
int m_Id
Definition: entity.h:24
Definition: gameworld.h:17
Definition: teamscore.h:25
Definition: gamecore.h:41
@ 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:190
@ DDRACE_FINISHED
Definition: character.h:192
@ DDRACE_CHEAT
Definition: character.h:191
@ DDRACE_NONE
Definition: character.h:189
bool m_Got
Definition: gamecore.h:201
int m_Ammo
Definition: gamecore.h:199
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