/// <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); }
/// <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); } }