コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }