diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/CreatureAIFactory.h | 5 | ||||
-rw-r--r-- | src/server/game/AI/CreatureAISelector.cpp | 30 |
2 files changed, 19 insertions, 16 deletions
diff --git a/src/server/game/AI/CreatureAIFactory.h b/src/server/game/AI/CreatureAIFactory.h index 4473d3e9cd5..4e11630259b 100644 --- a/src/server/game/AI/CreatureAIFactory.h +++ b/src/server/game/AI/CreatureAIFactory.h @@ -50,6 +50,8 @@ CreatureAIFactory<REAL_AI>::Create(void* data) const typedef FactoryHolder<CreatureAI> CreatureAICreator; typedef FactoryHolder<CreatureAI>::FactoryHolderRegistry CreatureAIRegistry; +#define sCreatureAIRegistry CreatureAIRegistry::instance() + //GO struct SelectableGameObjectAI : public FactoryHolder<GameObjectAI>, public Permissible<GameObject> { @@ -76,4 +78,7 @@ GameObjectAIFactory<REAL_GO_AI>::Create(void* data) const typedef FactoryHolder<GameObjectAI> GameObjectAICreator; typedef FactoryHolder<GameObjectAI>::FactoryHolderRegistry GameObjectAIRegistry; + +#define sGameObjectAIRegistry GameObjectAIRegistry::instance() + #endif diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index ddb5ba3508b..495e6dcee31 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -30,10 +30,9 @@ namespace FactorySelector CreatureAI* selectAI(Creature* creature) { const CreatureAICreator* ai_factory = NULL; - CreatureAIRegistry& ai_registry(*CreatureAIRegistry::instance()); if (creature->IsPet()) - ai_factory = ai_registry.GetRegistryItem("PetAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("PetAI"); //scriptname in db if (!ai_factory) @@ -43,32 +42,32 @@ namespace FactorySelector // AIname in db std::string ainame=creature->GetAIName(); if (!ai_factory && !ainame.empty()) - ai_factory = ai_registry.GetRegistryItem(ainame); + ai_factory = sCreatureAIRegistry->GetRegistryItem(ainame); // select by NPC flags if (!ai_factory) { if (creature->IsVehicle()) - ai_factory = ai_registry.GetRegistryItem("VehicleAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("VehicleAI"); else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER) - ai_factory = ai_registry.GetRegistryItem("PetAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("PetAI"); else if (creature->HasFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK)) - ai_factory = ai_registry.GetRegistryItem("NullCreatureAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("NullCreatureAI"); else if (creature->IsGuard()) - ai_factory = ai_registry.GetRegistryItem("GuardAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("GuardAI"); else if (creature->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN)) - ai_factory = ai_registry.GetRegistryItem("PetAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("PetAI"); else if (creature->IsTotem()) - ai_factory = ai_registry.GetRegistryItem("TotemAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("TotemAI"); else if (creature->IsTrigger()) { if (creature->m_spells[0]) - ai_factory = ai_registry.GetRegistryItem("TriggerAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("TriggerAI"); else - ai_factory = ai_registry.GetRegistryItem("NullCreatureAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("NullCreatureAI"); } else if (creature->IsCritter() && !creature->HasUnitTypeMask(UNIT_MASK_GUARDIAN)) - ai_factory = ai_registry.GetRegistryItem("CritterAI"); + ai_factory = sCreatureAIRegistry->GetRegistryItem("CritterAI"); } // select by permit check @@ -76,7 +75,7 @@ namespace FactorySelector { int best_val = -1; typedef CreatureAIRegistry::RegistryMapType RMT; - RMT const& l = ai_registry.GetRegisteredItems(); + RMT const& l = sCreatureAIRegistry->GetRegisteredItems(); for (RMT::const_iterator iter = l.begin(); iter != l.end(); ++iter) { const CreatureAICreator* factory = iter->second; @@ -128,14 +127,13 @@ namespace FactorySelector GameObjectAI* SelectGameObjectAI(GameObject* go) { - const GameObjectAICreator* ai_factory = NULL; - GameObjectAIRegistry& ai_registry(*GameObjectAIRegistry::instance()); + GameObjectAICreator const* ai_factory = NULL; // scriptname in db if (GameObjectAI* scriptedAI = sScriptMgr->GetGameObjectAI(go)) return scriptedAI; - ai_factory = ai_registry.GetRegistryItem(go->GetAIName()); + ai_factory = sGameObjectAIRegistry->GetRegistryItem(go->GetAIName()); //future goAI types go here |