aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-04 13:33:58 +0200
committerShauren <shauren.trinity@gmail.com>2015-04-04 13:33:58 +0200
commit250d85b559c175ee7ad35d12879aec01b01a4179 (patch)
treec85db38f58aa4384a0897fefdca8a0551f5c860d /src/server/game/Server
parent76cbf05a2e4db61872faeb0f34bee9ee8d37db73 (diff)
Core/PacketIO: Updated and enabled RaF packets
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/ReferAFriendPackets.cpp44
-rw-r--r--src/server/game/Server/Packets/ReferAFriendPackets.h71
-rw-r--r--src/server/game/Server/Packets/TradePackets.h8
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp9
-rw-r--r--src/server/game/Server/WorldSession.h10
5 files changed, 132 insertions, 10 deletions
diff --git a/src/server/game/Server/Packets/ReferAFriendPackets.cpp b/src/server/game/Server/Packets/ReferAFriendPackets.cpp
new file mode 100644
index 00000000000..d5b33fd3f46
--- /dev/null
+++ b/src/server/game/Server/Packets/ReferAFriendPackets.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ReferAFriendPackets.h"
+
+void WorldPackets::RaF::AcceptLevelGrant::Read()
+{
+ _worldPacket >> Granter;
+}
+
+void WorldPackets::RaF::GrantLevel::Read()
+{
+ _worldPacket >> Target;
+}
+
+WorldPacket const* WorldPackets::RaF::ProposeLevelGrant::Write()
+{
+ _worldPacket << Sender;
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::RaF::ReferAFriendFailure::Write()
+{
+ _worldPacket << int32(Reason);
+ // Client uses this sring only if Reason == ERR_REFER_A_FRIEND_NOT_IN_GROUP || Reason == ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
+ // but always reads it from packet
+ _worldPacket.WriteBits(Str.length(), 6);
+ _worldPacket.WriteString(Str);
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/ReferAFriendPackets.h b/src/server/game/Server/Packets/ReferAFriendPackets.h
new file mode 100644
index 00000000000..c312b8b6935
--- /dev/null
+++ b/src/server/game/Server/Packets/ReferAFriendPackets.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ReferAFriendPackets_h__
+#define ReferAFriendPackets_h__
+
+#include "Packets.h"
+#include "ObjectGuid.h"
+
+namespace WorldPackets
+{
+ namespace RaF
+ {
+ class AcceptLevelGrant final : public ClientPacket
+ {
+ public:
+ AcceptLevelGrant(WorldPacket&& packet) : ClientPacket(CMSG_ACCEPT_LEVEL_GRANT, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Granter;
+ };
+
+ class GrantLevel final : public ClientPacket
+ {
+ public:
+ GrantLevel(WorldPacket&& packet) : ClientPacket(CMSG_GRANT_LEVEL, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Target;
+ };
+
+ class ProposeLevelGrant final : public ServerPacket
+ {
+ public:
+ ProposeLevelGrant() : ServerPacket(SMSG_PROPOSE_LEVEL_GRANT, 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Sender;
+ };
+
+ class ReferAFriendFailure final : public ServerPacket
+ {
+ public:
+ ReferAFriendFailure() : ServerPacket(SMSG_REFER_A_FRIEND_FAILURE, 1 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Str;
+ int32 Reason = 0;
+ };
+ }
+}
+
+#endif // ReferAFriendPackets_h__
diff --git a/src/server/game/Server/Packets/TradePackets.h b/src/server/game/Server/Packets/TradePackets.h
index 8831135f4e5..5ac2c44bc41 100644
--- a/src/server/game/Server/Packets/TradePackets.h
+++ b/src/server/game/Server/Packets/TradePackets.h
@@ -150,10 +150,6 @@ namespace WorldPackets
class TradeUpdated final : public ServerPacket
{
public:
- TradeUpdated() : ServerPacket(SMSG_TRADE_UPDATED) { }
-
- WorldPacket const* Write() override;
-
struct UnwrappedTradeItem
{
WorldPackets::Item::ItemInstance Item;
@@ -176,6 +172,10 @@ namespace WorldPackets
Optional<UnwrappedTradeItem> Unwrapped;
};
+ TradeUpdated() : ServerPacket(SMSG_TRADE_UPDATED, 8 + 4 + 1 + 4 + 7 * sizeof(UnwrappedTradeItem) + 4 + 4 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
uint64 Gold = 0;
uint32 CurrentStateIndex = 0;
uint8 WhichPlayer = 0;
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index a637e8f8966..b950525a672 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -41,6 +41,7 @@
#include "Packets/PetitionPackets.h"
#include "Packets/QueryPackets.h"
#include "Packets/QuestPackets.h"
+#include "Packets/ReferAFriendPackets.h"
#include "Packets/SocialPackets.h"
#include "Packets/TalentPackets.h"
#include "Packets/TradePackets.h"
@@ -144,7 +145,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(opcode, status, processing, WorldPacket, handler);
DEFINE_HANDLER(CMSG_ACCEPT_GUILD_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::AcceptGuildInvite, &WorldSession::HandleGuildAcceptInvite);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_LEVEL_GRANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptGrantLevel );
+ DEFINE_HANDLER(CMSG_ACCEPT_LEVEL_GRANT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::RaF::AcceptLevelGrant, &WorldSession::HandleAcceptGrantLevel );
DEFINE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::AcceptTrade, &WorldSession::HandleAcceptTradeOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_WARGAME_INVITE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_ACTIVATE_TAXI, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode );
@@ -400,7 +401,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::GMTicketResponseResolve, &WorldSession::HandleGMResponseResolve);
DEFINE_HANDLER(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::GMTicketUpdateText, &WorldSession::HandleGMTicketUpdateTextOpcode);
DEFINE_HANDLER(CMSG_GOSSIP_SELECT_OPTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::GossipSelectOption, &WorldSession::HandleGossipSelectOptionOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_GRANT_LEVEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGrantLevel );
+ DEFINE_HANDLER(CMSG_GRANT_LEVEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::RaF::GrantLevel, &WorldSession::HandleGrantLevel );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_ADD_BATTLENET_FRIEND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_GUILD_ADD_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAddRank, &WorldSession::HandleGuildAddRank);
DEFINE_HANDLER(CMSG_GUILD_ASSIGN_MEMBER_RANK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildAssignMemberRank, &WorldSession::HandleGuildAssignRank);
@@ -1482,7 +1483,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRINT_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1536,7 +1537,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REALM_SPLIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RECRUIT_A_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_EXPIRED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_COMPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REFRESH_SPELL_HISTORY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REMOVE_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 9c2457e7b5e..ddd545ba68f 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -347,6 +347,12 @@ namespace WorldPackets
class QuestLogRemoveQuest;
}
+ namespace RaF
+ {
+ class AcceptLevelGrant;
+ class GrantLevel;
+ }
+
namespace Social
{
class AddFriend;
@@ -1296,8 +1302,8 @@ class WorldSession
void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet);
// Refer-a-Friend
- void HandleGrantLevel(WorldPacket& recvData);
- void HandleAcceptGrantLevel(WorldPacket& recvData);
+ void HandleGrantLevel(WorldPackets::RaF::GrantLevel& grantLevel);
+ void HandleAcceptGrantLevel(WorldPackets::RaF::AcceptLevelGrant& acceptLevelGrant);
// Calendar
void HandleCalendarGetCalendar(WorldPacket& recvData);