public void Write(OutBlob stream)
 {
     stream.Write(Hit.Damage);
     stream.Write((byte)Hit.Type);
     stream.Write(Hit.CurrentHealth);
     stream.Write(Hit.MaxHealth);
 }
示例#2
0
        public void Send(OutBlob stream)
        {
            // don't write the packet if no indicies have been passed.
            if (!_indicies.Any())
            {
                return;
            }

            stream.BeginPacket(Id);

            stream.Write16((short)_interf.Id);

            foreach (var i in _indicies)
            {
                // write index
                if (i < 128)
                {
                    stream.Write((byte)i);
                }
                else
                {
                    stream.Write16((short)i);
                }

                var item = _container.Provider[i];
                // write id
                stream.Write16((short)item.Id.ItemId);

                // write size as byte-int32 smart
                stream.WriteByteInt32Smart(item.Amount);
            }

            stream.EndPacket();
        }
 public void Send(OutBlob stream)
 {
     stream.BeginPacket(Id);
     stream.Write16(_x);
     stream.Write16(_y);
     stream.EndPacket();
 }
示例#4
0
 public void Write(OutBlob stream)
 {
     stream.Write((byte)Chat.Color);
     stream.Write((byte)Chat.Effects);
     stream.Write((byte)Chat.Title);
     stream.WriteString(Chat.Message);
 }
 private static void WriteInitSegments(OutBlob stream, IEnumerable <IUpdateSegment> initializeSegments)
 {
     foreach (var init in initializeSegments)
     {
         init.Write(stream);
     }
 }
 private static void WriteFlagSegments(OutBlob stream, IList <IUpdateSegment> flagSegments)
 {
     foreach (var flag in flagSegments)
     {
         flag.Write(stream);
     }
 }
 public void Write(OutBlob stream)
 {
     stream.WriteBits(11, _pid + 1);            // id
     stream.WriteBits(1, _needsUpdate ? 1 : 0); // needs update?
     stream.WriteBits(1, 1);                    // todo :  setpos flag
     stream.WriteBits(5, _ydelta);              // ydelta
     stream.WriteBits(5, _xdelta);              // xdelta
 }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(249);

            stream.Write((byte)(_isMember ? 1 : 0));
            stream.Write16((short)(_pid + 1));

            stream.EndPacket();
        }
        public void Write(OutBlob stream)
        {
            stream.WriteBits(1, 1); // continue reading?
            stream.WriteBits(2, 1); // type

            stream.WriteBits(3, (byte)_dir);

            stream.WriteBits(1, _needsUpdate ? 1 : 0); // add to needs updating list
        }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write16((short)_dt);
            stream.Write16((short)_processTime);

            stream.EndPacket();
        }
        public void Send(OutBlob stream)
        {
            if (IsInvalid)
            {
                return;
            }

            InternalSend(stream);
        }
示例#12
0
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.WriteString(_text);
            stream.Write16((short)_id);

            stream.EndPacket();
        }
示例#13
0
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write16(-1);
            stream.Write((byte)_sidebarInterfaceIndex);

            stream.EndPacket();
        }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);
            stream.Write(_index);
            stream.Write(_isOnTop);
            stream.WriteString(_msg);

            stream.EndPacket();
        }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write16(_id);
            stream.Write(_sidebarIndex);

            stream.EndPacket();
        }
 private static void WriteInitSegmentsEndMarkerIfNeeded(
     OutBlob stream, IList <IUpdateSegment> flagSegments,
     int numIdBits, int maxIdValue)
 {
     if (flagSegments.Any())
     {
         stream.WriteBits(numIdBits, maxIdValue);
     }
 }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write16((short)_id);
            stream.Write16((short)_zoom);
            stream.Write16((short)_itemId);

            stream.EndPacket();
        }
 public void Write(OutBlob stream)
 {
     stream.Write(Movement.Start.x);
     stream.Write(Movement.Start.y);
     stream.Write(Movement.End.x);
     stream.Write(Movement.End.y);
     stream.Write(Movement.Duration.x);
     stream.Write(Movement.Duration.y);
     stream.Write((byte)Movement.Direction);
 }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write(_skillIdx);
            stream.Write32(_exp);
            stream.Write(_level);

            stream.EndPacket();
        }
示例#20
0
        public void Write(OutBlob stream)
        {
            stream.WriteBits(14, _npcInstanceId);

            stream.WriteBits(5, _yDelta);
            stream.WriteBits(5, _xDelta);

            stream.WriteBits(1, 1); // setpos?? flag // todo :  setpos flag
            stream.WriteBits(12, _definitionId);
            stream.WriteBits(1, _needsUpdate ? 1 : 0);
        }
