public GMItemPacket(VisRangeItem item, bool forceHidden) : base(0x1A) { this.EnsureCapacity(20); // 14 base length // +2 - Amount // +2 - Hue // +1 - Flags uint serial = (uint)item.Serial.Value; int itemID = item.ItemID; int amount = item.Amount; Point3D loc = item.Location; int x = loc.X; int y = loc.Y; int hue = item.Hue; int flags = item.GetPacketFlags(); if (forceHidden) { flags |= 0x80; } int direction = (int)item.Direction; if (amount != 0) { serial |= 0x80000000; } else { serial &= 0x7FFFFFFF; } m_Stream.Write((uint)serial); m_Stream.Write((short)(itemID & 0x7FFF)); if (amount != 0) { m_Stream.Write((short)amount); } x &= 0x7FFF; if (direction != 0) { x |= 0x8000; } m_Stream.Write((short)x); y &= 0x3FFF; if (hue != 0) { y |= 0x8000; } if (flags != 0) { y |= 0x4000; } m_Stream.Write((short)y); if (direction != 0) { m_Stream.Write((byte)direction); } m_Stream.Write((sbyte)loc.Z); if (hue != 0) { m_Stream.Write((ushort)hue); } if (flags != 0) { m_Stream.Write((byte)flags); } }
public GMItemPacket( VisRangeItem item, bool forceHidden ) : base(0x1A) { this.EnsureCapacity( 20 ); // 14 base length // +2 - Amount // +2 - Hue // +1 - Flags uint serial = (uint)item.Serial.Value; int itemID = item.ItemID; int amount = item.Amount; Point3D loc = item.Location; int x = loc.X; int y = loc.Y; int hue = item.Hue; int flags = item.GetPacketFlags(); if ( forceHidden ) flags |= 0x80; int direction = (int)item.Direction; if ( amount != 0 ) serial |= 0x80000000; else serial &= 0x7FFFFFFF; m_Stream.Write( (uint) serial ); m_Stream.Write( (short) (itemID & 0x7FFF) ); if ( amount != 0 ) m_Stream.Write( (short) amount ); x &= 0x7FFF; if ( direction != 0 ) x |= 0x8000; m_Stream.Write( (short) x ); y &= 0x3FFF; if ( hue != 0 ) y |= 0x8000; if ( flags != 0 ) y |= 0x4000; m_Stream.Write( (short) y ); if ( direction != 0 ) m_Stream.Write( (byte) direction ); m_Stream.Write( (sbyte) loc.Z ); if ( hue != 0 ) m_Stream.Write( (ushort) hue ); if ( flags != 0 ) m_Stream.Write( (byte) flags ); }
public GMItemPacket(VisRangeItem item) : this(item, false) { }
public GMItemPacket( VisRangeItem item ) : this(item, false) { }