28#include "navigation_path.h"
30#define MAX_BOT_FUNCTIONS 5
34 AttractiveNodePtr m_pNode;
45 void SetControlledEntity(
Player *newEntity);
47 void MoveThink(usercmd_t& botcmd);
52 Vector vPreferredDir = vec_zero,
53 float *vLeashHome = NULL,
54 float fLeashRadius = 0.0f
56 void MoveNear(
Vector vNear,
float fRadius,
float *vLeashHome = NULL,
float fLeashRadius = 0.0f);
57 void MoveTo(
Vector vPos,
float *vLeashHome = NULL,
float fLeashRadius = 0.0f);
58 bool MoveToBestAttractivePoint(
int iMinPriority = 0);
60 bool CanMoveTo(
Vector vPos);
65 Vector GetCurrentGoal()
const;
66 Vector GetCurrentPathDirection()
const;
69 void CheckAttractiveNodes();
70 void CheckEndPos(
Entity *entity);
71 void CheckJump(usercmd_t& botcmd);
72 void CheckJumpOverEdge(usercmd_t& botcmd);
78 AttractiveNodePtr m_pPrimaryAttract;
101 bool m_bAvoidCollision;
102 int m_iCollisionCheckTime;
103 Vector m_vTempCollisionAvoidance;
110 int m_iJumpCheckTime;
119 void SetControlledEntity(
Player *newEntity);
121 void TurnThink(usercmd_t& botcmd, usereyes_t& eyeinfo);
122 const Vector& GetTargetAngles()
const;
123 void SetTargetAngles(
Vector vAngles);
132 float m_fYawSpeedMult;
138 virtual bool CheckCondition()
const = 0;
139 virtual void Begin() = 0;
140 virtual void End() = 0;
141 virtual void Think() = 0;
144class BotController :
public Listener
148 bool (BotController::*CheckCondition)(void);
149 void (BotController::*BeginState)(void);
150 void (BotController::*EndState)(void);
151 void (BotController::*ThinkState)(void);
164 int m_iAttackStopAimTime;
175 usereyes_t m_botEyes;
179 unsigned int m_StateFlags;
183 int m_iNextTauntTime;
191 Weapon *FindWeaponWithAmmo(
void);
192 Weapon *FindMeleeWeapon(
void);
193 void UseWeaponWithAmmo(
void);
196 void CheckValidWeapon(
void);
198 void State_DefaultBegin(
void);
199 void State_DefaultEnd(
void);
200 void State_Reset(
void);
202 static void InitState_Idle(
botfunc_t *func);
203 bool CheckCondition_Idle(
void);
204 void State_BeginIdle(
void);
205 void State_EndIdle(
void);
206 void State_Idle(
void);
208 static void InitState_Curious(
botfunc_t *func);
209 bool CheckCondition_Curious(
void);
210 void State_BeginCurious(
void);
211 void State_EndCurious(
void);
212 void State_Curious(
void);
214 static void InitState_Attack(
botfunc_t *func);
215 bool CheckCondition_Attack(
void);
216 void State_BeginAttack(
void);
217 void State_EndAttack(
void);
218 void State_Attack(
void);
219 bool IsValidEnemy(
Sentient *sent)
const;
221 static void InitState_Grenade(
botfunc_t *func);
222 bool CheckCondition_Grenade(
void);
223 void State_BeginGrenade(
void);
224 void State_EndGrenade(
void);
225 void State_Grenade(
void);
227 static void InitState_Weapon(
botfunc_t *func);
228 bool CheckCondition_Weapon(
void);
229 void State_BeginWeapon(
void);
230 void State_EndWeapon(
void);
231 void State_Weapon(
void);
233 void CheckStates(
void);
236 CLASS_PROTOTYPE(BotController);
241 static void Init(
void);
243 void GetEyeInfo(usereyes_t *eyeinfo);
244 void GetUsercmd(usercmd_t *ucmd);
246 void UpdateBotStates(
void);
247 void CheckReload(
void);
249 void AimAtAimNode(
void);
251 void NoticeEvent(
Vector vPos,
int iType,
Entity *pEnt,
float fDistanceSquared,
float fRadiusSquared);
252 void ClearEnemy(
void);
254 void SendCommand(
const char *text);
260 void Killed(
const Event& ev);
261 void GotKill(
const Event& ev);
262 void EventStuffText(
const str& text);
267 void setControlledEntity(
Player *player);
268 Player *getControlledEntity()
const;
289 void ThinkControllers();
306 void BroadcastEvent(
Entity *originator,
Vector origin,
int iType,
float radius);
Definition playerbot.h:275
Definition playerbot.h:145
Definition playerbot.h:296
Definition playerbot.h:40
Definition playerbot.h:115
Definition playerbot.h:136
Definition container.h:85
Definition listener.h:246
Definition navigation_path.h:43
Definition gamescript.h:165
Definition playerbot.h:147
Definition playerbot.h:32