[10377] Simplify use Guild::BroadcastEvent

This commit is contained in:
VladimirMangos 2010-08-19 07:22:34 +04:00
parent c5ffa7710b
commit f2406c1962
6 changed files with 52 additions and 50 deletions

View file

@ -671,7 +671,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder)
guild->DisplayGuildBankTabsInfo(this);
guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetGUID(), 1, pCurrChar->GetName(), "", "");
guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetObjectGuid(), pCurrChar->GetName());
}
else
{

View file

@ -490,9 +490,8 @@ void Guild::DelMember(uint64 guid, bool isDisbanding)
// when leader non-exist (at guild load with deleted leader only) not send broadcasts
if (oldLeader)
{
BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->Name, best->Name, "");
BroadcastEvent(GE_LEFT, guid, 1, oldLeader->Name, "", "");
BroadcastEvent(GE_LEADER_CHANGED, oldLeader->Name.c_str(), best->Name.c_str());
BroadcastEvent(GE_LEFT, guid, oldLeader->Name.c_str());
}
}
@ -697,7 +696,7 @@ int32 Guild::GetRank(uint32 LowGuid)
void Guild::Disband()
{
BroadcastEvent(GE_DISBANDED, 0, 0, "", "", "");
BroadcastEvent(GE_DISBANDED);
while (!members.empty())
{
@ -2350,32 +2349,30 @@ void Guild::MoveFromCharToBank( Player * pl, uint8 PlayerBag, uint8 PlayerSlot,
}
}
void Guild::BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3)
void Guild::BroadcastEvent(GuildEvents event, ObjectGuid guid, char const* str1 /*=NULL*/, char const* str2 /*=NULL*/, char const* str3 /*=NULL*/)
{
WorldPacket data(SMSG_GUILD_EVENT, 1+1+(guid ? 8 : 0));
uint8 strCount = !str1 ? 0 : (!str2 ? 1 : (!str3 ? 2 : 3));
WorldPacket data(SMSG_GUILD_EVENT, 1 + 1 + 1*strCount + (guid.IsEmpty() ? 0 : 8));
data << uint8(event);
data << uint8(strCount);
switch(strCount)
if (str3)
{
case 0:
break;
case 1:
data << str1;
break;
case 2:
data << str1 << str2;
break;
case 3:
data << str1 << str2 << str3;
break;
default:
sLog.outError("Guild::BroadcastEvent: incorrect strings count %u!", strCount);
break;
data << str2;
data << str3;
}
else if (str2)
{
data << str1;
data << str2;
}
else if (str1)
data << str1;
if(guid)
data << uint64(guid);
if (!guid.IsEmpty())
data << guid;
BroadcastPacket(&data);

View file

@ -340,7 +340,12 @@ class Guild
void BroadcastToOfficers(WorldSession *session, const std::string& msg, uint32 language = LANG_UNIVERSAL);
void BroadcastPacketToRank(WorldPacket *packet, uint32 rankId);
void BroadcastPacket(WorldPacket *packet);
void BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3);
void BroadcastEvent(GuildEvents event, ObjectGuid guid, char const* str1 = NULL, char const* str2 = NULL, char const* str3 = NULL);
void BroadcastEvent(GuildEvents event, char const* str1 = NULL, char const* str2 = NULL, char const* str3 = NULL)
{
BroadcastEvent(event, ObjectGuid(), str1, str2, str3);
}
template<class Do>
void BroadcastWorker(Do& _do, Player* except = NULL)

View file

