Core/Packets: converted guild reward packets to packet class

This commit is contained in:
Ovahlord
2019-09-05 02:51:59 +02:00
parent 75fd37afb0
commit 42e682c3b7
6 changed files with 81 additions and 19 deletions

View File

@@ -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());
}
}