mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Packets: Added CMSG_SET_ACTION_BUTTON packet
This commit is contained in:
@@ -52,6 +52,7 @@
|
||||
#include "Group.h"
|
||||
#include "AccountMgr.h"
|
||||
#include "Spell.h"
|
||||
#include "SpellPackets.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
@@ -1038,17 +1039,17 @@ int32 WorldSession::HandleEnableNagleAlgorithm()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void WorldSession::HandleSetActionButtonOpcode(WorldPacket& recvData)
|
||||
void WorldSession::HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton& packet)
|
||||
{
|
||||
uint8 button;
|
||||
uint32 packetData;
|
||||
recvData >> button >> packetData;
|
||||
TC_LOG_DEBUG("network", "CMSG_SET_ACTION_BUTTON Button: %u Data: %u", button, packetData);
|
||||
uint32 action = ACTION_BUTTON_ACTION(packet.Action);
|
||||
uint32 type = ACTION_BUTTON_TYPE(packet.Action);
|
||||
|
||||
if (!packetData)
|
||||
GetPlayer()->removeActionButton(button);
|
||||
TC_LOG_DEBUG("network", "CMSG_SET_ACTION_BUTTON Button: %u Action: %u Type: %u", packet.Index, action, type);
|
||||
|
||||
if (!packet.Action)
|
||||
GetPlayer()->removeActionButton(packet.Index);
|
||||
else
|
||||
GetPlayer()->addActionButton(button, ACTION_BUTTON_ACTION(packetData), ACTION_BUTTON_TYPE(packetData));
|
||||
GetPlayer()->addActionButton(packet.Index, action, type);
|
||||
}
|
||||
|
||||
void WorldSession::HandleCompleteCinematic(WorldPacket& /*recvData*/)
|
||||
|
||||
@@ -57,6 +57,12 @@ WorldPacket const* WorldPackets::Spells::UpdateActionButtons::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::SetActionButton::Read()
|
||||
{
|
||||
_worldPacket >> Action;
|
||||
_worldPacket >> Index;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Spells::SendUnlearnSpells::Write()
|
||||
{
|
||||
_worldPacket << uint32(Spells.size());
|
||||
|
||||
@@ -77,6 +77,17 @@ namespace WorldPackets
|
||||
*/
|
||||
};
|
||||
|
||||
class SetActionButton final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
SetActionButton(WorldPacket&& packet) : ClientPacket(CMSG_SET_ACTION_BUTTON, std::move(packet)) {}
|
||||
|
||||
void Read() override;
|
||||
|
||||
uint64 Action = 0; ///< two packed uint32 (action and type)
|
||||
uint8 Index = 0;
|
||||
};
|
||||
|
||||
class SendUnlearnSpells final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -576,7 +576,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SETSHEATHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSetSheathedOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIONBAR_TOGGLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActionBarToggles );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTION_BUTTON, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActionButtonOpcode );
|
||||
DEFINE_HANDLER(CMSG_SET_ACTION_BUTTON, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::SetActionButton, &WorldSession::HandleSetActionButtonOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_MOVER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveMoverOpcode );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel ); // STATUS_AUTHED
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ALLOW_LOW_LEVEL_RAID1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
|
||||
@@ -141,6 +141,7 @@ namespace WorldPackets
|
||||
namespace Spells
|
||||
{
|
||||
class SpellCastRequest;
|
||||
class SetActionButton;
|
||||
}
|
||||
|
||||
namespace Talent
|
||||
@@ -680,7 +681,7 @@ class WorldSession
|
||||
|
||||
void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet);
|
||||
void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request);
|
||||
void HandleSetActionButtonOpcode(WorldPacket& recvPacket);
|
||||
void HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton& packet);
|
||||
|
||||
void HandleGameObjectUseOpcode(WorldPacket& recPacket);
|
||||
void HandleMeetingStoneInfo(WorldPacket& recPacket);
|
||||
|
||||
Reference in New Issue
Block a user