Example #1
0
            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);
                }
            }
Example #2
0
            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 );
            }
Example #3
0
 public GMItemPacket(VisRangeItem item) : this(item, false)
 {
 }
Example #4
0
 public GMItemPacket( VisRangeItem item )
     : this(item, false)
 {
 }