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); }
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); }
public void AppendToPacket(BinaryStream binaryStream) { binaryStream.AppendInt((int)Field); binaryStream.AppendDouble(Value); }
public static void AppendProperty(this BinaryStream stream, ItemProperty property) { stream.AppendInt((int)property.Field); stream.AppendDouble(property.Value); }