From 21556667c16b282b77934bddee3d86f0c632ef31 Mon Sep 17 00:00:00 2001 From: ariel- Date: Wed, 17 Jan 2018 02:17:49 -0300 Subject: Core/Globals: throw some RAII into ObjectMgr, and load templates into vectors Ref #14274 (cherry picked from commit b64c5043140dc7b7908e259e441de16cc0261320) --- src/server/game/Globals/ObjectMgr.h | 48 ++++++++++++++----------------------- 1 file changed, 18 insertions(+), 30 deletions(-) (limited to 'src/server/game/Globals/ObjectMgr.h') diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index c3d99b2369d..f2911b515de 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -495,7 +495,7 @@ struct TrinityString }; typedef std::map LinkedRespawnContainer; -typedef std::unordered_map CreatureTemplateContainer; +typedef std::vector> CreatureTemplateContainer; typedef std::unordered_map CreatureTemplateAddonContainer; typedef std::unordered_map CreatureDataContainer; typedef std::unordered_map CreatureAddonContainer; @@ -504,7 +504,7 @@ typedef std::unordered_map EquipmentInfoContainerInternal; typedef std::unordered_map EquipmentInfoContainer; typedef std::unordered_map CreatureModelContainer; typedef std::unordered_map> CreatureQuestItemMap; -typedef std::unordered_map GameObjectTemplateContainer; +typedef std::vector> GameObjectTemplateContainer; typedef std::unordered_map GameObjectTemplateAddonContainer; typedef std::unordered_map GameObjectDataContainer; typedef std::unordered_map GameObjectAddonContainer; @@ -515,7 +515,7 @@ typedef std::unordered_map> Instance typedef std::map> TempSummonDataContainer; typedef std::unordered_map CreatureLocaleContainer; typedef std::unordered_map GameObjectLocaleContainer; -typedef std::unordered_map ItemTemplateContainer; +typedef std::vector> ItemTemplateContainer; typedef std::unordered_map QuestTemplateLocaleContainer; typedef std::unordered_map QuestObjectivesLocaleContainer; typedef std::unordered_map QuestOfferRewardLocaleContainer; @@ -611,7 +611,7 @@ struct PlayerInfo PlayerCreateInfoSkills skills; //[level-1] 0..MaxPlayerLevel-1 - PlayerLevelInfo* levelInfo = nullptr; + std::unique_ptr levelInfo; }; struct PetLevelInfo @@ -935,7 +935,7 @@ struct DungeonEncounter uint32 lastEncounterDungeon; }; -typedef std::list DungeonEncounterList; +typedef std::vector> DungeonEncounterList; typedef std::unordered_map DungeonEncounterContainer; struct TerrainSwapInfo @@ -1010,14 +1010,14 @@ class TC_GAME_API ObjectMgr static ObjectMgr* instance(); - typedef std::unordered_map QuestMap; + typedef std::vector> QuestContainer; typedef std::unordered_map QuestObjectivesByIdContainer; typedef std::unordered_map AreaTriggerContainer; typedef std::unordered_map AreaTriggerScriptContainer; - typedef std::unordered_map AccessRequirementContainer; + typedef std::unordered_map> AccessRequirementContainer; typedef std::unordered_map RepRewardRateContainer; typedef std::unordered_map RepOnKillContainer; @@ -1030,14 +1030,14 @@ class TC_GAME_API ObjectMgr typedef std::map CharacterConversionMap; GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const; - GameObjectTemplateContainer const* GetGameObjectTemplates() const { return &_gameObjectTemplateStore; } - int LoadReferenceVendor(int32 vendor, int32 item, std::set *skip_vendors); + GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; } + uint32 LoadReferenceVendor(int32 vendor, int32 item_id, std::set *skip_vendors); void LoadGameObjectTemplate(); void LoadGameObjectTemplateAddons(); CreatureTemplate const* GetCreatureTemplate(uint32 entry) const; - CreatureTemplateContainer const* GetCreatureTemplates() const { return &_creatureTemplateStore; } + CreatureTemplateContainer const& GetCreatureTemplates() const { return _creatureTemplateStore; } CreatureModelInfo const* GetCreatureModelInfo(uint32 modelId) const; CreatureModelInfo const* GetCreatureModelRandomGender(CreatureModel* mode, CreatureTemplate const* creatureTemplate) const; static CreatureModel const* ChooseDisplayId(CreatureTemplate const* cinfo, CreatureData const* data = nullptr); @@ -1048,7 +1048,7 @@ class TC_GAME_API ObjectMgr GameObjectTemplateAddon const* GetGameObjectTemplateAddon(uint32 entry) const; CreatureAddon const* GetCreatureTemplateAddon(uint32 entry) const; ItemTemplate const* GetItemTemplate(uint32 entry) const; - ItemTemplateContainer const* GetItemTemplateStore() const { return &_itemTemplateStore; } + ItemTemplateContainer const& GetItemTemplateStore() const { return _itemTemplateStore; } InstanceTemplate const* GetInstanceTemplate(uint32 mapId) const; @@ -1083,13 +1083,9 @@ class TC_GAME_API ObjectMgr void GetTaxiPath(uint32 source, uint32 destination, std::vector& path, uint32& cost); uint32 GetTaxiMountDisplayId(uint32 id, uint32 team, bool allowed_alt_team = false); - Quest const* GetQuestTemplate(uint32 quest_id) const - { - QuestMap::const_iterator itr = _questTemplates.find(quest_id); - return itr != _questTemplates.end() ? itr->second : nullptr; - } + Quest const* GetQuestTemplate(uint32 quest_id) const; - QuestMap const& GetQuestTemplates() const { return _questTemplates; } + QuestContainer const& GetQuestTemplates() const { return _questTemplates; } std::vector const& GetQuestTemplatesAutoPush() const { return _questTemplatesAutoPush; } QuestObjective const* GetQuestObjective(uint32 questObjectiveId) const @@ -1174,13 +1170,7 @@ class TC_GAME_API ObjectMgr return nullptr; } - QuestPOIData const* GetQuestPOIData(int32 QuestID) - { - QuestPOIContainer::const_iterator itr = _questPOIStore.find(QuestID); - if (itr != _questPOIStore.end()) - return &itr->second; - return nullptr; - } + QuestPOIData const* GetQuestPOIData(int32 QuestID); VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const; VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const; @@ -1692,8 +1682,7 @@ class TC_GAME_API ObjectMgr } std::map> _guidGenerators; - - QuestMap _questTemplates; + QuestContainer _questTemplates; std::vector _questTemplatesAutoPush; QuestObjectivesByIdContainer _questObjectives; @@ -1775,13 +1764,12 @@ class TC_GAME_API ObjectMgr CreatureBaseStatsContainer _creatureBaseStatsStore; - typedef std::map PetLevelInfoContainer; - // PetLevelInfoContainer[creature_id][level] - PetLevelInfoContainer _petInfoStore; // [creature_id][level] + typedef std::unordered_map> PetLevelInfoContainer; + PetLevelInfoContainer _petInfoStore; void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const; - PlayerInfo* _playerInfo[MAX_RACES][MAX_CLASSES]; + std::unique_ptr _playerInfo[MAX_RACES][MAX_CLASSES]; typedef std::vector PlayerXPperLevel; // [level] PlayerXPperLevel _playerXPperLevel; -- cgit v1.2.3