14#include "LoopedAnimationController.h"
15#include "ObserverImpClass.h"
16#include "ReferencerClass.h"
18class ActionParamsStruct;
20class Pathfind_Help_Implementer
23 virtual ~Pathfind_Help_Implementer() {};
24 virtual bool Should_Ignore_Blocked_Checking(GameObject *obj) = 0;
25 virtual void Prepare_Getting_Around(GameObject *obj) = 0;
26 virtual void Stop_Getting_Around(GameObject *obj) = 0;
27 virtual void On_Unable_To_Get_Unstuck(GameObject *obj) = 0;
29 virtual ActionParamsStruct Get_Param_Attack_Modifications(ActionParamsStruct params) = 0;
67 ~dp88_customAI() {
if ( debugFile != NULL ) { fclose(debugFile); } };
77 float priority_infantry;
bool primary_infantry;
78 float priority_lightVehicle;
bool primary_lightVehicle;
79 float priority_heavyVehicle;
bool primary_heavyVehicle;
80 float priority_VTOL;
bool primary_VTOL;
81 float priority_building;
bool primary_building;
84 float modifier_distance, modifier_target_damage, modifier_target_value;
87 int primary_minRange, primary_maxRange;
88 int secondary_minRange, secondary_maxRange;
92 ReferencerClass m_target;
96 bool m_bTargetPrimaryFire;
103 bool m_bCanDetectStealth;
126 virtual void Created( GameObject *obj );
127 virtual void Timer_Expired(GameObject *obj,
int number);
128 virtual void Custom ( GameObject* pObj,
int message,
int param, GameObject* pSender );
129 virtual void Action_Complete( GameObject *obj,
int action_id, ActionCompleteReason complete_reason );
140 virtual void Init( GameObject *obj );
141 virtual void loadSettings( GameObject *obj,
bool loadSecondaryFireSettings,
bool loadBuildingTargetSettings );
143 virtual void AIStateChanged( GameObject* pObj,
bool bEnabled );
151 static float getDistance ( GameObject *obj1, GameObject *obj2 );
152 virtual float getBasePriority(GameObject *target );
153 virtual float getPriority( GameObject *obj, GameObject *target );
154 virtual float getPriority( GameObject *obj,
int target_id );
155 bool getPrimary ( GameObject *target );
158 virtual bool IsVehicleEmpty( VehicleGameObj* vobj );
159 virtual bool IsVehicleAIEnabled( VehicleGameObj* vobj );
162 static TargetType GetTargetType(GameObject* obj);
177 void Created(GameObject* obj);
215 void Created(GameObject* obj);
216 float Get_Distance_From_Pathfind();
218 float pathfindDistance;
234 void Created(GameObject *obj);
235 void Detach(GameObject *obj);
236 void Timer_Expired(GameObject *obj,
int number);
237 void Action_Complete(GameObject *obj,
int action_id, ActionCompleteReason reason);
240 virtual void Init(GameObject *obj);
241 virtual void loadSettings(GameObject *obj,
bool loadSecondaryFireSettings,
bool loadBuildingTargetSettings);
243 virtual void Force_Clear_Current_Objective();
247 static DynamicVectorClass<dp88_AI_Unit*> ListOfAIUnits;
250 static const int ACTION_ID_MOVE_TO_OBJECTIVE = 7850001;
251 static const int ACTION_ID_ATTACK_TARGET = 7850002;
257 virtual void GoToObjective(GameObject *obj,
float speed = 1.0f);
260 virtual void AttackTarget(GameObject *obj, GameObject *target);
313 void Created(GameObject *obj);
314 void Enemy_Seen(GameObject *obj, GameObject *enemy);
317 virtual void Init(GameObject *obj);
318 virtual void loadSettings(GameObject *obj,
bool loadSecondaryFireSettings,
bool loadBuildingTargetSettings);
330 virtual bool IsValidTarget(GameObject* obj, GameObject *target);
339 int m_primary_prefRange, m_secondary_prefRange;
340 int retreatDamageAmount;
420 virtual void Enemy_Seen ( GameObject *obj, GameObject *enemy );
421 virtual void Timer_Expired( GameObject *obj,
int number );
422 virtual void Damaged(GameObject *obj, GameObject *damager,
float amount);
425 virtual void Init( GameObject *obj );
426 virtual void loadSettings( GameObject *obj,
bool loadSecondaryFireSettings,
bool loadBuildingTargetSettings );
429 virtual void AIStateChanged( GameObject* pObj,
bool bEnabled );
432 bool requiresPower, splashInfantry;
436 virtual bool checkTeam ( GameObject* obj, GameObject* target );
437 virtual bool checkRange ( GameObject* obj, GameObject* target,
bool primary );
438 virtual bool checkPowerState( GameObject* obj );
450 virtual void attackTarget ( GameObject* obj, GameObject* target,
bool primary );
456 virtual void attackLocation ( GameObject* obj, Vector3 location,
bool primary );
460 virtual void stopAttacking ( GameObject* obj );
551 virtual void Created ( GameObject* pSelf );
552 virtual void Timer_Expired ( GameObject* pSelf,
int number );
553 virtual void Custom ( GameObject* pSelf,
int type,
int param, GameObject* pSender );
554 virtual void Animation_Complete ( GameObject* pSelf,
const char* animation_name );
555 virtual void Destroyed( GameObject* pSelf );
559 static const unsigned char STATE_UNDEPLOYED = 0x00;
560 static const unsigned char STATE_DEPLOYING = 0x01;
561 static const unsigned char STATE_DEPLOYED = 0x02;
562 static const unsigned char STATE_UNDEPLOYING = 0x03;
575 virtual void attackTarget ( GameObject* pSelf, GameObject* pTarget,
bool primary );
578 virtual void attackLocation ( GameObject* pSelf, Vector3 location,
bool primary );
583 virtual void Deploy ( GameObject* pSelf );
587 virtual void Undeploy ( GameObject* pSelf );
602 void Enemy_Seen ( GameObject* pSelf, GameObject* pEnemy );
718 virtual void Timer_Expired ( GameObject* pSelf,
int number );
719 virtual void Animation_Complete ( GameObject* pSelf,
const char* animation_name );
720 virtual void Destroyed( GameObject* pSelf );
723 virtual void Init( GameObject* pSelf );
724 virtual void loadSettings( GameObject* pSelf,
bool loadSecondaryFireSettings,
bool loadBuildingTargetSettings );
756 virtual void attackTarget ( GameObject* pSelf, GameObject* pTarget,
bool primary );
760 virtual void attackLocation ( GameObject* pSelf, Vector3 location,
bool primary );
791 virtual void Animation_Complete(GameObject* pSelf,
const char* animation_name);
829 void Created ( GameObject* obj );
830 void Detach ( GameObject* obj );
832 GameObject* GetGameObject();
834 unsigned int GetType() {
return m_type; }
835 int GetTeam() {
return m_team; }
836 int GetRange() {
return m_range; }
837 const char* GetDebugTag() {
return m_debugTag; }
840 float GetPriority(GameObject* obj,
float distance_modifier);
856 static int CountUnitObjectives(
int team,
unsigned int objective_type, GameObject* obj,
float distance_modifier );
863 const static unsigned int TYPE_OFFENSIVE = 1;
864 const static unsigned int TYPE_DEFENSIVE = 2;
865 const static unsigned int TYPE_ENGINEERING = 3;
871 const static unsigned char UNITTYPE_SOLDIER = 0;
872 const static unsigned char UNITTYPE_LVEHICLE = 1;
873 const static unsigned char UNITTYPE_HVEHICLE = 2;
874 const static unsigned char UNITTYPE_AIRCRAFT = 3;
875 const static unsigned char UNITTYPE_MAX = UNITTYPE_AIRCRAFT;
876 const static unsigned char UNITTYPE_UNKNOWN = UCHAR_MAX;
887 int m_priority[UNITTYPE_MAX + 1];
890 const char* m_debugTag;
893 static DynamicVectorClass<dp88_AI_Objective *> Objectives;
Controller for looped animations using a subset of frames.
Definition LoopedAnimationController.h:31
GameObject Observer Base Class.
Definition ObserverImpClass.h:24
Chargeup Animation Observer.
Definition dp88_customAI.h:786
Charged Turret AI.
Definition dp88_customAI.h:715
virtual void attackTarget(GameObject *pSelf, GameObject *pTarget, bool primary)
Definition dp88_customAI.cpp:1367
LoopedAnimationController * m_pLoopedAnimCtrl
Definition dp88_customAI.h:748
unsigned int m_myObjId
My own GameObject ID, used by the observer callbacks.
Definition dp88_customAI.h:728
virtual void attackLocation(GameObject *pSelf, Vector3 location, bool primary)
Definition dp88_customAI.cpp:1379
virtual GameObject * GetAnimationObject(GameObject *pSelf)
Definition dp88_customAI.cpp:1452
bool m_bIsPreReloading
Definition dp88_customAI.h:739
bool m_bPowerState
Definition dp88_customAI.h:745
virtual void StartDischarging(GameObject *pSelf)
Definition dp88_customAI.cpp:1419
int m_chargeAnimObjId
Definition dp88_customAI.h:742
virtual void ApplyIdleAnimation(GameObject *pSelf)
Definition dp88_customAI.cpp:1461
bool m_bIsCharging
Definition dp88_customAI.h:731
dp88_AI_ChargedTurret_AnimationObserver * m_pAnimationObserver
Definition dp88_customAI.h:751
bool m_bIsDischarging
Definition dp88_customAI.h:734
virtual void StartCharging(GameObject *pSelf)
Definition dp88_customAI.cpp:1391
danpaul88's Custom AI Building Marker
Definition dp88_customAI.h:189
danpaul88's Custom AI Heavy Vehicle Marker
Definition dp88_customAI.h:201
danpaul88's Custom AI Repair Target Marker
Definition dp88_customAI.h:213
AI Objective.
Definition dp88_customAI.h:827
static dp88_AI_Objective * GetBestObjective(GameObject *obj, unsigned int objective_type, float distance_modifier, DynamicVectorClass< int > ignoredObjectives)
Definition dp88_customAI.cpp:1631
float GetPriority(GameObject *obj, float distance_modifier)
Definition dp88_customAI.cpp:1613
static int CountObjectives(int team, unsigned int objective_type)
Definition dp88_customAI.cpp:1659
static bool IsValidObjective(dp88_AI_Objective *pObjective)
Definition dp88_customAI.cpp:1693
static int CountUnitObjectives(int team, unsigned int objective_type, GameObject *obj, float distance_modifier)
Definition dp88_customAI.cpp:1676
unsigned char GetUnitType(GameObject *obj)
Definition dp88_customAI.cpp:1593
Offensive Tank AI.
Definition dp88_customAI.h:310
virtual int GetPreferredAttackRange(GameObject *obj, GameObject *target)
Definition dp88_customAI.cpp:692
virtual dp88_AI_Objective * ChooseNewObjective(GameObject *obj)
Definition dp88_customAI.cpp:715
virtual bool IsValidTarget(GameObject *obj, GameObject *target)
Definition dp88_customAI.cpp:699
Turret AI.
Definition dp88_customAI.h:417
Unit AI Base Class.
Definition dp88_customAI.h:231
virtual dp88_AI_Objective * ChooseNewObjective(GameObject *obj)=0
bool m_bMovingToObjective
Definition dp88_customAI.h:291
void ResetAllActions(GameObject *obj)
Definition dp88_customAI.cpp:508
virtual int GetPreferredAttackRange(GameObject *obj, GameObject *target)=0
virtual bool IsValidTarget(GameObject *obj, GameObject *target)=0
virtual bool ShouldPursueTarget(GameObject *obj, GameObject *target)
Definition dp88_customAI.cpp:610
bool m_bMovingToTarget
Definition dp88_customAI.h:294
danpaul88's Custom AI Heavy Vehicle Marker
Definition dp88_customAI.h:176
danpaul88's Custom AI Core
Definition dp88_customAI.h:59
virtual void ResetAllActions(GameObject *obj)
Definition dp88_customAI.cpp:85