public static SignalItemInfo Restore(BinaryReader inf) { if (null == inf) { throw new ArgumentNullException(nameof(inf)); } SignalItemInfo result = new SignalItemInfo(SignalItemFindState.None) { ItemType = (SignalItemType)inf.ReadInt32(), State = (SignalItemFindState)inf.ReadInt32(), SignalDetails = Simulator.Instance.SignalEnvironment.Signals[inf.ReadInt32()], DistanceFound = inf.ReadSingle(), DistanceToTrain = inf.ReadSingle(), DistanceToObject = inf.ReadSingle(), }; result.SpeedInfo = new SpeedInfo(inf.ReadSingle(), inf.ReadSingle(), inf.ReadBoolean(), false, 0, false); result.ActualSpeed = inf.ReadSingle(); result.Processed = inf.ReadBoolean(); result.SignalState = result.SignalDetails.IsSignal ? result.SignalDetails.SignalLR(SignalFunction.Normal) : SignalAspectState.Unknown; return(result); }
public static void Save(BinaryWriter outf, SignalItemInfo item) { if (null == item) { return; } if (null == outf) { throw new ArgumentNullException(nameof(outf)); } outf.Write((int)item.ItemType); outf.Write((int)item.State); outf.Write(item.SignalDetails.Index); outf.Write(item.DistanceFound); outf.Write(item.DistanceToTrain); outf.Write(item.DistanceToObject); outf.Write(item.SpeedInfo.PassengerSpeed); outf.Write(item.SpeedInfo.FreightSpeed); outf.Write(item.SpeedInfo.Flag); outf.Write(item.ActualSpeed); outf.Write(item.Processed); }