aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Loot/LootMgr.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-08-25 14:10:39 +0200
committerShauren <shauren.trinity@gmail.com>2024-08-25 14:10:39 +0200
commit430321a80367be039c8dadfdb50ba950270bd720 (patch)
treef53902a0d5465c69a4bdfd85b0657766af405e06 /src/server/game/Loot/LootMgr.h
parentb49a9b44af5ba8255d7427b34170ea9fd9546310 (diff)
Core/Loot: Use unique_ptr in LootTemplate class
Diffstat (limited to 'src/server/game/Loot/LootMgr.h')
-rw-r--r--src/server/game/Loot/LootMgr.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h
index 53f9a485aaa..c199f263737 100644
--- a/src/server/game/Loot/LootMgr.h
+++ b/src/server/game/Loot/LootMgr.h
@@ -58,7 +58,7 @@ struct TC_GAME_API LootStoreItem
bool IsValid(LootStore const& store, uint32 entry) const; // Checks correctness of values
};
-typedef std::vector<LootStoreItem*> LootStoreItemList;
+typedef std::vector<std::unique_ptr<LootStoreItem>> LootStoreItemList;
typedef std::unordered_map<uint32, std::unique_ptr<LootTemplate>> LootTemplateMap;
typedef std::set<uint32> LootIdSet;
@@ -107,10 +107,16 @@ class TC_GAME_API LootStore
class TC_GAME_API LootTemplate
{
class LootGroup; // A set of loot definitions for items (refs are not allowed inside)
- typedef std::vector<LootGroup*> LootGroups;
+ typedef std::vector<std::unique_ptr<LootGroup>> LootGroups;
public:
- LootTemplate() { }
+ LootTemplate();
+
+ LootTemplate(LootTemplate const&) = delete;
+ LootTemplate(LootTemplate&&) noexcept;
+ LootTemplate& operator=(LootTemplate const&) = delete;
+ LootTemplate& operator=(LootTemplate&&) noexcept;
+
~LootTemplate();
// Adds an entry to the group (at loading stage)
@@ -136,10 +142,6 @@ class TC_GAME_API LootTemplate
private:
LootStoreItemList Entries; // not grouped only
LootGroups Groups; // groups have own (optimised) processing, grouped entries go there
-
- // Objects of this class must never be copied, we are storing pointers in container
- LootTemplate(LootTemplate const&) = delete;
- LootTemplate& operator=(LootTemplate const&) = delete;
};
std::unordered_map<ObjectGuid, std::unique_ptr<Loot>> GenerateDungeonEncounterPersonalLoot(uint32 dungeonEncounterId,