Beispiel #1
0
 public override void VisitTerrainLock(TerrainLock terrainLock)
 {
     _lockType = LockType.Terrain;
     _target.AppendInt(terrainLock.Location.intX);
     _target.AppendInt(terrainLock.Location.intY);
     _target.AppendInt(terrainLock.Location.intZ);
     base.VisitTerrainLock(terrainLock);
 }
        public void AppendToStream(BinaryStream stream)
        {
            stream.AppendInt(Id);
            stream.AppendInt((int)Type);
            stream.AppendLong(Owner.Eid);

            var sourceEid = Source?.Eid ?? 0L;

            stream.AppendLong(sourceEid);

            var timer = Timer;

            if (timer != null)
            {
                stream.AppendInt((int)timer.Interval.TotalMilliseconds);
                stream.AppendInt((int)timer.Elapsed.TotalMilliseconds);
            }
            else
            {
                stream.AppendInt(0);
                stream.AppendInt(0);
            }

            stream.AppendInt(PropertyModifiers.Count());

            foreach (var property in PropertyModifiers)
            {
                property.AppendToPacket(stream);
            }
        }
        private Packet BuildReinforcePacket()
        {
            var units = _zone.Units.WithinRange(_player.CurrentPosition, REINFORCE_SCAN_RANGE).ToArray();

            var stream  = new BinaryStream();
            var counter = 0;

            foreach (var unit in units)
            {
                var pbsObject = unit as IPBSObject;
                if (pbsObject == null)
                {
                    continue;
                }

                stream.AppendInt(unit.Definition);
                stream.AppendLong(unit.Eid);
                stream.AppendInt(pbsObject.ReinforceHandler.ReinforceCounter);

                var inReinforce   = 0;
                var reinforceTime = TimeSpan.Zero;

                var reinforceEnd = pbsObject.ReinforceHandler.ReinforceEnd;
                if (reinforceEnd != null)
                {
                    inReinforce   = 1;
                    reinforceTime = CalculateTime((DateTime)reinforceEnd);
                }

                stream.AppendInt(inReinforce);
                stream.AppendInt((int)reinforceTime.TotalSeconds);

                counter++;
            }

            var reinforcePacket = new Packet(ZoneCommand.ScanReinforceResult);

            reinforcePacket.AppendInt(counter);
            reinforcePacket.AppendStream(stream);

            return(reinforcePacket);
        }
Beispiel #4
0
        public static void WriteToStream(this IEnumerable <IOptionalProperty> properties, BinaryStream stream)
        {
            var p = properties ?? new IOptionalProperty[0];

            stream.AppendInt(p.Count());

            foreach (var property in p)
            {
                stream.AppendByte((byte)property.Type);
                stream.AppendObject(property.Value);
            }
        }
        private Packet BuildScanOneTileResultPacket(Point location)
        {
            var packet = new Packet(ZoneCommand.ScanOneTileResult);

            packet.AppendLong(_module.Eid); //module EID
            packet.AppendPoint(location);

            using (var bb = new BinaryStream())
            {
                var count = 0;

                foreach (var layer in _zone.Terrain.Materials.OfType <MineralLayer>())
                {
                    if (!layer.TryGetNode(location, out MineralNode node))
                    {
                        continue;
                    }

                    var amount = node.GetValue(location);
                    if (amount <= 0)
                    {
                        continue;
                    }

                    var m   = _materialHelper.GetMaterialInfo(layer.Type);
                    var def = m.EntityDefault.Definition;
                    bb.AppendInt(def);
                    bb.AppendInt((int)amount);
                    count++;
                }

                packet.AppendByte((byte)count);
                packet.AppendStream(bb);
            }

            return(packet);
        }
Beispiel #6
0
 public void AppendToPacket(BinaryStream binaryStream)
 {
     binaryStream.AppendInt((int)Field);
     binaryStream.AppendDouble(Value);
 }
Beispiel #7
0
 public static void AppendProperty(this BinaryStream stream, ItemProperty property)
 {
     stream.AppendInt((int)property.Field);
     stream.AppendDouble(property.Value);
 }