aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNeo2003 <none@none>2008-10-05 11:56:30 -0500
committerNeo2003 <none@none>2008-10-05 11:56:30 -0500
commit0c3db399c565401dc1f771f14370421c320c555b (patch)
tree52abe002e5a763627495ac6da3848ce3e49a96ae /src
parent1fc73ff41b0b113ee0cbc072f8ed81a2c572924c (diff)
[svn] * Moved Script grid_searchers to core
* Moved an enum from sc_creature.h to CreatureAI.h --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/Makefile.am2
-rw-r--r--src/bindings/scripts/VC71/71ScriptDev2.vcproj3
-rw-r--r--src/bindings/scripts/VC80/80ScriptDev2.vcproj4
-rw-r--r--src/bindings/scripts/VC90/90ScriptDev2.vcproj4
-rw-r--r--src/bindings/scripts/include/precompiled.h7
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp18
-rw-r--r--src/bindings/scripts/include/sc_creature.h33
-rw-r--r--src/bindings/scripts/include/sc_grid_searchers.h131
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp7
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp12
-rw-r--r--src/game/CreatureAI.h33
-rw-r--r--src/game/GridNotifiers.h129
12 files changed, 187 insertions, 196 deletions
diff --git a/src/bindings/scripts/Makefile.am b/src/bindings/scripts/Makefile.am
index 22f4725e2f6..1507899259b 100644
--- a/src/bindings/scripts/Makefile.am
+++ b/src/bindings/scripts/Makefile.am
@@ -40,7 +40,6 @@ include/precompiled.h \
include/sc_creature.cpp \
include/sc_creature.h \
include/sc_gossip.h \
-include/sc_grid_searchers.h \
include/sc_instance.h \
include/sc_item.h \
scripts/areatrigger/areatrigger_scripts.cpp \
@@ -419,3 +418,4 @@ install-data-hook:
fi; \
done
+
diff --git a/src/bindings/scripts/VC71/71ScriptDev2.vcproj b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
index 02269074eba..38368d48de5 100644
--- a/src/bindings/scripts/VC71/71ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
@@ -1568,9 +1568,6 @@
RelativePath="..\include\sc_gossip.h">
</File>
<File
- RelativePath="..\include\sc_grid_searchers.h">
- </File>
- <File
RelativePath="..\include\sc_instance.h">
</File>
<File
diff --git a/src/bindings/scripts/VC80/80ScriptDev2.vcproj b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
index f850a865888..d23e8dcbc7d 100644
--- a/src/bindings/scripts/VC80/80ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
@@ -2309,10 +2309,6 @@
>
</File>
<File
- RelativePath="..\include\sc_grid_searchers.h"
- >
- </File>
- <File
RelativePath="..\include\sc_instance.h"
>
</File>
diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
index b9800effbe5..0492d923dd5 100644
--- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
@@ -2307,10 +2307,6 @@
>
</File>
<File
- RelativePath="..\include\sc_grid_searchers.h"
- >
- </File>
- <File
RelativePath="..\include\sc_instance.h"
>
</File>
diff --git a/src/bindings/scripts/include/precompiled.h b/src/bindings/scripts/include/precompiled.h
index dda4d672f38..275947e0e48 100644
--- a/src/bindings/scripts/include/precompiled.h
+++ b/src/bindings/scripts/include/precompiled.h
@@ -6,9 +6,14 @@
#define SC_PRECOMPILED_H
#include "../ScriptMgr.h"
+#include "Cell.h"
+#include "CellImpl.h"
+#include "GridNotifiers.h"
+#include "GridNotifiersImpl.h"
+#include "Unit.h"
+#include "GameObject.h"
#include "sc_creature.h"
#include "sc_gossip.h"
-#include "sc_grid_searchers.h"
#include "sc_instance.h"
#ifdef WIN32
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index 9910eafc5b2..4c9f7a385a2 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -513,14 +513,14 @@ Unit* ScriptedAI::DoSelectLowestHpFriendly(float range, uint32 MinHPDiff)
Unit* pUnit = NULL;
- MostHPMissingInRange u_check(m_creature, range, MinHPDiff);
- MaNGOS::UnitLastSearcher<MostHPMissingInRange> searcher(pUnit, u_check);
+ MaNGOS::MostHPMissingInRange u_check(m_creature, range, MinHPDiff);
+ MaNGOS::UnitLastSearcher<MaNGOS::MostHPMissingInRange> searcher(pUnit, u_check);
/*
typedef TYPELIST_4(GameObject, Creature*except pets*, DynamicObject, Corpse*Bones*) AllGridObjectTypes;
This means that if we only search grid then we cannot possibly return pets or players so this is safe
*/
- TypeContainerVisitor<MaNGOS::UnitLastSearcher<MostHPMissingInRange>, GridTypeMapContainer > grid_unit_searcher(searcher);
+ TypeContainerVisitor<MaNGOS::UnitLastSearcher<MaNGOS::MostHPMissingInRange>, GridTypeMapContainer > grid_unit_searcher(searcher);
CellLock<GridReadGuard> cell_lock(cell, p);
cell_lock->Visit(cell_lock, grid_unit_searcher, *(m_creature->GetMap()));
@@ -536,10 +536,10 @@ std::list<Creature*> ScriptedAI::DoFindFriendlyCC(float range)
std::list<Creature*> pList;
- FriendlyCCedInRange u_check(m_creature, range);
- MaNGOS::CreatureListSearcher<FriendlyCCedInRange> searcher(pList, u_check);
+ MaNGOS::FriendlyCCedInRange u_check(m_creature, range);
+ MaNGOS::CreatureListSearcher<MaNGOS::FriendlyCCedInRange> searcher(pList, u_check);
- TypeContainerVisitor<MaNGOS::CreatureListSearcher<FriendlyCCedInRange>, GridTypeMapContainer > grid_creature_searcher(searcher);
+ TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::FriendlyCCedInRange>, GridTypeMapContainer > grid_creature_searcher(searcher);
CellLock<GridReadGuard> cell_lock(cell, p);
cell_lock->Visit(cell_lock, grid_creature_searcher, *(m_creature->GetMap()));
@@ -556,10 +556,10 @@ std::list<Creature*> ScriptedAI::DoFindFriendlyMissingBuff(float range, uint32 s
std::list<Creature*> pList;
- FriendlyMissingBuffInRange u_check(m_creature, range, spellid);
- MaNGOS::CreatureListSearcher<FriendlyMissingBuffInRange> searcher(pList, u_check);
+ MaNGOS::FriendlyMissingBuffInRange u_check(m_creature, range, spellid);
+ MaNGOS::CreatureListSearcher<MaNGOS::FriendlyMissingBuffInRange> searcher(pList, u_check);
- TypeContainerVisitor<MaNGOS::CreatureListSearcher<FriendlyMissingBuffInRange>, GridTypeMapContainer > grid_creature_searcher(searcher);
+ TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::FriendlyMissingBuffInRange>, GridTypeMapContainer > grid_creature_searcher(searcher);
CellLock<GridReadGuard> cell_lock(cell, p);
cell_lock->Visit(cell_lock, grid_creature_searcher, *(m_creature->GetMap()));
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h
index 13d57a6e78b..9433a6b7331 100644
--- a/src/bindings/scripts/include/sc_creature.h
+++ b/src/bindings/scripts/include/sc_creature.h
@@ -8,39 +8,6 @@
#include "CreatureAI.h"
#include "Creature.h"
-//Spell targets used by SelectSpell
-enum SelectTarget
-{
- SELECT_TARGET_DONTCARE = 0, //All target types allowed
-
- SELECT_TARGET_SELF, //Only Self casting
-
- SELECT_TARGET_SINGLE_ENEMY, //Only Single Enemy
- SELECT_TARGET_AOE_ENEMY, //Only AoE Enemy
- SELECT_TARGET_ANY_ENEMY, //AoE or Single Enemy
-
- SELECT_TARGET_SINGLE_FRIEND, //Only Single Friend
- SELECT_TARGET_AOE_FRIEND, //Only AoE Friend
- SELECT_TARGET_ANY_FRIEND, //AoE or Single Friend
-};
-
-//Spell Effects used by SelectSpell
-enum SelectEffect
-{
- SELECT_EFFECT_DONTCARE = 0, //All spell effects allowed
- SELECT_EFFECT_DAMAGE, //Spell does damage
- SELECT_EFFECT_HEALING, //Spell does healing
- SELECT_EFFECT_AURA, //Spell applies an aura
-};
-
-//Selection method used by SelectTarget
-enum SelectAggroTarget
-{
- SELECT_TARGET_RANDOM = 0, //Just selects a random target
- SELECT_TARGET_TOPAGGRO, //Selects targes from top aggro to bottom
- SELECT_TARGET_BOTTOMAGGRO, //Selects targets from bottom aggro to top
-};
-
struct MANGOS_DLL_DECL ScriptedAI : public CreatureAI
{
ScriptedAI(Creature* creature) : m_creature(creature), InCombat(false) {}
diff --git a/src/bindings/scripts/include/sc_grid_searchers.h b/src/bindings/scripts/include/sc_grid_searchers.h
deleted file mode 100644
index 750f1d42fbe..00000000000
--- a/src/bindings/scripts/include/sc_grid_searchers.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
-* This program is free software licensed under GPL version 2
-* Please see the included DOCS/LICENSE.TXT for more information */
-
-#ifndef SC_GRIDSEARCH_H
-#define SC_GRIDSEARCH_H
-
-#include "Unit.h"
-#include "GameObject.h"
-
-#include "Cell.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-
-//Used in:
-//sc_creature.cpp - DoSelectLowestHpFriendly()
-class MostHPMissingInRange
-{
-public:
- MostHPMissingInRange(Unit const* obj, float range, uint32 hp) : i_obj(obj), i_range(range), i_hp(hp) {}
- bool operator()(Unit* u)
- {
- if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() > i_hp)
- {
- i_hp = u->GetMaxHealth() - u->GetHealth();
- return true;
- }
- return false;
- }
-private:
- Unit const* i_obj;
- float i_range;
- uint32 i_hp;
-};
-
-//Used in:
-//sc_creature.cpp - DoFindFriendlyCC()
-class FriendlyCCedInRange
-{
-public:
- FriendlyCCedInRange(Unit const* obj, float range) : i_obj(obj), i_range(range) {}
- bool operator()(Unit* u)
- {
- if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
- (u->isFeared() || u->isCharmed() || u->isFrozen() || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_CONFUSED)))
- {
- return true;
- }
- return false;
- }
-private:
- Unit const* i_obj;
- float i_range;
-};
-
-//Used in:
-//sc_creature.cpp - DoFindFriendlyMissingBuff()
-class FriendlyMissingBuffInRange
-{
-public:
- FriendlyMissingBuffInRange(Unit const* obj, float range, uint32 spellid) : i_obj(obj), i_range(range), i_spell(spellid) {}
- bool operator()(Unit* u)
- {
- if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
- !(u->HasAura(i_spell, 0) || u->HasAura(i_spell, 1) || u->HasAura(i_spell, 2)))
- {
- return true;
- }
- return false;
- }
-private:
- Unit const* i_obj;
- float i_range;
- uint32 i_spell;
-};
-
-//Used in:
-//hyjalAI.cpp
-class AllFriendlyCreaturesInGrid
-{
-public:
- AllFriendlyCreaturesInGrid(Unit const* obj) : pUnit(obj) {}
- bool operator() (Unit* u)
- {
- if(u->isAlive() && u->GetVisibility() == VISIBILITY_ON && u->IsFriendlyTo(pUnit))
- return true;
-
- return false;
- }
-
-private:
- Unit const* pUnit;
-};
-
-//Used in:
-//hyjalAI.cpp
-class AllGameObjectsWithEntryInGrid
-{
-public:
- AllGameObjectsWithEntryInGrid(uint32 ent) : entry(ent) {}
- bool operator() (GameObject* g)
- {
- if(g->GetEntry() == entry)
- return true;
-
- return false;
- }
-private:
- uint32 entry;
-};
-
-class AllCreaturesOfEntryInRange
-{
-public:
- AllCreaturesOfEntryInRange(Unit const* obj, uint32 ent, float ran) : pUnit(obj), entry(ent), range(ran) {}
- bool operator() (Unit* u)
- {
- if(u->GetEntry() == entry && pUnit->IsWithinDistInMap(u, range))
- return true;
-
- return false;
- }
-
-private:
- Unit const* pUnit;
- uint32 entry;
- float range;
-};
-
-#endif
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp
index 803c7f7863d..7e40cd60174 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp
@@ -23,7 +23,6 @@ EndScriptData */
#include "precompiled.h"
#include "def_black_temple.h"
-#include "sc_grid_searchers.h"
struct Location
{
@@ -327,9 +326,9 @@ struct MANGOS_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
std::list<Creature*> ChannelerList;
- AllCreaturesOfEntryInRange check(m_creature, CREATURE_CHANNELER, 50);
- MaNGOS::CreatureListSearcher<AllCreaturesOfEntryInRange> searcher(ChannelerList, check);
- TypeContainerVisitor<MaNGOS::CreatureListSearcher<AllCreaturesOfEntryInRange>, GridTypeMapContainer> visitor(searcher);
+ MaNGOS::AllCreaturesOfEntryInRange check(m_creature, CREATURE_CHANNELER, 50);
+ MaNGOS::CreatureListSearcher<MaNGOS::AllCreaturesOfEntryInRange> searcher(ChannelerList, check);
+ TypeContainerVisitor<MaNGOS::CreatureListSearcher<MaNGOS::AllCreaturesOfEntryInRange>, GridTypeMapContainer> visitor(searcher);
CellLock<GridReadGuard> cell_lock(cell, pair);
cell_lock->Visit(cell_lock, visitor, *(m_creature->GetMap()));
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
index d1db61148e1..d4a0522f704 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
@@ -316,18 +316,18 @@ void hyjalAI::Retreat()
// First get all creatures.
std::list<Creature*> creatures;
- AllFriendlyCreaturesInGrid creature_check(m_creature);
- MaNGOS::CreatureListSearcher<AllFriendlyCreaturesInGrid> creature_searcher(creatures, creature_check);
+ MaNGOS::AllFriendlyCreaturesInGrid creature_check(m_creature);
+ MaNGOS::CreatureListSearcher<MaNGOS::AllFriendlyCreaturesInGrid> creature_searcher(creatures, creature_check);
TypeContainerVisitor
- <MaNGOS::CreatureListSearcher<AllFriendlyCreaturesInGrid>,
+ <MaNGOS::CreatureListSearcher<MaNGOS::AllFriendlyCreaturesInGrid>,
GridTypeMapContainer> creature_visitor(creature_searcher);
// Then get all Ancient Gem Veins. NOTE: Grid Search will only be able to find those in the grid.
std::list<GameObject*> goList;
- AllGameObjectsWithEntryInGrid go_check(185557);
- MaNGOS::GameObjectListSearcher<AllGameObjectsWithEntryInGrid> go_search(goList, go_check);
+ MaNGOS::AllGameObjectsWithEntryInGrid go_check(185557);
+ MaNGOS::GameObjectListSearcher<MaNGOS::AllGameObjectsWithEntryInGrid> go_search(goList, go_check);
TypeContainerVisitor
- <MaNGOS::GameObjectListSearcher<AllGameObjectsWithEntryInGrid>, GridTypeMapContainer> go_visit(go_search);
+ <MaNGOS::GameObjectListSearcher<MaNGOS::AllGameObjectsWithEntryInGrid>, GridTypeMapContainer> go_visit(go_search);
CellLock<GridReadGuard> cell_lock(cell, pair);
// Get Creatures
diff --git a/src/game/CreatureAI.h b/src/game/CreatureAI.h
index 185fb571bb2..540a2e408b7 100644
--- a/src/game/CreatureAI.h
+++ b/src/game/CreatureAI.h
@@ -32,6 +32,39 @@ struct SpellEntry;
#define TIME_INTERVAL_LOOK 5000
#define VISIBILITY_RANGE 10000
+//Spell targets used by SelectSpell
+enum SelectTarget
+{
+ SELECT_TARGET_DONTCARE = 0, //All target types allowed
+
+ SELECT_TARGET_SELF, //Only Self casting
+
+ SELECT_TARGET_SINGLE_ENEMY, //Only Single Enemy
+ SELECT_TARGET_AOE_ENEMY, //Only AoE Enemy
+ SELECT_TARGET_ANY_ENEMY, //AoE or Single Enemy
+
+ SELECT_TARGET_SINGLE_FRIEND, //Only Single Friend
+ SELECT_TARGET_AOE_FRIEND, //Only AoE Friend
+ SELECT_TARGET_ANY_FRIEND, //AoE or Single Friend
+};
+
+//Spell Effects used by SelectSpell
+enum SelectEffect
+{
+ SELECT_EFFECT_DONTCARE = 0, //All spell effects allowed
+ SELECT_EFFECT_DAMAGE, //Spell does damage
+ SELECT_EFFECT_HEALING, //Spell does healing
+ SELECT_EFFECT_AURA, //Spell applies an aura
+};
+
+//Selection method used by SelectTarget
+enum SelectAggroTarget
+{
+ SELECT_TARGET_RANDOM = 0, //Just selects a random target
+ SELECT_TARGET_TOPAGGRO, //Selects targes from top aggro to bottom
+ SELECT_TARGET_BOTTOMAGGRO, //Selects targets from bottom aggro to top
+};
+
class MANGOS_DLL_SPEC CreatureAI
{
public:
diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h
index 98e25857638..70d5d7c8928 100644
--- a/src/game/GridNotifiers.h
+++ b/src/game/GridNotifiers.h
@@ -709,6 +709,31 @@ namespace MaNGOS
Unit* const i_funit;
};
+ class NearestAssistCreatureInCreatureRangeCheck
+ {
+ public:
+ NearestAssistCreatureInCreatureRangeCheck(Creature* obj,Unit* enemy, float range)
+ : i_obj(obj), i_enemy(enemy), i_range(range) {}
+
+ bool operator()(Creature* u)
+ {
+ if(u->getFaction() == i_obj->getFaction() && !u->isInCombat() && !u->GetCharmerOrOwnerGUID() && u->IsHostileTo(i_enemy) && u->isAlive()&& i_obj->IsWithinDistInMap(u, i_range) && i_obj->IsWithinLOSInMap(u))
+ {
+ i_range = i_obj->GetDistance(u); // use found unit range as new range limit for next check
+ return true;
+ }
+ return false;
+ }
+ float GetLastRange() const { return i_range; }
+ private:
+ Creature* const i_obj;
+ Unit* const i_enemy;
+ float i_range;
+
+ // prevent clone this object
+ NearestAssistCreatureInCreatureRangeCheck(NearestAssistCreatureInCreatureRangeCheck const&);
+ };
+
class AnyAssistCreatureInRangeCheck
{
public:
@@ -800,6 +825,110 @@ namespace MaNGOS
float i_range;
};
+ // Searchers used by ScriptedAI
+ class MostHPMissingInRange
+ {
+ public:
+ MostHPMissingInRange(Unit const* obj, float range, uint32 hp) : i_obj(obj), i_range(range), i_hp(hp) {}
+ bool operator()(Unit* u)
+ {
+ if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() > i_hp)
+ {
+ i_hp = u->GetMaxHealth() - u->GetHealth();
+ return true;
+ }
+ return false;
+ }
+ private:
+ Unit const* i_obj;
+ float i_range;
+ uint32 i_hp;
+ };
+
+ class FriendlyCCedInRange
+ {
+ public:
+ FriendlyCCedInRange(Unit const* obj, float range) : i_obj(obj), i_range(range) {}
+ bool operator()(Unit* u)
+ {
+ if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
+ (u->isFeared() || u->isCharmed() || u->isFrozen() || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_STUNDED) || u->hasUnitState(UNIT_STAT_CONFUSED)))
+ {
+ return true;
+ }
+ return false;
+ }
+ private:
+ Unit const* i_obj;
+ float i_range;
+ };
+
+ class FriendlyMissingBuffInRange
+ {
+ public:
+ FriendlyMissingBuffInRange(Unit const* obj, float range, uint32 spellid) : i_obj(obj), i_range(range), i_spell(spellid) {}
+ bool operator()(Unit* u)
+ {
+ if(u->isAlive() && u->isInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
+ !(u->HasAura(i_spell, 0) || u->HasAura(i_spell, 1) || u->HasAura(i_spell, 2)))
+ {
+ return true;
+ }
+ return false;
+ }
+ private:
+ Unit const* i_obj;
+ float i_range;
+ uint32 i_spell;
+ };
+
+ class AllFriendlyCreaturesInGrid
+ {
+ public:
+ AllFriendlyCreaturesInGrid(Unit const* obj) : pUnit(obj) {}
+ bool operator() (Unit* u)
+ {
+ if(u->isAlive() && u->GetVisibility() == VISIBILITY_ON && u->IsFriendlyTo(pUnit))
+ return true;
+
+ return false;
+ }
+ private:
+ Unit const* pUnit;
+ };
+
+ class AllGameObjectsWithEntryInGrid
+ {
+ public:
+ AllGameObjectsWithEntryInGrid(uint32 ent) : entry(ent) {}
+ bool operator() (GameObject* g)
+ {
+ if(g->GetEntry() == entry)
+ return true;
+
+ return false;
+ }
+ private:
+ uint32 entry;
+ };
+
+ class AllCreaturesOfEntryInRange
+ {
+ public:
+ AllCreaturesOfEntryInRange(Unit const* obj, uint32 ent, float ran) : pUnit(obj), entry(ent), range(ran) {}
+ bool operator() (Unit* u)
+ {
+ if(u->GetEntry() == entry && pUnit->IsWithinDistInMap(u, range))
+ return true;
+
+ return false;
+ }
+ private:
+ Unit const* pUnit;
+ uint32 entry;
+ float range;
+ };
+
#ifndef WIN32
template<> void PlayerRelocationNotifier::Visit<Creature>(CreatureMapType &);
template<> void PlayerRelocationNotifier::Visit<Player>(PlayerMapType &);