refactor(Core/Cache): move the GlobalPlayerCache to its own class (#9166)

This commit is contained in:
Skjalf
2021-11-18 12:53:36 -03:00
committed by GitHub
parent 00dc369cb6
commit 731d256420
47 changed files with 898 additions and 595 deletions

View File

@@ -17,6 +17,7 @@
#include "CalendarMgr.h"
#include "Chat.h"
#include "CharacterCache.h"
#include "Config.h"
#include "DatabaseEnv.h"
#include "Guild.h"
@@ -1550,9 +1551,10 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
void Guild::HandleAcceptMember(WorldSession* session)
{
Player* player = session->GetPlayer();
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) &&
player->GetTeamId() != sObjectMgr->GetPlayerTeamIdByGUID(GetLeaderGUID().GetCounter()))
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && player->GetTeamId() != sCharacterCache->GetCharacterTeamByGuid(GetLeaderGUID()))
{
return;
}
AddMember(player->GetGUID());
}
@@ -1963,7 +1965,7 @@ bool Guild::LoadMemberFromDB(Field* fields)
return false;
}
m_members[memberGUID] = member;
sWorld->UpdateGlobalPlayerGuild(memberGUID.GetCounter(), GetId());
sCharacterCache->UpdateCharacterGuildId(memberGUID, GetId());
return true;
}
@@ -2172,7 +2174,7 @@ void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 max
}
Member* member = itr->second;
uint32 level = Player::GetLevelFromStorage(member->GetGUID().GetCounter());
uint32 level = sCharacterCache->GetCharacterLevelByGuid(member->GetGUID());
if (member->GetGUID() != session->GetPlayer()->GetGUID() && level >= minLevel && level <= maxLevel && member->IsRankNotLower(minRank))
{
@@ -2197,7 +2199,7 @@ bool Guild::AddMember(ObjectGuid guid, uint8 rankId)
if (player->GetGuildId() != 0)
return false;
}
else if (Player::GetGuildIdFromStorage(guid.GetCounter()) != 0)
else if (sCharacterCache->GetCharacterGuildIdByGuid(guid) != 0)
return false;
// Remove all player signs from another petitions
@@ -2249,7 +2251,7 @@ bool Guild::AddMember(ObjectGuid guid, uint8 rankId)
return false;
}
m_members[guid] = member;
sWorld->UpdateGlobalPlayerGuild(guid.GetCounter(), m_id);
sCharacterCache->UpdateCharacterGuildId(guid, m_id);
}
CharacterDatabaseTransaction trans(nullptr);
@@ -2321,7 +2323,9 @@ void Guild::DeleteMember(ObjectGuid guid, bool isDisbanding, bool isKicked, bool
player->SetRank(0);
}
else
sWorld->UpdateGlobalPlayerGuild(guid.GetCounter(), 0);
{
sCharacterCache->UpdateCharacterGuildId(guid, 0);
}
_DeleteMemberFromDB(guid.GetCounter());
if (!isDisbanding)