@ -140,17 +140,17 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
std::string plName;
recvPacket >> plName;
if(!normalizePlayerName(plName))
if (!normalizePlayerName(plName))
return;
Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild)
if (!guild)
{
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return;
}
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE))
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE))
{
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return;
@ -158,20 +158,20 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
uint64 plGuid;
MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
if(!slot)
if (!slot)
{
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
return;
}
if(slot->RankId == GR_GUILDMASTER)
if (slot->RankId == GR_GUILDMASTER)
{
SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE);
return;
}
// do not allow to kick player with same or higher rights
if(GetPlayer()->GetRank() >= slot->RankId)
if (GetPlayer()->GetRank() >= slot->RankId)
{
SendGuildCommandResult(GUILD_QUIT_S, plName, ERR_GUILD_RANK_TOO_HIGH_S);
return;
@ -181,7 +181,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
// Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0);
guild->BroadcastEvent(GE_REMOVED, 0, 2, plName, _player->GetName(), "");
guild->BroadcastEvent(GE_REMOVED, plName.c_str(), _player->GetName());
}
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
@ -204,7 +204,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
// Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_JOIN_GUILD, GetPlayer()->GetGUIDLow(), 0, 0);
guild->BroadcastEvent(GE_JOINED, player->GetGUID(), 1, player->GetName(), "", "");
guild->BroadcastEvent(GE_JOINED, player->GetObjectGuid(), player->GetName());
}
void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
@ -253,12 +253,12 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
return;
Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild)
if (!guild)
{
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return;
}
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE))
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE))
{
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return;
@ -267,13 +267,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
uint64 plGuid;
MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
if(!slot)
if (!slot)
{
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S);
return;
}
if(plGuid == GetPlayer()->GetGUID())
if (plGuid == GetPlayer()->GetGUID())
{
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
return;
@ -294,7 +294,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
// Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_PROMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId);
guild->BroadcastEvent(GE_PROMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(newRankId));
guild->BroadcastEvent(GE_PROMOTION, _player->GetName(), plName.c_str(), guild->GetRankName(newRankId).c_str());
}
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
@ -330,21 +330,21 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
return;
}
if(plGuid == GetPlayer()->GetGUID())
if (plGuid == GetPlayer()->GetGUID())
{
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID);
return;
}
// do not allow to demote same or higher rank
if(GetPlayer()->GetRank() >= slot->RankId)
if (GetPlayer()->GetRank() >= slot->RankId)
{
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_HIGH_S);
return;
}
// do not allow to demote lowest rank
if(slot->RankId >= guild->GetLowestRank())
if (slot->RankId >= guild->GetLowestRank())
{
SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_LOW_S);
return;
@ -356,7 +356,7 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
// Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId);
guild->BroadcastEvent(GE_DEMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(slot->RankId));
guild->BroadcastEvent(GE_DEMOTION, _player->GetName(), plName.c_str(), guild->GetRankName(slot->RankId).c_str());
}
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
@ -386,7 +386,7 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
// Put record into guild log
guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0);
guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), 1, _player->GetName(), "", "");
guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), _player->GetName());
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD);
}
@ -451,7 +451,7 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
guild->SetLeader(newLeaderGUID);
guild->ChangeRank(oldLeader->GetGUID(), GR_OFFICER);
guild->BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->GetName(), name, "");
guild->BroadcastEvent(GE_LEADER_CHANGED, oldLeader->GetName(), name.c_str());
}
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
@ -460,18 +460,18 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
std::string MOTD;
if(!recvPacket.empty())
if (!recvPacket.empty())
recvPacket >> MOTD;
else
MOTD = "";
Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId());
if(!guild)
if (!guild)
{
SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD);
return;
}
if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD))
if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD))
{
SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS);
return;
@ -479,7 +479,7 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
guild->SetMOTD(MOTD);
guild->BroadcastEvent(GE_MOTD, 0, 1, MOTD, "", "");
guild->BroadcastEvent(GE_MOTD, MOTD.c_str());
}
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)

View file

@ -385,7 +385,7 @@ void WorldSession::LogoutPlayer(bool Save)
guild->SetMemberStats(_player->GetGUID());
guild->UpdateLogoutTime(_player->GetGUID());
guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), 1, _player->GetName(), "", "");
guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), _player->GetName());
}
///- Remove pet

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "10376"
#define REVISION_NR "10377"
#endif // __REVISION_NR_H__