diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-08-08 15:15:14 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-08-08 15:15:14 +0200 |
| commit | fcc8c2d12c775d51b56b280e6684f8d60d798c07 (patch) | |
| tree | 1b6db969dcc257b7ca0dda6c1633e48996a93629 /src/server/game/Server | |
| parent | c9e138d66d6a455a72d3fefbc0e4d5998bc338d6 (diff) | |
Core/PacketIO: Implemented advanced combat logging
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/ClientConfigPackets.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/ClientConfigPackets.h | 10 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 4 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 2 |
6 files changed, 30 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp index 2ff1bd236f8..74ff955f5d7 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.cpp +++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp @@ -127,3 +127,8 @@ void WorldPackets::ClientConfig::UserClientUpdateAccountData::Read() _worldPacket.read(CompressedData.contents(), compressedSize); } } + +void WorldPackets::ClientConfig::SetAdvancedCombatLogging::Read() +{ + Enable = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/ClientConfigPackets.h b/src/server/game/Server/Packets/ClientConfigPackets.h index a1ed1a355bb..12550a3096b 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.h +++ b/src/server/game/Server/Packets/ClientConfigPackets.h @@ -99,6 +99,16 @@ namespace WorldPackets uint8 DataType = 0; ///< @see enum AccountDataType ByteBuffer CompressedData; }; + + class SetAdvancedCombatLogging final : public ClientPacket + { + public: + SetAdvancedCombatLogging(WorldPacket&& packet) : ClientPacket(CMSG_SET_ADVANCED_COMBAT_LOGGING, std::move(packet)) { } + + void Read() override; + + bool Enable = false; + }; } } diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 91821780575..2f7bec3d3ba 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -77,6 +77,14 @@ WorldPacket const* WorldPackets::Spells::SendUnlearnSpells::Write() return &_worldPacket; } +void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit) +{ + Health = unit->GetHealth(); + AttackPower = unit->GetTotalAttackPowerValue(unit->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK); + SpellPower = unit->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL); + PowerData.emplace_back(int32(unit->getPowerType()), unit->GetPower(unit->getPowerType())); +} + ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData) { data << spellCastLogData.Health; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index f5df5e32da0..fbd53c0527c 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -135,6 +135,8 @@ namespace WorldPackets struct SpellLogPowerData { + SpellLogPowerData(int32 powerType, int32 amount) : PowerType(powerType), Amount(amount) { } + int32 PowerType = 0; int32 Amount = 0; }; @@ -145,6 +147,8 @@ namespace WorldPackets int32 AttackPower = 0; int32 SpellPower = 0; std::vector<SpellLogPowerData> PowerData; + + void Initialize(Unit const* unit); }; struct AuraDataInfo diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c30f81b7f6c..a0c26fe749a 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -711,7 +711,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_ACTION_BUTTON, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::SetActionButton, &WorldSession::HandleSetActionButtonOpcode); DEFINE_HANDLER(CMSG_SET_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Movement::SetActiveMover, &WorldSession::HandleSetActiveMoverOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel ); - DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::ClientConfig::SetAdvancedCombatLogging, &WorldSession::HandleSetAdvancedCombatLogging); DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Party::SetAssistantLeader, &WorldSession::HandleSetAssistantLeaderOpcode); DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index f7d4fa0bbe4..ed39993fd45 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -181,6 +181,7 @@ namespace WorldPackets { class RequestAccountData; class UserClientUpdateAccountData; + class SetAdvancedCombatLogging; } namespace Channel @@ -1091,6 +1092,7 @@ class WorldSession void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet); void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request); + void HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::SetAdvancedCombatLogging& setAdvancedCombatLogging); void HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton& packet); void HandleGameObjectUseOpcode(WorldPackets::GameObject::GameObjUse& packet); |
