Core/Guilds: Use full guids in guild finder storage

This commit is contained in:
Shauren
2014-10-22 13:14:06 +02:00
parent 0e35a715e5
commit a5a84e8808
4 changed files with 82 additions and 83 deletions
+1 -1
View File
@@ -1307,7 +1307,7 @@ void Guild::Disband()
CharacterDatabase.CommitTransaction(trans);
sGuildFinderMgr->DeleteGuild(m_id);
sGuildFinderMgr->DeleteGuild(GetGUID());
sGuildMgr->RemoveGuild(m_id);
}
+25 -27
View File
@@ -54,7 +54,7 @@ void GuildFinderMgr::LoadGuildSettings()
do
{
Field* fields = result->Fetch();
uint32 guildId = fields[0].GetUInt32();
ObjectGuid guildId(HIGHGUID_GUILD, fields[0].GetUInt32());
uint8 availability = fields[1].GetUInt8();
uint8 classRoles = fields[2].GetUInt8();
uint8 interests = fields[3].GetUInt8();
@@ -94,15 +94,15 @@ void GuildFinderMgr::LoadMembershipRequests()
do
{
Field* fields = result->Fetch();
uint32 guildId = fields[0].GetUInt32();
uint32 playerId = fields[1].GetUInt32();
ObjectGuid guildId(HIGHGUID_GUILD, fields[0].GetUInt32());
ObjectGuid playerId(HIGHGUID_PLAYER, fields[1].GetUInt32());
uint8 availability = fields[2].GetUInt8();
uint8 classRoles = fields[3].GetUInt8();
uint8 interests = fields[4].GetUInt8();
std::string comment = fields[5].GetString();
uint32 submitTime = fields[6].GetUInt32();
MembershipRequest request(ObjectGuid(HIGHGUID_PLAYER, playerId), guildId, availability, classRoles, interests, comment, time_t(submitTime));
MembershipRequest request(playerId, guildId, availability, classRoles, interests, comment, time_t(submitTime));
_membershipRequests[guildId].push_back(request);
@@ -112,14 +112,14 @@ void GuildFinderMgr::LoadMembershipRequests()
TC_LOG_INFO("server.loading", ">> Loaded %u guild finder membership requests in %u ms.", count, GetMSTimeDiffToNow(oldMSTime));
}
void GuildFinderMgr::AddMembershipRequest(uint32 guildGuid, MembershipRequest const& request)
void GuildFinderMgr::AddMembershipRequest(ObjectGuid const& guildGuid, MembershipRequest const& request)
{
_membershipRequests[guildGuid].push_back(request);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_APPLICANT);
stmt->setUInt32(0, request.GetGuildId());
stmt->setUInt32(1, request.GetPlayerGUID());
stmt->setUInt32(0, request.GetGuildGuid().GetCounter());
stmt->setUInt32(1, request.GetPlayerGUID().GetCounter());
stmt->setUInt8(2, request.GetAvailability());
stmt->setUInt8(3, request.GetClassRoles());
stmt->setUInt8(4, request.GetInterests());
@@ -133,11 +133,11 @@ void GuildFinderMgr::AddMembershipRequest(uint32 guildGuid, MembershipRequest co
SendMembershipRequestListUpdate(*player);
// Notify the guild master and officers the list changed
if (Guild* guild = sGuildMgr->GetGuildById(guildGuid))
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
SendApplicantListUpdate(*guild);
}
void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid playerId)
void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& playerId)
{
for (MembershipRequestStore::iterator itr = _membershipRequests.begin(); itr != _membershipRequests.end(); ++itr)
{
@@ -151,20 +151,20 @@ void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid playerId)
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT);
stmt->setUInt32(0, itr2->GetGuildId());
stmt->setUInt32(1, itr2->GetPlayerGUID());
stmt->setUInt32(0, itr2->GetGuildGuid().GetCounter());
stmt->setUInt32(1, itr2->GetPlayerGUID().GetCounter());
trans->Append(stmt);
CharacterDatabase.CommitTransaction(trans);
itr->second.erase(itr2);
// Notify the guild master and officers the list changed
if (Guild* guild = sGuildMgr->GetGuildById(itr->first))
if (Guild* guild = sGuildMgr->GetGuildByGuid(itr->first))
SendApplicantListUpdate(*guild);
}
}
void GuildFinderMgr::RemoveMembershipRequest(uint32 playerId, uint32 guildId)
void GuildFinderMgr::RemoveMembershipRequest(ObjectGuid const& playerId, ObjectGuid const& guildId)
{
std::vector<MembershipRequest>::iterator itr = _membershipRequests[guildId].begin();
for (; itr != _membershipRequests[guildId].end(); ++itr)
@@ -177,7 +177,7 @@ void GuildFinderMgr::RemoveMembershipRequest(uint32 playerId, uint32 guildId)
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT);
stmt->setUInt32(0, itr->GetGuildId());
stmt->setUInt32(0, itr->GetGuildGuid().GetCounter());
stmt->setUInt32(1, itr->GetPlayerGUID().GetCounter());
trans->Append(stmt);
@@ -190,11 +190,11 @@ void GuildFinderMgr::RemoveMembershipRequest(uint32 playerId, uint32 guildId)
SendMembershipRequestListUpdate(*player);
// Notify the guild master and officers the list changed
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildId))
SendApplicantListUpdate(*guild);
}
std::list<MembershipRequest> GuildFinderMgr::GetAllMembershipRequestsForPlayer(uint32 playerGuid)
std::list<MembershipRequest> GuildFinderMgr::GetAllMembershipRequestsForPlayer(ObjectGuid const& playerGuid)
{
std::list<MembershipRequest> resultSet;
for (MembershipRequestStore::const_iterator itr = _membershipRequests.begin(); itr != _membershipRequests.end(); ++itr)
@@ -212,7 +212,7 @@ std::list<MembershipRequest> GuildFinderMgr::GetAllMembershipRequestsForPlayer(u
return resultSet;
}
uint8 GuildFinderMgr::CountRequestsFromPlayer(uint32 playerId)
uint8 GuildFinderMgr::CountRequestsFromPlayer(ObjectGuid const& playerId)
{
uint8 result = 0;
for (MembershipRequestStore::const_iterator itr = _membershipRequests.begin(); itr != _membershipRequests.end(); ++itr)
@@ -256,7 +256,7 @@ LFGuildStore GuildFinderMgr::GetGuildsMatchingSetting(LFGuildPlayer& settings, T
return resultSet;
}
bool GuildFinderMgr::HasRequest(uint32 playerId, uint32 guildId)
bool GuildFinderMgr::HasRequest(ObjectGuid const& playerId, ObjectGuid const& guildId)
{
for (std::vector<MembershipRequest>::const_iterator itr = _membershipRequests[guildId].begin(); itr != _membershipRequests[guildId].end(); ++itr)
if (itr->GetPlayerGUID() == playerId)
@@ -264,14 +264,14 @@ bool GuildFinderMgr::HasRequest(uint32 playerId, uint32 guildId)
return false;
}
void GuildFinderMgr::SetGuildSettings(uint32 guildGuid, LFGuildSettings const& settings)
void GuildFinderMgr::SetGuildSettings(ObjectGuid const& guildGuid, LFGuildSettings const& settings)
{
_guildSettings[guildGuid] = settings;
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_GUILD_SETTINGS);
stmt->setUInt32(0, settings.GetGUID());
stmt->setUInt32(0, settings.GetGUID().GetCounter());
stmt->setUInt8(1, settings.GetAvailability());
stmt->setUInt8(2, settings.GetClassRoles());
stmt->setUInt8(3, settings.GetInterests());
@@ -283,22 +283,20 @@ void GuildFinderMgr::SetGuildSettings(uint32 guildGuid, LFGuildSettings const& s
CharacterDatabase.CommitTransaction(trans);
}
void GuildFinderMgr::DeleteGuild(uint32 guildId)
void GuildFinderMgr::DeleteGuild(ObjectGuid const& guildId)
{
std::vector<MembershipRequest>::iterator itr = _membershipRequests[guildId].begin();
while (itr != _membershipRequests[guildId].end())
{
SQLTransaction trans = CharacterDatabase.BeginTransaction();
uint32 applicant = itr->GetPlayerGUID();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT);
stmt->setUInt32(0, itr->GetGuildId());
stmt->setUInt32(1, applicant);
stmt->setUInt32(0, itr->GetGuildGuid().GetCounter());
stmt->setUInt32(1, itr->GetPlayerGUID().GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_GUILD_SETTINGS);
stmt->setUInt32(0, itr->GetGuildId());
stmt->setUInt32(0, itr->GetGuildGuid().GetCounter());
trans->Append(stmt);
CharacterDatabase.CommitTransaction(trans);
@@ -314,7 +312,7 @@ void GuildFinderMgr::DeleteGuild(uint32 guildId)
_guildSettings.erase(guildId);
// Notify the guild master the list changed (even if he's not a GM any more, not sure if needed)
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildId))
SendApplicantListUpdate(*guild);
}
+25 -27
View File
@@ -64,20 +64,20 @@ struct MembershipRequest
_availability = settings.GetAvailability();
_classRoles = settings.GetClassRoles();
_interests = settings.GetInterests();
_guildId = settings.GetGuildId();
_guildId = settings.GetGuildGuid();
_playerGUID = settings.GetPlayerGUID();
_time = settings.GetSubmitTime();
}
MembershipRequest(ObjectGuid playerGUID, uint32 guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string& comment, time_t submitTime) :
MembershipRequest(ObjectGuid const& playerGUID, ObjectGuid const& guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string& comment, time_t submitTime) :
_comment(comment), _guildId(guildId), _playerGUID(playerGUID), _availability(availability),
_classRoles(classRoles), _interests(interests), _time(submitTime) {}
MembershipRequest() : _guildId(0), _availability(0), _classRoles(0),
MembershipRequest() : _availability(0), _classRoles(0),
_interests(0), _time(time(NULL)) {}
uint32 GetGuildId() const { return _guildId; }
ObjectGuid GetPlayerGUID() const { return _playerGUID; }
ObjectGuid const& GetGuildGuid() const { return _guildId; }
ObjectGuid const& GetPlayerGUID() const { return _playerGUID; }
uint8 GetAvailability() const { return _availability; }
uint8 GetClassRoles() const { return _classRoles; }
uint8 GetInterests() const { return _interests; }
@@ -90,7 +90,7 @@ struct MembershipRequest
private:
std::string _comment;
uint32 _guildId;
ObjectGuid _guildId;
ObjectGuid _playerGUID;
uint8 _availability;
@@ -106,14 +106,13 @@ struct LFGuildPlayer
public:
LFGuildPlayer()
{
_guid = 0;
_roles = 0;
_availability = 0;
_interests = 0;
_level = 0;
}
LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level)
LFGuildPlayer(ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level)
{
_guid = guid;
_roles = role;
@@ -122,7 +121,7 @@ struct LFGuildPlayer
_level = level;
}
LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : _comment(comment)
LFGuildPlayer(ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : _comment(comment)
{
_guid = guid;
_roles = role;
@@ -140,7 +139,7 @@ struct LFGuildPlayer
_level = settings.GetLevel();
}
uint32 GetGUID() const { return _guid; }
ObjectGuid const& GetGUID() const { return _guid; }
uint8 GetClassRoles() const { return _roles; }
uint8 GetAvailability() const { return _availability; }
uint8 GetInterests() const { return _interests; }
@@ -149,7 +148,7 @@ struct LFGuildPlayer
private:
std::string _comment;
uint32 _guid;
ObjectGuid _guid;
uint8 _roles;
uint8 _availability;
uint8 _interests;
@@ -164,16 +163,15 @@ struct LFGuildSettings : public LFGuildPlayer
LFGuildSettings(bool listed, TeamId team) : LFGuildPlayer(), _listed(listed), _team(team) {}
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level) :
LFGuildSettings(bool listed, TeamId team, ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level) :
LFGuildPlayer(guid, role, availability, interests, level), _listed(listed), _team(team) {}
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) :
LFGuildSettings(bool listed, TeamId team, ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) :
LFGuildPlayer(guid, role, availability, interests, level, comment), _listed(listed), _team(team) {}
LFGuildSettings(LFGuildSettings const& settings) :
LFGuildPlayer(settings), _listed(settings.IsListed()), _team(settings.GetTeam()) {}
bool IsListed() const { return _listed; }
void SetListed(bool state) { _listed = state; }
@@ -183,8 +181,8 @@ struct LFGuildSettings : public LFGuildPlayer
TeamId _team;
};
typedef std::map<uint32 /* guildGuid */, LFGuildSettings> LFGuildStore;
typedef std::map<uint32 /* guildGuid */, std::vector<MembershipRequest> > MembershipRequestStore;
typedef std::map<ObjectGuid /* guildGuid */, LFGuildSettings> LFGuildStore;
typedef std::map<ObjectGuid /* guildGuid */, std::vector<MembershipRequest> > MembershipRequestStore;
class GuildFinderMgr
{
@@ -207,48 +205,48 @@ class GuildFinderMgr
* @param guildGuid The guild's database guid.
* @param LFGuildSettings The guild's settings storage.
*/
void SetGuildSettings(uint32 guildGuid, LFGuildSettings const& settings);
void SetGuildSettings(ObjectGuid const& guildGuid, LFGuildSettings const& settings);
/**
* @brief Returns settings for a guild.
* @param guildGuid The guild's database guid.
*/
LFGuildSettings GetGuildSettings(uint32 guildGuid) { return _guildSettings[guildGuid]; }
LFGuildSettings GetGuildSettings(ObjectGuid const& guildGuid) { return _guildSettings[guildGuid]; }
/**
* @brief Files a membership request to a guild
* @param guildGuid The guild's database GUID.
* @param MembershipRequest An object storing all data related to the request.
*/
void AddMembershipRequest(uint32 guildGuid, MembershipRequest const& request);
void AddMembershipRequest(ObjectGuid const& guildGuid, MembershipRequest const& request);
/**
* @brief Removes all membership request from a player.
* @param playerId The player's database guid whose application shall be deleted.
*/
void RemoveAllMembershipRequestsFromPlayer(ObjectGuid playerId);
void RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& playerId);
/**
* @brief Removes a membership request to a guild.
* @param playerId The player's database guid whose application shall be deleted.
* @param guildId The guild's database guid
*/
void RemoveMembershipRequest(uint32 playerId, uint32 guildId);
void RemoveMembershipRequest(ObjectGuid const& playerId, ObjectGuid const& guildId);
/// Wipes everything related to a guild. Used when that guild is disbanded
void DeleteGuild(uint32 guildId);
void DeleteGuild(ObjectGuid const& guildId);
/**
* @brief Returns a set of membership requests for a guild
* @param guildGuid The guild's database guid.
*/
std::vector<MembershipRequest> GetAllMembershipRequestsForGuild(uint32 guildGuid) { return _membershipRequests[guildGuid]; }
std::vector<MembershipRequest> GetAllMembershipRequestsForGuild(ObjectGuid const& guildGuid) { return _membershipRequests[guildGuid]; }
/**
* @brief Returns a list of membership requests for a player.
* @param playerGuid The player's database guid.
*/
std::list<MembershipRequest> GetAllMembershipRequestsForPlayer(uint32 playerGuid);
std::list<MembershipRequest> GetAllMembershipRequestsForPlayer(ObjectGuid const& playerGuid);
/**
* @brief Returns a store of guilds matching the settings provided, using bitmask operators.
@@ -257,11 +255,11 @@ class GuildFinderMgr
*/
LFGuildStore GetGuildsMatchingSetting(LFGuildPlayer& settings, TeamId faction);
/// Provided a player DB guid and a guild DB guid, determines if a pending request is filed with these keys.
bool HasRequest(uint32 playerId, uint32 guildId);
/// Provided a player guid and a guild guid, determines if a pending request is filed with these keys.
bool HasRequest(ObjectGuid const& playerId, ObjectGuid const& guildId);
/// Counts the amount of pending membership requests, given the player's db guid.
uint8 CountRequestsFromPlayer(uint32 playerId);
uint8 CountRequestsFromPlayer(ObjectGuid const& playerId);
void SendApplicantListUpdate(Guild& guild);
void SendMembershipRequestListUpdate(Player& player);
+31 -28
View File
@@ -26,7 +26,7 @@ void WorldSession::HandleGuildFinderAddRecruit(WorldPacket& recvPacket)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_LF_GUILD_ADD_RECRUIT");
if (sGuildFinderMgr->GetAllMembershipRequestsForPlayer(GetPlayer()->GetGUIDLow()).size() == 10)
if (sGuildFinderMgr->GetAllMembershipRequestsForPlayer(GetPlayer()->GetGUID()).size() == 10)
return;
uint32 classRoles = 0;
@@ -58,8 +58,6 @@ void WorldSession::HandleGuildFinderAddRecruit(WorldPacket& recvPacket)
recvPacket.ReadByteSeq(guid[1]);
recvPacket.ReadByteSeq(guid[3]);
uint32 guildLowGuid = guid.GetCounter();
if (!guid.IsGuild())
return;
if (!(classRoles & GUILDFINDER_ALL_ROLES) || classRoles > GUILDFINDER_ALL_ROLES)
@@ -69,8 +67,8 @@ void WorldSession::HandleGuildFinderAddRecruit(WorldPacket& recvPacket)
if (!(guildInterests & ALL_INTERESTS) || guildInterests > ALL_INTERESTS)
return;
MembershipRequest request = MembershipRequest(GetPlayer()->GetGUID(), guildLowGuid, availability, classRoles, guildInterests, comment, time(NULL));
sGuildFinderMgr->AddMembershipRequest(guildLowGuid, request);
MembershipRequest request = MembershipRequest(GetPlayer()->GetGUID(), guid, availability, classRoles, guildInterests, comment, time(NULL));
sGuildFinderMgr->AddMembershipRequest(guid, request);
}
void WorldSession::HandleGuildFinderBrowse(WorldPacket& recvPacket)
@@ -94,7 +92,7 @@ void WorldSession::HandleGuildFinderBrowse(WorldPacket& recvPacket)
Player* player = GetPlayer();
LFGuildPlayer settings(player->GetGUIDLow(), classRoles, availability, guildInterests, ANY_FINDER_LEVEL);
LFGuildPlayer settings(player->GetGUID(), classRoles, availability, guildInterests, ANY_FINDER_LEVEL);
LFGuildStore guildList = sGuildFinderMgr->GetGuildsMatchingSetting(settings, player->GetTeamId());
uint32 guildCount = guildList.size();
@@ -112,9 +110,9 @@ void WorldSession::HandleGuildFinderBrowse(WorldPacket& recvPacket)
for (LFGuildStore::const_iterator itr = guildList.begin(); itr != guildList.end(); ++itr)
{
LFGuildSettings guildSettings = itr->second;
Guild* guild = sGuildMgr->GetGuildById(itr->first);
Guild* guild = sGuildMgr->GetGuildByGuid(itr->first);
ObjectGuid guildGUID = ObjectGuid(guild->GetGUID());
ObjectGuid guildGUID = guild->GetGUID();
data.WriteBit(guildGUID[7]);
data.WriteBit(guildGUID[5]);
@@ -150,7 +148,7 @@ void WorldSession::HandleGuildFinderBrowse(WorldPacket& recvPacket)
bufferData.WriteByteSeq(guildGUID[7]);
bufferData << uint8(sGuildFinderMgr->HasRequest(player->GetGUIDLow(), guild->GetGUID())); // Request pending
bufferData << uint8(sGuildFinderMgr->HasRequest(player->GetGUID(), guild->GetGUID())); // Request pending
bufferData.WriteByteSeq(guildGUID[2]);
bufferData.WriteByteSeq(guildGUID[0]);
@@ -177,6 +175,11 @@ void WorldSession::HandleGuildFinderBrowse(WorldPacket& recvPacket)
void WorldSession::HandleGuildFinderDeclineRecruit(WorldPacket& recvPacket)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_LF_GUILD_DECLINE_RECRUIT");
if (!GetPlayer()->GetGuild())
{
recvPacket.rfinish();
return;
}
ObjectGuid playerGuid;
@@ -201,14 +204,14 @@ void WorldSession::HandleGuildFinderDeclineRecruit(WorldPacket& recvPacket)
if (!playerGuid.IsPlayer())
return;
sGuildFinderMgr->RemoveMembershipRequest(playerGuid.GetCounter(), GetPlayer()->GetGuildId());
sGuildFinderMgr->RemoveMembershipRequest(playerGuid, GetPlayer()->GetGuild()->GetGUID());
}
void WorldSession::HandleGuildFinderGetApplications(WorldPacket& /*recvPacket*/)
{
TC_LOG_DEBUG("network", "WORLD: Received CMSG_LF_GUILD_GET_APPLICATIONS"); // Empty opcode
std::list<MembershipRequest> applicatedGuilds = sGuildFinderMgr->GetAllMembershipRequestsForPlayer(GetPlayer()->GetGUIDLow());
std::list<MembershipRequest> applicatedGuilds = sGuildFinderMgr->GetAllMembershipRequestsForPlayer(GetPlayer()->GetGUID());
uint32 applicationsCount = applicatedGuilds.size();
WorldPacket data(SMSG_LF_GUILD_MEMBERSHIP_LIST_UPDATED, 7 + 54 * applicationsCount);
data.WriteBits(applicationsCount, 20);
@@ -218,8 +221,8 @@ void WorldSession::HandleGuildFinderGetApplications(WorldPacket& /*recvPacket*/)
ByteBuffer bufferData(54 * applicationsCount);
for (std::list<MembershipRequest>::const_iterator itr = applicatedGuilds.begin(); itr != applicatedGuilds.end(); ++itr)
{
Guild* guild = sGuildMgr->GetGuildById(itr->GetGuildId());
LFGuildSettings guildSettings = sGuildFinderMgr->GetGuildSettings(itr->GetGuildId());
Guild* guild = sGuildMgr->GetGuildByGuid(itr->GetGuildGuid());
LFGuildSettings guildSettings = sGuildFinderMgr->GetGuildSettings(itr->GetGuildGuid());
MembershipRequest request = *itr;
ObjectGuid guildGuid = ObjectGuid(guild->GetGUID());
@@ -260,7 +263,7 @@ void WorldSession::HandleGuildFinderGetApplications(WorldPacket& /*recvPacket*/)
data.FlushBits();
data.append(bufferData);
}
data << uint32(10 - sGuildFinderMgr->CountRequestsFromPlayer(GetPlayer()->GetGUIDLow())); // Applications count left
data << uint32(10 - sGuildFinderMgr->CountRequestsFromPlayer(GetPlayer()->GetGUID())); // Applications count left
GetPlayer()->SendDirectMessage(&data);
}
@@ -274,10 +277,11 @@ void WorldSession::HandleGuildFinderGetRecruits(WorldPacket& recvPacket)
recvPacket >> unkTime;
Player* player = GetPlayer();
if (!player->GetGuildId())
Guild* guild = player->GetGuild();
if (!guild)
return;
std::vector<MembershipRequest> recruitsList = sGuildFinderMgr->GetAllMembershipRequestsForGuild(player->GetGuildId());
std::vector<MembershipRequest> recruitsList = sGuildFinderMgr->GetAllMembershipRequestsForGuild(guild->GetGUID());
uint32 recruitCount = recruitsList.size();
ByteBuffer dataBuffer(53 * recruitCount);
@@ -341,15 +345,13 @@ void WorldSession::HandleGuildFinderPostRequest(WorldPacket& /*recvPacket*/)
Player* player = GetPlayer();
if (!player->GetGuildId()) // Player must be in guild
Guild* guild = player->GetGuild();
if (!guild) // Player must be in guild
return;
bool isGuildMaster = true;
if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId()))
if (guild->GetLeaderGUID() != player->GetGUID())
isGuildMaster = false;
bool isGuildMaster = guild->GetLeaderGUID() == player->GetGUID();
LFGuildSettings settings = sGuildFinderMgr->GetGuildSettings(player->GetGuildId());
LFGuildSettings settings = sGuildFinderMgr->GetGuildSettings(guild->GetGUID());
WorldPacket data(SMSG_LF_GUILD_POST_UPDATED, 35);
data.WriteBit(isGuildMaster); // Guessed
@@ -397,7 +399,7 @@ void WorldSession::HandleGuildFinderRemoveRecruit(WorldPacket& recvPacket)
if (!guildGuid.IsGuild())
return;
sGuildFinderMgr->RemoveMembershipRequest(GetPlayer()->GetGUIDLow(), guildGuid.GetCounter());
sGuildFinderMgr->RemoveMembershipRequest(GetPlayer()->GetGUID(), guildGuid);
}
// Sent any time a guild master sets an option in the interface and when listing / unlisting his guild
@@ -433,10 +435,11 @@ void WorldSession::HandleGuildFinderSetGuildPost(WorldPacket& recvPacket)
if (!player->GetGuildId()) // Player must be in guild
return;
if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) // Player must be guild master
if (guild->GetLeaderGUID() != player->GetGUID())
return;
Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId());
// Player must be guild master
if (guild->GetLeaderGUID() != player->GetGUID())
return;
LFGuildSettings settings(listed, player->GetTeamId(), player->GetGuildId(), classRoles, availability, guildInterests, level, comment);
sGuildFinderMgr->SetGuildSettings(player->GetGuildId(), settings);
LFGuildSettings settings(listed, player->GetTeamId(), guild->GetGUID(), classRoles, availability, guildInterests, level, comment);
sGuildFinderMgr->SetGuildSettings(guild->GetGUID(), settings);
}