// Copyright (c) CypherCore All rights reserved. // Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. using Framework.Collections; using Framework.Constants; using Game.Entities; using System; using System.Collections.Generic; namespace Game.Networking.Packets { public class QueryPetition : ClientPacket { public QueryPetition(WorldPacket packet) : base(packet) { } public override void Read() { PetitionID = _worldPacket.ReadUInt32(); ItemGUID = _worldPacket.ReadPackedGuid(); } public ObjectGuid ItemGUID; public uint PetitionID; } public class QueryPetitionResponse : ServerPacket { public QueryPetitionResponse() : base(ServerOpcodes.QueryPetitionResponse) { } public override void Write() { _worldPacket.WriteUInt32(PetitionID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); if (Allow) Info.Write(_worldPacket); } public uint PetitionID = 0; public bool Allow = false; public PetitionInfo Info; } public class PetitionShowList : ClientPacket { public PetitionShowList(WorldPacket packet) : base(packet) { } public override void Read() { PetitionUnit = _worldPacket.ReadPackedGuid(); } public ObjectGuid PetitionUnit; } public class ServerPetitionShowList : ServerPacket { public ServerPetitionShowList() : base(ServerOpcodes.PetitionShowList) { } public override void Write() { _worldPacket.WritePackedGuid(Unit); _worldPacket.WriteUInt32(Price); } public ObjectGuid Unit; public uint Price = 0; } public class PetitionBuy : ClientPacket { public PetitionBuy(WorldPacket packet) : base(packet) { } public override void Read() { uint titleLen = _worldPacket.ReadBits(7); Unit = _worldPacket.ReadPackedGuid(); Muid = _worldPacket.ReadUInt32(); Title = _worldPacket.ReadString(titleLen); } public ObjectGuid Unit; public string Title; public uint Muid; } public class PetitionShowSignatures : ClientPacket { public PetitionShowSignatures(WorldPacket packet) : base(packet) { } public override void Read() { Item = _worldPacket.ReadPackedGuid(); } public ObjectGuid Item; } public class ServerPetitionShowSignatures : ServerPacket { public ServerPetitionShowSignatures() : base(ServerOpcodes.PetitionShowSignatures) { Signatures = new List(); } public override void Write() { _worldPacket.WritePackedGuid(Item); _worldPacket.WritePackedGuid(Owner); _worldPacket.WritePackedGuid(OwnerAccountID); _worldPacket.WriteInt32(PetitionID); _worldPacket.WriteInt32(Signatures.Count); foreach (PetitionSignature signature in Signatures) { _worldPacket.WritePackedGuid(signature.Signer); _worldPacket.WriteInt32(signature.Choice); } } public ObjectGuid Item; public ObjectGuid Owner; public ObjectGuid OwnerAccountID; public int PetitionID = 0; public List Signatures; public struct PetitionSignature { public ObjectGuid Signer; public int Choice; } } public class SignPetition : ClientPacket { public SignPetition(WorldPacket packet) : base(packet) { } public override void Read() { PetitionGUID = _worldPacket.ReadPackedGuid(); Choice = _worldPacket.ReadUInt8(); } public ObjectGuid PetitionGUID; public byte Choice; } public class PetitionSignResults : ServerPacket { public PetitionSignResults() : base(ServerOpcodes.PetitionSignResults) { } public override void Write() { _worldPacket.WritePackedGuid(Item); _worldPacket.WritePackedGuid(Player); _worldPacket.WriteBits(Error, 4); _worldPacket.FlushBits(); } public ObjectGuid Item; public ObjectGuid Player; public PetitionSigns Error = 0; } public class PetitionAlreadySigned : ServerPacket { public PetitionAlreadySigned() : base(ServerOpcodes.PetitionAlreadySigned) { } public override void Write() { _worldPacket.WritePackedGuid(SignerGUID); } public ObjectGuid SignerGUID; } public class DeclinePetition : ClientPacket { public DeclinePetition(WorldPacket packet) : base(packet) { } public override void Read() { PetitionGUID = _worldPacket.ReadPackedGuid(); } public ObjectGuid PetitionGUID; } public class TurnInPetition : ClientPacket { public TurnInPetition(WorldPacket packet) : base(packet) { } public override void Read() { Item = _worldPacket.ReadPackedGuid(); } public ObjectGuid Item; } public class TurnInPetitionResult : ServerPacket { public TurnInPetitionResult() : base(ServerOpcodes.TurnInPetitionResult) { } public override void Write() { _worldPacket.WriteBits(Result, 4); _worldPacket.FlushBits(); } public PetitionTurns Result = 0; // PetitionError } public class OfferPetition : ClientPacket { public OfferPetition(WorldPacket packet) : base(packet) { } public override void Read() { ItemGUID = _worldPacket.ReadPackedGuid(); TargetPlayer = _worldPacket.ReadPackedGuid(); } public ObjectGuid TargetPlayer; public ObjectGuid ItemGUID; } public class OfferPetitionError : ServerPacket { public OfferPetitionError() : base(ServerOpcodes.OfferPetitionError) { } public override void Write() { _worldPacket.WritePackedGuid(PlayerGUID); } public ObjectGuid PlayerGUID; } public class PetitionRenameGuild : ClientPacket { public PetitionRenameGuild(WorldPacket packet) : base(packet) { } public override void Read() { PetitionGuid = _worldPacket.ReadPackedGuid(); _worldPacket.ResetBitPos(); uint nameLen = _worldPacket.ReadBits(7); NewGuildName = _worldPacket.ReadString(nameLen); } public ObjectGuid PetitionGuid; public string NewGuildName; } public class PetitionRenameGuildResponse : ServerPacket { public PetitionRenameGuildResponse() : base(ServerOpcodes.PetitionRenameGuildResponse) { } public override void Write() { _worldPacket.WritePackedGuid(PetitionGuid); _worldPacket.WriteBits(NewGuildName.GetByteCount(), 7); _worldPacket.FlushBits(); _worldPacket.WriteString(NewGuildName); } public ObjectGuid PetitionGuid; public string NewGuildName; } public class PetitionInfo { public void Write(WorldPacket data) { data.WriteInt32(PetitionID); data.WritePackedGuid(Petitioner); data.WriteUInt32(MinSignatures); data.WriteUInt32(MaxSignatures); data.WriteInt32(DeadLine); data.WriteInt32(IssueDate); data.WriteInt32(AllowedGuildID); data.WriteInt32(AllowedClasses); data.WriteInt32(AllowedRaces); data.WriteInt16(AllowedGender); data.WriteInt32(AllowedMinLevel); data.WriteInt32(AllowedMaxLevel); data.WriteInt32(NumChoices); data.WriteInt32(StaticType); data.WriteUInt32(Muid); data.WriteBits(Title.GetByteCount(), 7); data.WriteBits(BodyText.GetByteCount(), 12); for (byte i = 0; i < Choicetext.Length; i++) data.WriteBits(Choicetext[i].GetByteCount(), 6); data.FlushBits(); for (byte i = 0; i < Choicetext.Length; i++) data.WriteString(Choicetext[i]); data.WriteString(Title); data.WriteString(BodyText); } public int PetitionID; public ObjectGuid Petitioner; public string Title; public string BodyText; public uint MinSignatures; public uint MaxSignatures; public int DeadLine; public int IssueDate; public int AllowedGuildID; public int AllowedClasses; public int AllowedRaces; public short AllowedGender; public int AllowedMinLevel; public int AllowedMaxLevel; public int NumChoices; public int StaticType; public uint Muid = 0; public StringArray Choicetext = new(10); } }