private static Train FormTrain(string stationA) { var train = new Train(stationA); train.Print(); train.CoupleCars(new PassengerCar(100), new PassengerCar(30), new PostCar()); train.CoupleCars(new FreightCar(130)); //train.CoupleCars(new PassengerCar(52) { Conductor = null}); //train.CoupleCars(new PostCar() { Conductor = null}); //train.CoupleCars(new PassengerCar(88) { CurrentPassengerCount = 3} ); train.Print(); train.DecoupleCars(1); train.Print(); Console.WriteLine($"We have {train.GetCarCount<PassengerCar>()} passenger cars"); Console.WriteLine($"We have {train.GetCarCount<IHasConductor>()} conductor cars"); //Console.WriteLine($"We have {train.GetCarCount<int>()} integer cars?!"); Console.WriteLine(); Console.WriteLine("Engineer, this is dispatcher speaking. You are allowed to depart on green signal!"); CheckForDepart(train); SaveTrain(train, Stage.Formed); return(train); }
private static void SpeedDown(string stationB, Train train) { Console.WriteLine($"Dear passengers, we are arriving at {stationB} in 5 nanoseconds"); var previousSpeed = 0; while (train.CurrentSpeed != previousSpeed) { previousSpeed = train.CurrentSpeed; train.SpeedDown(); train.Print(); } train.CurrentStation = stationB; train.Print(); Console.WriteLine("Thank you for choosing C# railways. We'll be glad to see you again!"); SaveTrain(train, Stage.Initial); }
private static void SpeedUp(Train train) { var keepAccelerating = true; train.OnOverspeed += speed => Console.WriteLine( $"This is dispatcher speaking. You are about overspeeding {speed} kph. Stop acceleration"); train.OnOverspeed += speed => keepAccelerating = false; while (keepAccelerating) { train.SpeedUp(); train.Print(); } SaveTrain(train, Stage.MaxSpeed); }