示例#21
0
        public void Write(OutBlob stream)
        {
            stream.WriteBits(1, 1);                    // continue reading?
            stream.WriteBits(2, 3);                    // type

            stream.WriteBits(2, _local.Z);             // plane
            stream.WriteBits(1, 1);                    // todo :  setpos flag
            stream.WriteBits(1, _needsUpdate ? 1 : 0); // add to needs updating list

            stream.WriteBits(7, _local.Y);             // local y
            stream.WriteBits(7, _local.X);             // local x
        }
        public override void Write(OutBlob stream)
        {
            var header = (PlayerFlag)GetHeader(f => (int)f.ToPlayer());

            if (header == 0)
            {
                return;
            }

            // write header
            stream.Write((byte)header);
            stream.Write((byte)((short)header >> 8));

            // write flags
            if ((header & PlayerFlag.ForcedMovement) != 0)
            {
                GetFlag(FlagType.ForcedMovement).Write(stream);
            }
            if ((header & PlayerFlag.ParticleEffect) != 0)
            {
                GetFlag(FlagType.ParticleEffect).Write(stream);
            }
            if ((header & PlayerFlag.Animation) != 0)
            {
                GetFlag(FlagType.Animation).Write(stream);
            }
            if ((header & PlayerFlag.ForcedText) != 0)
            {
                GetFlag(FlagType.OverheadText).Write(stream);
            }
            if ((header & PlayerFlag.Chat) != 0)
            {
                GetFlag(FlagType.ChatMessage).Write(stream);
            }
            if ((header & PlayerFlag.InteractEnt) != 0)
            {
                GetFlag(FlagType.InteractingEntity).Write(stream);
            }
            if ((header & PlayerFlag.Appearance) != 0)
            {
                GetFlag(FlagType.Appearance).Write(stream);
            }
            if ((header & PlayerFlag.FacingCoordinate) != 0)
            {
                GetFlag(FlagType.FacingDir).Write(stream);
            }
            if ((header & PlayerFlag.PrimaryHit) != 0 ||
                (header & PlayerFlag.SecondaryHit) != 0)
            {
                GetFlag(FlagType.Damage).Write(stream);
            }
        }
        private static void WriteSyncSegments(OutBlob stream, IEnumerable <IUpdateSegment> syncSegments)
        {
            // avoid double enumeration if the syncSegments IEnumerable
            var enumeratedSyncSegments =
                syncSegments as IList <IUpdateSegment> ?? syncSegments.ToList();

            stream.WriteBits(8, enumeratedSyncSegments.Count);

            foreach (var segment in enumeratedSyncSegments)
            {
                segment.Write(stream);
            }
        }
示例#24
0
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(PacketId);
            stream.BeginBitAccess();

            GenericEntityUpdateWriter.WriteIntoPacket(stream,
                                                      _syncSegments,
                                                      _initializeSegments,
                                                      _flagSegments,
                                                      NumIdBits,
                                                      MaxIdValue);

            stream.EndPacket();
        }
示例#25
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (InBlob.Length != 0)
            {
                hash ^= InBlob.GetHashCode();
            }
            if (OutBlob.Length != 0)
            {
                hash ^= OutBlob.GetHashCode();
            }
            hash ^= internalBlobInt8_.GetHashCode();
            return(hash);
        }
示例#26
0
        public override void Write(OutBlob stream)
        {
            var header = (NpcFlag)GetHeader(f => (int)f.ToNpc());

            if (header == 0)
            {
                return;
            }

            // header
            stream.Write((byte)header);

            // flags
            if ((header & NpcFlag.Animation) != 0)
            {
                GetFlag(FlagType.Animation).Write(stream);
            }
            if ((header & NpcFlag.PrimaryHit) != 0 ||
                (header & NpcFlag.SecondaryHit) != 0)
            {
                GetFlag(FlagType.Damage).Write(stream);
            }

            if ((header & NpcFlag.ParticleEffect) != 0)
            {
                GetFlag(FlagType.ParticleEffect).Write(stream);
            }

            if ((header & NpcFlag.InteractingEntity) != 0)
            {
                GetFlag(FlagType.InteractingEntity).Write(stream);
            }
            if ((header & NpcFlag.Text) != 0)
            {
                GetFlag(FlagType.OverheadText).Write(stream);
            }
            if ((header & NpcFlag.Definition) != 0)
            {
                GetFlag(FlagType.DefinitionChange).Write(stream);
            }
            if ((header & NpcFlag.FacingCoordinate) != 0)
            {
                GetFlag(FlagType.FacingDir).Write(stream);
            }
        }
        public void Send(OutBlob stream)
        {
            stream.BeginPacket(Id);

            stream.Write16((short)_id);

            // find upper bound in inventory
            var upperBoundIdx = 0;

            for (var i = 0; i < _container.Provider.Count; i++)
            {
                if (_container.Provider[i].IsEmpty())
                {
                    continue;
                }

                upperBoundIdx = i;
            }

            // write payload
            upperBoundIdx += 1;
            stream.Write16((short)upperBoundIdx);

            for (var i = 0; i < upperBoundIdx; i++)
            {
                var item = _container.Provider[i];
                if (item.IsEmpty())
                {
                    stream.Write(0);   // amnt
                    stream.Write16(0); // id
                    continue;
                }

                // write amount. If amount is > 255, write it as an int32
                stream.WriteByteInt32Smart(item.Amount);

                // write id
                stream.Write16((short)item.Id.ItemId);
            }

            stream.EndPacket();
        }
        public static void WriteIntoPacket(OutBlob stream,
                                           [NotNull] IEnumerable <IUpdateSegment> syncSegments,
                                           [NotNull] IEnumerable <IUpdateSegment> initializeSegments,
                                           [NotNull] IEnumerable <IUpdateSegment> flagSegments,
                                           int numIdBits, int maxIdValue)
        {
            stream.BeginBitAccess();

            WriteSyncSegments(stream, syncSegments);
            WriteInitSegments(stream, initializeSegments);

            // avoid double enumeration of the flagSegments enumerable
            var enumeratedUpdateSegments =
                flagSegments as IList <IUpdateSegment> ?? flagSegments.ToList();

            WriteInitSegmentsEndMarkerIfNeeded(stream, enumeratedUpdateSegments, numIdBits, maxIdValue);

            stream.EndBitAccess();

            WriteFlagSegments(stream, enumeratedUpdateSegments);
        }
示例#29
0
 public void Send(OutBlob stream)
 {
     stream.BeginPacket(Id);
     stream.EndPacket();
 }
示例#30
0
 public void Write(OutBlob stream)
 {
     stream.WriteBits(1, 1); // is not noop?
     stream.WriteBits(2, 3); // type
 }