mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
Core/Packets: converted guild reward packets to packet class
This commit is contained in:
@@ -637,29 +637,28 @@ void WorldSession::HandleAutoDeclineGuildInvites(WorldPacket& recvPacket)
|
||||
GetPlayer()->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_AUTO_DECLINE_GUILD, enable != 0);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildRewardsQueryOpcode(WorldPacket& recvPacket)
|
||||
void WorldSession::HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& /*packet*/)
|
||||
{
|
||||
recvPacket.read_skip<uint32>(); // Unk
|
||||
|
||||
if (sGuildMgr->GetGuildById(_player->GetGuildId()))
|
||||
{
|
||||
std::vector<GuildReward> const& rewards = sGuildMgr->GetGuildRewards();
|
||||
|
||||
WorldPacket data(SMSG_GUILD_REWARDS_LIST, 3 + rewards.size() * (4 + 4 + 4 + 8 + 4 + 4));
|
||||
data.WriteBits(rewards.size(), 21);
|
||||
data.FlushBits();
|
||||
WorldPackets::Guild::GuildRewardList rewardList;
|
||||
rewardList.Version = uint32(time(nullptr));
|
||||
rewardList.RewardItems.reserve(rewards.size());
|
||||
|
||||
for (uint32 i = 0; i < rewards.size(); i++)
|
||||
{
|
||||
data << uint32(rewards[i].Standing);
|
||||
data << int32(rewards[i].Racemask);
|
||||
data << uint32(rewards[i].Entry);
|
||||
data << uint64(rewards[i].Price);
|
||||
data << uint32(0); // Unused
|
||||
data << uint32(rewards[i].AchievementId);
|
||||
WorldPackets::Guild::GuildRewardItem rewardItem;
|
||||
rewardItem.ItemID = rewards[i].Entry;
|
||||
rewardItem.RaceMask = rewards[i].Racemask;
|
||||
rewardItem.MinGuildRep = rewards[i].Standing;
|
||||
rewardItem.AchievementRequired = rewards[i].AchievementId;
|
||||
rewardItem.Cost = rewards[i].Price;
|
||||
rewardList.RewardItems.push_back(rewardItem);
|
||||
}
|
||||
data << uint32(time(nullptr));
|
||||
SendPacket(&data);
|
||||
|
||||
SendPacket(rewardList.Write());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -494,3 +494,33 @@ WorldPacket const* WorldPackets::Guild::GuildMemberRecipes::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem)
|
||||
{
|
||||
data << uint32(rewardItem.MinGuildRep);
|
||||
data << uint32(rewardItem.RaceMask);
|
||||
data << uint32(rewardItem.ItemID);
|
||||
data << uint64(rewardItem.Cost);
|
||||
data << uint32(rewardItem.Unk4);
|
||||
data << uint32(rewardItem.AchievementRequired);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void WorldPackets::Guild::RequestGuildRewardsList::Read()
|
||||
{
|
||||
_worldPacket >> CurrentVersion;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildRewardList::Write()
|
||||
{
|
||||
_worldPacket.WriteBits(RewardItems.size(), 21);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
for (GuildRewardItem const& item : RewardItems)
|
||||
_worldPacket << item;
|
||||
|
||||
_worldPacket << int32(Version);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -403,10 +403,42 @@ namespace WorldPackets
|
||||
int32 SkillStep = 0;
|
||||
std::array<uint8, GUILD_RECIPES_COUNT> SkillLineBitArray;
|
||||
};
|
||||
|
||||
class RequestGuildRewardsList final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
RequestGuildRewardsList(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_GUILD_REWARDS_LIST, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
uint32 CurrentVersion = 0;
|
||||
};
|
||||
|
||||
struct GuildRewardItem
|
||||
{
|
||||
uint32 ItemID = 0;
|
||||
uint32 Unk4 = 0;
|
||||
uint32 AchievementRequired;
|
||||
uint32 RaceMask = 0;
|
||||
int32 MinGuildRep = 0;
|
||||
uint64 Cost = 0;
|
||||
};
|
||||
|
||||
class GuildRewardList final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildRewardList() : ServerPacket(SMSG_GUILD_REWARD_LIST, 8) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
std::vector<GuildRewardItem> RewardItems;
|
||||
int32 Version = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData);
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem);
|
||||
|
||||
#endif // GuildPackets_h__
|
||||
|
||||
@@ -494,7 +494,6 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_PUSHQUESTTOPARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty );
|
||||
DEFINE_HANDLER(CMSG_PVP_LOG_DATA, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePVPLogDataOpcode );
|
||||
DEFINE_HANDLER(CMSG_QUERY_BATTLEFIELD_STATE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleBattlegroundStateQuery );
|
||||
DEFINE_HANDLER(CMSG_QUERY_GUILD_REWARDS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGuildRewardsQueryOpcode );
|
||||
DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryInspectAchievements );
|
||||
DEFINE_HANDLER(CMSG_QUERY_QUESTS_COMPLETED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryQuestsCompleted );
|
||||
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTimeOpcode );
|
||||
@@ -525,6 +524,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestAccountData );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_GUILD_REWARDS_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestGuildRewardsList );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_HOTFIX, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleRequestHotfix );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_INSPECT_RATED_BG_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_HANDLER(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPartyMemberStatsOpcode);
|
||||
@@ -958,7 +958,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_REACTION_CHANGED, STATUS_UNHANDLED);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REPUTATION_WEEKLY_CAP, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_RESET, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARDS_LIST, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_REWARD_LIST, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP, STATUS_NEVER);
|
||||
|
||||
@@ -421,7 +421,6 @@ enum Opcodes : uint16
|
||||
CMSG_PUSHQUESTTOPARTY = 0x4B14,
|
||||
CMSG_PVP_LOG_DATA = 0x7308,
|
||||
CMSG_QUERY_BATTLEFIELD_STATE = 0x7202,
|
||||
CMSG_QUERY_GUILD_REWARDS = 0x3012,
|
||||
CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x4D27,
|
||||
CMSG_QUERY_QUESTS_COMPLETED = 0x2317,
|
||||
CMSG_QUERY_TIME = 0x0A36,
|
||||
@@ -456,6 +455,7 @@ enum Opcodes : uint16
|
||||
CMSG_REQUEST_ACCOUNT_DATA = 0x6505,
|
||||
CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x7102,
|
||||
CMSG_REQUEST_CEMETERY_LIST = 0x720A,
|
||||
CMSG_REQUEST_GUILD_REWARDS_LIST = 0x3012,
|
||||
CMSG_REQUEST_HOTFIX = 0x2401,
|
||||
CMSG_REQUEST_INSPECT_RATED_BG_STATS = 0x3010,
|
||||
CMSG_REQUEST_PARTY_MEMBER_STATS = 0x0C04,
|
||||
@@ -930,7 +930,7 @@ enum Opcodes : uint16
|
||||
SMSG_GUILD_REPUTATION_REACTION_CHANGED = 0x74B0,
|
||||
SMSG_GUILD_REPUTATION_WEEKLY_CAP = 0x30B7,
|
||||
SMSG_GUILD_RESET = 0x1CB5,
|
||||
SMSG_GUILD_REWARDS_LIST = 0x1DB0,
|
||||
SMSG_GUILD_REWARD_LIST = 0x1DB0,
|
||||
SMSG_GUILD_ROSTER = 0x3DA3,
|
||||
SMSG_GUILD_SET_NOTE = 0x0000,
|
||||
SMSG_GUILD_TRADESKILL_UPDATE = 0x0000,
|
||||
|
||||
@@ -117,6 +117,7 @@ namespace WorldPackets
|
||||
class GuildQueryRecipes;
|
||||
class GuildQueryMembersForRecipe;
|
||||
class GuildQueryMemberRecipes;
|
||||
class RequestGuildRewardsList;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -709,7 +710,7 @@ class TC_GAME_API WorldSession
|
||||
void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildEventLogQueryOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildGetRosterOpcode(WorldPackets::Guild::GuildGetRoster& /*packet*/);
|
||||
void HandleGuildRewardsQueryOpcode(WorldPacket& recvPacket);
|
||||
void HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& /*packet*/);
|
||||
void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildAssignRankOpcode(WorldPacket& recvPacket);
|
||||
|
||||
Reference in New Issue
Block a user