aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/GuildMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-13 18:51:29 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-14 00:14:16 +0100
commita79b42bf681e211997923dbc6c191aae187aded6 (patch)
treedc52e4651fe17d4e6ce3437490d07313113432aa /src/server/game/Guilds/GuildMgr.cpp
parent7850107a42e7709f6e92f542860160b8c1432c94 (diff)
Core/Misc: Use our new unique_trackable_ptr for various classes exposed to scripts (not actually used anywhere currently)
(cherry picked from commit 4779fa5048642b57a0f69de7ab56b9d563c1cbc4)
Diffstat (limited to 'src/server/game/Guilds/GuildMgr.cpp')
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp
index 21f58962514..bf804ecb9cb 100644
--- a/src/server/game/Guilds/GuildMgr.cpp
+++ b/src/server/game/Guilds/GuildMgr.cpp
@@ -26,15 +26,13 @@
GuildMgr::GuildMgr() : NextGuildId(1)
{ }
-GuildMgr::~GuildMgr()
-{
- for (GuildContainer::iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
- delete itr->second;
-}
+GuildMgr::~GuildMgr() = default;
void GuildMgr::AddGuild(Guild* guild)
{
- GuildStore[guild->GetId()] = guild;
+ Trinity::unique_trackable_ptr<Guild>& ptr = GuildStore[guild->GetId()];
+ ptr.reset(guild);
+ guild->SetWeakPtr(ptr);
}
void GuildMgr::RemoveGuild(ObjectGuid::LowType guildId)
@@ -57,16 +55,16 @@ Guild* GuildMgr::GetGuildById(ObjectGuid::LowType guildId) const
{
GuildContainer::const_iterator itr = GuildStore.find(guildId);
if (itr != GuildStore.end())
- return itr->second;
+ return itr->second.get();
return nullptr;
}
Guild* GuildMgr::GetGuildByName(std::string_view guildName) const
{
- for (auto [id, guild] : GuildStore)
+ for (auto const& [id, guild] : GuildStore)
if (StringEqualI(guild->GetName(), guildName))
- return guild;
+ return guild.get();
return nullptr;
}
@@ -89,7 +87,7 @@ Guild* GuildMgr::GetGuildByLeader(ObjectGuid guid) const
{
for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
if (itr->second->GetLeaderGUID() == guid)
- return itr->second;
+ return itr->second.get();
return nullptr;
}
@@ -387,10 +385,10 @@ void GuildMgr::LoadGuilds()
for (GuildContainer::iterator itr = GuildStore.begin(); itr != GuildStore.end();)
{
- Guild* guild = itr->second;
+ Guild* guild = itr->second.get();
++itr;
- if (guild && !guild->Validate())
- delete guild;
+ if (guild)
+ guild->Validate();
}
TC_LOG_INFO("server.loading", ">> Validated data of loaded guilds in {} ms", GetMSTimeDiffToNow(oldMSTime));
@@ -400,7 +398,7 @@ void GuildMgr::LoadGuilds()
void GuildMgr::ResetTimes()
{
for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
- if (Guild* guild = itr->second)
+ if (Guild* guild = itr->second.get())
guild->ResetTimes();
CharacterDatabase.DirectExecute("TRUNCATE guild_member_withdraw");