Example #1
0
        /// <summary>
        /// Writes a packet to the given <see cref="INetworkMessage"/>.
        /// </summary>
        /// <param name="packet">The packet to write.</param>
        /// <param name="message">The message to write into.</param>
        public override void WriteToMessage(IOutboundPacket packet, ref INetworkMessage message)
        {
            if (!(packet is PlayerInventorySetSlotPacket setSlotPacket))
            {
                this.Logger.LogWarning($"Invalid packet {packet.GetType().Name} routed to {this.GetType().Name}");

                return;
            }

            message.AddByte(setSlotPacket.PacketType.ToByte());

            message.AddByte((byte)setSlotPacket.Slot);
            message.AddItem(setSlotPacket.Item);
        }
Example #2
0
        /// <summary>
        /// Writes a packet to the given <see cref="INetworkMessage"/>.
        /// </summary>
        /// <param name="packet">The packet to write.</param>
        /// <param name="message">The message to write into.</param>
        public override void WriteToMessage(IOutboundPacket packet, ref INetworkMessage message)
        {
            if (!(packet is ContainerAddItemPacket containerAddItemPacket))
            {
                this.Logger.LogWarning($"Invalid packet {packet.GetType().Name} routed to {this.GetType().Name}");

                return;
            }

            message.AddByte(containerAddItemPacket.PacketType.ToByte());

            message.AddByte(containerAddItemPacket.ContainerId);
            message.AddItem(containerAddItemPacket.Item);
        }
        private void AddInventoryItem(ref INetworkMessage message, Slot slot, IContainerItem slotContainer)
        {
            var itemInContainer = slotContainer?.Content.FirstOrDefault();

            if (itemInContainer == null)
            {
                message.AddByte((byte)OutgoingGamePacketType.InventoryEmpty);
                message.AddByte((byte)slot);
            }
            else
            {
                message.AddByte((byte)OutgoingGamePacketType.InventoryItem);
                message.AddByte((byte)slot);
                message.AddItem(itemInContainer);
            }
        }
        /// <summary>
        /// Writes a packet to the given <see cref="INetworkMessage"/>.
        /// </summary>
        /// <param name="packet">The packet to write.</param>
        /// <param name="message">The message to write into.</param>
        public override void WriteToMessage(IOutboundPacket packet, ref INetworkMessage message)
        {
            if (!(packet is ContainerOpenPacket containerOpenPacket))
            {
                this.Logger.LogWarning($"Invalid packet {packet.GetType().Name} routed to {this.GetType().Name}");

                return;
            }

            message.AddByte(containerOpenPacket.PacketType.ToByte());

            message.AddByte(containerOpenPacket.ContainerId);
            message.AddUInt16(containerOpenPacket.TypeId);
            message.AddString(containerOpenPacket.Name);
            message.AddByte(containerOpenPacket.Volume);
            message.AddByte(Convert.ToByte(containerOpenPacket.HasParent ? 0x01 : 0x00));
            message.AddByte(Convert.ToByte(containerOpenPacket.Contents.Count));

            foreach (var item in containerOpenPacket.Contents)
            {
                message.AddItem(item);
            }
        }