Core/Guilds: Use full guids in guild finder storage
This commit is contained in:
@@ -1307,7 +1307,7 @@ void Guild::Disband()
|
||||
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
sGuildFinderMgr->DeleteGuild(m_id);
|
||||
sGuildFinderMgr->DeleteGuild(GetGUID());
|
||||
|
||||
sGuildMgr->RemoveGuild(m_id);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user