aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/GuildMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Guilds/GuildMgr.cpp')
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp
index f7d8dd86f6e..b7d32576147 100644
--- a/src/server/game/Guilds/GuildMgr.cpp
+++ b/src/server/game/Guilds/GuildMgr.cpp
@@ -17,8 +17,8 @@
#include "GuildMgr.h"
#include "AchievementMgr.h"
-#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "DatabaseEnv.h"
#include "Guild.h"
#include "Log.h"
#include "ObjectMgr.h"
@@ -29,15 +29,13 @@ GuildMgr::GuildMgr() : NextGuildId(UI64LIT(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)
@@ -66,7 +64,7 @@ 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;
}
@@ -84,9 +82,9 @@ Guild* GuildMgr::GetGuildByGuid(ObjectGuid guid) const
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;
}
@@ -109,7 +107,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;
}
@@ -483,10 +481,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));
@@ -562,6 +560,6 @@ void GuildMgr::ResetTimes(bool week)
CharacterDatabase.Execute(CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER_WITHDRAW));
for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
- if (Guild* guild = itr->second)
+ if (Guild* guild = itr->second.get())
guild->ResetTimes(week);
}