/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * 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 . */ #ifndef TRINITYCORE_BATTLE_PET_PACKETS_H #define TRINITYCORE_BATTLE_PET_PACKETS_H #include "Packet.h" #include "PacketUtilities.h" #include "ObjectGuid.h" #include "Optional.h" #include "UnitDefines.h" #include namespace WorldPackets { namespace BattlePet { struct BattlePetOwnerInfo { ObjectGuid Guid; uint32 PlayerVirtualRealm = 0; uint32 PlayerNativeRealm = 0; }; struct BattlePet { ObjectGuid Guid; uint32 Species = 0; uint32 CreatureID = 0; uint32 DisplayID = 0; uint16 Breed = 0; uint16 Level = 0; uint16 Exp = 0; uint16 Flags = 0; uint32 Power = 0; uint32 Health = 0; uint32 MaxHealth = 0; uint32 Speed = 0; uint8 Quality = 0; Optional OwnerInfo; std::string Name; bool NoRename = false; }; struct BattlePetSlot { BattlePet Pet; uint32 CollarID = 0; uint8 Index = 0; bool Locked = true; }; class BattlePetJournal final : public ServerPacket { public: BattlePetJournal() : ServerPacket(SMSG_BATTLE_PET_JOURNAL) { } WorldPacket const* Write() override; uint16 Trap = 0; bool HasJournalLock = false; std::vector> Slots; std::vector> Pets; }; class BattlePetJournalLockAcquired final : public ServerPacket { public: BattlePetJournalLockAcquired() : ServerPacket(SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED, 0) { } WorldPacket const* Write() override { return &_worldPacket; } }; class BattlePetJournalLockDenied final : public ServerPacket { public: BattlePetJournalLockDenied() : ServerPacket(SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED, 0) { } WorldPacket const* Write() override { return &_worldPacket; } }; class BattlePetRequestJournal final : public ClientPacket { public: explicit BattlePetRequestJournal(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_REQUEST_JOURNAL, std::move(packet)) { } void Read() override { } }; class BattlePetRequestJournalLock final : public ClientPacket { public: explicit BattlePetRequestJournalLock(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_REQUEST_JOURNAL_LOCK, std::move(packet)) { } void Read() override { } }; class BattlePetUpdates final : public ServerPacket { public: BattlePetUpdates() : ServerPacket(SMSG_BATTLE_PET_UPDATES) { } WorldPacket const* Write() override; std::vector> Pets; bool PetAdded = false; }; class PetBattleSlotUpdates final : public ServerPacket { public: PetBattleSlotUpdates() : ServerPacket(SMSG_PET_BATTLE_SLOT_UPDATES) { } WorldPacket const* Write() override; std::vector Slots; bool AutoSlotted = false; bool NewSlot = false; }; class BattlePetSetBattleSlot final : public ClientPacket { public: explicit BattlePetSetBattleSlot(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_SET_BATTLE_SLOT, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; uint8 Slot = 0; }; class BattlePetModifyName final : public ClientPacket { public: explicit BattlePetModifyName(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_MODIFY_NAME, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; std::string Name; std::unique_ptr DeclinedNames; }; class QueryBattlePetName final : public ClientPacket { public: explicit QueryBattlePetName(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_BATTLE_PET_NAME, std::move(packet)) { } void Read() override; ObjectGuid BattlePetID; ObjectGuid UnitGUID; }; class QueryBattlePetNameResponse final : public ServerPacket { public: QueryBattlePetNameResponse() : ServerPacket(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE) { } WorldPacket const* Write() override; ObjectGuid BattlePetID; int32 CreatureID = 0; WorldPackets::Timestamp<> Timestamp; bool Allow = false; bool HasDeclined = false; DeclinedName DeclinedNames; std::string Name; }; class BattlePetDeletePet final : public ClientPacket { public: explicit BattlePetDeletePet(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_DELETE_PET, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; }; class BattlePetSetFlags final : public ClientPacket { public: explicit BattlePetSetFlags(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_SET_FLAGS, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; uint16 Flags = 0; uint8 ControlType = 0; }; class BattlePetClearFanfare final : public ClientPacket { public: explicit BattlePetClearFanfare(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_CLEAR_FANFARE, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; }; class CageBattlePet final : public ClientPacket { public: explicit CageBattlePet(WorldPacket&& packet) : ClientPacket(CMSG_CAGE_BATTLE_PET, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; }; class BattlePetDeleted final : public ServerPacket { public: BattlePetDeleted() : ServerPacket(SMSG_BATTLE_PET_DELETED, 16) { } WorldPacket const* Write() override; ObjectGuid PetGuid; }; class BattlePetError final : public ServerPacket { public: BattlePetError() : ServerPacket(SMSG_BATTLE_PET_ERROR, 5) { } WorldPacket const* Write() override; uint8 Result = 0; int32 CreatureID = 0; }; class BattlePetSummon final : public ClientPacket { public: explicit BattlePetSummon(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_SUMMON, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; }; class BattlePetUpdateNotify final : public ClientPacket { public: explicit BattlePetUpdateNotify(WorldPacket&& packet) : ClientPacket(CMSG_BATTLE_PET_UPDATE_NOTIFY, std::move(packet)) { } void Read() override; ObjectGuid PetGuid; }; } } #endif // TRINITYCORE_BATTLE_PET_PACKETS_H