Core/Misc: Use our new unique_trackable_ptr for various classes exposed to scripts (not actually used anywhere currently)

This commit is contained in:
Shauren
2024-03-13 18:51:29 +01:00
parent 18200e1b88
commit 4779fa5048
32 changed files with 177 additions and 129 deletions

View File

@@ -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);
}