*AI structure update.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-01-30 18:10:05 -06:00
parent 03234a0657
commit 8fee06f041
266 changed files with 460 additions and 598 deletions
+19 -17
View File
@@ -29,6 +29,7 @@
class Unit;
class Creature;
class Player;
struct SpellEntry;
#define TIME_INTERVAL_LOOK 5000
@@ -71,34 +72,41 @@ enum SelectAggroTarget
class TRINITY_DLL_SPEC UnitAI
{
public:
UnitAI(Unit *u) : me(u) {}
virtual void UpdateAI(const uint32 diff) = 0;
protected:
Unit *me;
public:
UnitAI(Unit *u) : me(u) {}
virtual void AttackStart(Unit *);
virtual void UpdateAI(const uint32 diff) = 0;
};
class TRINITY_DLL_SPEC SimpleCharmedAI : public UnitAI
class TRINITY_DLL_SPEC PlayerAI : public UnitAI
{
protected:
Player *me;
public:
PlayerAI(Player *p) : UnitAI((Unit*)p), me(p) {}
};
class TRINITY_DLL_SPEC SimpleCharmedAI : public PlayerAI
{
public:
virtual void UpdateAI(const uint32 diff);
void UpdateAI(const uint32 diff);
};
class TRINITY_DLL_SPEC CreatureAI : public UnitAI
{
protected:
Creature *me;
bool UpdateVictim();
public:
CreatureAI() : UnitAI(NULL), me(NULL) {}
CreatureAI(Creature *c) : UnitAI((Unit*)c), me(c) {}
virtual ~CreatureAI();
virtual ~CreatureAI() {}
// Called if IsVisible(Unit *who) is true at each *who move
virtual void MoveInLineOfSight(Unit *) = 0;
// Called at each attack of m_creature by any victim
virtual void AttackStart(Unit *) = 0;
virtual void MoveInLineOfSight(Unit *);
// Called at stopping attack by any attacker
virtual void EnterEvadeMode();
@@ -106,12 +114,6 @@ class TRINITY_DLL_SPEC CreatureAI : public UnitAI
// Called at any Damage from any attacker (before damage apply)
virtual void DamageTaken(Unit *done_by, uint32 & /*damage*/) {}
// Is unit visible for MoveInLineOfSight
virtual bool IsVisible(Unit *) const = 0;
// Called at World update tick
virtual void UpdateAI(const uint32 diff ) = 0;
// Called when the creature is killed
virtual void JustDied(Unit *) {}