diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-01-17 02:17:49 -0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-06-16 01:00:11 +0200 |
| commit | 21556667c16b282b77934bddee3d86f0c632ef31 (patch) | |
| tree | 4669148763e4d450f12a46a7f2c8a7a2f6913a87 /src/server/game/Globals/ObjectMgr.h | |
| parent | 5b5bc4c5c7cad020bd831185057451b674c234d8 (diff) | |
Core/Globals: throw some RAII into ObjectMgr, and load templates into vectors
Ref #14274
(cherry picked from commit b64c5043140dc7b7908e259e441de16cc0261320)
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.h')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 48 |
1 files changed, 18 insertions, 30 deletions
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<ObjectGuid, ObjectGuid> LinkedRespawnContainer; -typedef std::unordered_map<uint32, CreatureTemplate> CreatureTemplateContainer; +typedef std::vector<std::unique_ptr<CreatureTemplate>> CreatureTemplateContainer; typedef std::unordered_map<uint32, CreatureAddon> CreatureTemplateAddonContainer; typedef std::unordered_map<ObjectGuid::LowType, CreatureData> CreatureDataContainer; typedef std::unordered_map<ObjectGuid::LowType, CreatureAddon> CreatureAddonContainer; @@ -504,7 +504,7 @@ typedef std::unordered_map<uint8, EquipmentInfo> EquipmentInfoContainerInternal; typedef std::unordered_map<uint32, EquipmentInfoContainerInternal> EquipmentInfoContainer; typedef std::unordered_map<uint32, CreatureModelInfo> CreatureModelContainer; typedef std::unordered_map<uint32, std::vector<uint32>> CreatureQuestItemMap; -typedef std::unordered_map<uint32, GameObjectTemplate> GameObjectTemplateContainer; +typedef std::vector<std::unique_ptr<GameObjectTemplate>> GameObjectTemplateContainer; typedef std::unordered_map<uint32, GameObjectTemplateAddon> GameObjectTemplateAddonContainer; typedef std::unordered_map<ObjectGuid::LowType, GameObjectData> GameObjectDataContainer; typedef std::unordered_map<ObjectGuid::LowType, GameObjectAddon> GameObjectAddonContainer; @@ -515,7 +515,7 @@ typedef std::unordered_map<uint16, std::vector<InstanceSpawnGroupInfo>> Instance typedef std::map<TempSummonGroupKey, std::vector<TempSummonData>> TempSummonDataContainer; typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer; typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer; -typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer; +typedef std::vector<std::unique_ptr<ItemTemplate>> ItemTemplateContainer; typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer; typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer; typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer; @@ -611,7 +611,7 @@ struct PlayerInfo PlayerCreateInfoSkills skills; //[level-1] 0..MaxPlayerLevel-1 - PlayerLevelInfo* levelInfo = nullptr; + std::unique_ptr<PlayerLevelInfo[]> levelInfo; }; struct PetLevelInfo @@ -935,7 +935,7 @@ struct DungeonEncounter uint32 lastEncounterDungeon; }; -typedef std::list<DungeonEncounter const*> DungeonEncounterList; +typedef std::vector<std::unique_ptr<DungeonEncounter const>> DungeonEncounterList; typedef std::unordered_map<uint64, DungeonEncounterList> DungeonEncounterContainer; struct TerrainSwapInfo @@ -1010,14 +1010,14 @@ class TC_GAME_API ObjectMgr static ObjectMgr* instance(); - typedef std::unordered_map<uint32, Quest*> QuestMap; + typedef std::vector<std::unique_ptr<Quest>> QuestContainer; typedef std::unordered_map<uint32 /*questObjectiveId*/, QuestObjective const*> QuestObjectivesByIdContainer; typedef std::unordered_map<uint32, AreaTriggerStruct> AreaTriggerContainer; typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer; - typedef std::unordered_map<uint64, AccessRequirement*> AccessRequirementContainer; + typedef std::unordered_map<uint64, std::unique_ptr<AccessRequirement>> AccessRequirementContainer; typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer; typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer; @@ -1030,14 +1030,14 @@ class TC_GAME_API ObjectMgr typedef std::map<uint32, uint32> CharacterConversionMap; GameObjectTemplate const* GetGameObjectTemplate(uint32 entry) const; - GameObjectTemplateContainer const* GetGameObjectTemplates() const { return &_gameObjectTemplateStore; } - int LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32> *skip_vendors); + GameObjectTemplateContainer const& GetGameObjectTemplates() const { return _gameObjectTemplateStore; } + uint32 LoadReferenceVendor(int32 vendor, int32 item_id, std::set<uint32> *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<uint32>& 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<Quest const*> 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<HighGuid, std::unique_ptr<ObjectGuidGeneratorBase>> _guidGenerators; - - QuestMap _questTemplates; + QuestContainer _questTemplates; std::vector<Quest const*> _questTemplatesAutoPush; QuestObjectivesByIdContainer _questObjectives; @@ -1775,13 +1764,12 @@ class TC_GAME_API ObjectMgr CreatureBaseStatsContainer _creatureBaseStatsStore; - typedef std::map<uint32, PetLevelInfo*> PetLevelInfoContainer; - // PetLevelInfoContainer[creature_id][level] - PetLevelInfoContainer _petInfoStore; // [creature_id][level] + typedef std::unordered_map<uint32 /*creatureId*/, std::unique_ptr<PetLevelInfo[] /*level*/>> PetLevelInfoContainer; + PetLevelInfoContainer _petInfoStore; void BuildPlayerLevelInfo(uint8 race, uint8 class_, uint8 level, PlayerLevelInfo* plinfo) const; - PlayerInfo* _playerInfo[MAX_RACES][MAX_CLASSES]; + std::unique_ptr<PlayerInfo> _playerInfo[MAX_RACES][MAX_CLASSES]; typedef std::vector<uint32> PlayerXPperLevel; // [level] PlayerXPperLevel _playerXPperLevel; |
