public Simulator(Aircraft aircraft, Weather weather, ModelEnum modelEnum) { Time = 0; _aircraft = aircraft; _weather = weather; switch (modelEnum) { case ModelEnum.IgorGruzdev: _physicsModel = new IgorGruzdevModel(_aircraft, Vector3.zero, _weather, 0.2f, new IgorGruzdevModelData { ControlRate = 10f, DeadZone = 0.2f, Lerp = 0.03f, MaxTurn = 15.0f, AileronTurnRate = 300f, ElevatorTurnRate = 3f, RudderTurnRate = 100f, }); break; case ModelEnum.Basic: _physicsModel = new BasicPhysicsModel(_aircraft, Vector3.zero, new BasicPhysicsModelData()); break; case ModelEnum.IlyaAntonov: _physicsModel = new IlyaAntonovModel(_aircraft, Vector3.zero); break; case ModelEnum.FedorKondratenko: _physicsModel = new CopterPhysicsModel(_aircraft, Vector3.zero, new CopterPhysicsModelData { ControlRate = 10f, DeadZone = 0.2f, Lerp = 0.03f, MaxTurn = 15.0f, AileronTurnRate = 300f, ElevatorTurnRate = 3f, RudderTurnRate = 100f }); break; case ModelEnum.OlenchukPavel: var forsage = GameObject.FindObjectOfType <Forsage>(); _physicsModel = new OlenchukPavelModel(_aircraft, Vector3.zero, new OlenchukPavelModelData { ControlRate = 10f, DeadZone = 0.2f, Lerp = 0.03f, MaxTurn = 15.0f, AileronTurnRate = 300f, ElevatorTurnRate = 3f, Forsage = forsage, RudderTurnRate = 100f, }); break; case ModelEnum.DariaKlochko: forsage = GameObject.FindObjectOfType <Forsage>(); _physicsModel = new DariaKlochkoModel(_aircraft, Vector3.zero, new DariaKlochkoModelData { ControlRate = 10f, DeadZone = 0.2f, Lerp = 0.03f, MaxTurn = 15.0f, AileronTurnRate = 300f, ElevatorTurnRate = 3f, Forsage = forsage, RudderTurnRate = 100f, }); break; default: throw new System.NotImplementedException(); } }
public static void Flight() { do { switch (ConsoleUserInterface.GetCommand()) { case UserCommands.SpeedUp: Aircraft.Speed += 50; break; case UserCommands.SpeedUpFast: Aircraft.Speed += 150; break; case UserCommands.SpeedDown: Aircraft.Speed -= 50; break; case UserCommands.SpeedDownFast: Aircraft.Speed -= 150; break; case UserCommands.AltitudeUp: Aircraft.Altitude += 250; break; case UserCommands.AltitudeUpFast: Aircraft.Altitude += 500; break; case UserCommands.AltitudeDown: Aircraft.Altitude -= 250; break; case UserCommands.AltitudeDownFast: Aircraft.Altitude -= 500; break; case UserCommands.AddDispatcher: Console.Write("Enter the name of the new dispatcher: "); string name = Console.ReadLine(); Aircraft.AddDispatcher(name); break; case UserCommands.RemoveDispatcher: Console.Write("Enter the number of the dispatcher to be deleted: "); int index = Convert.ToInt32(Console.ReadLine()); Aircraft.RemoveDispatcher(index - 1); break; case UserCommands.Exit: Console.WriteLine("The flight is not completed."); return; } ConsoleUserInterface.PrintFlightInfo(); } while (!Aircraft.Landed); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Flight completed successfully!"); Console.ResetColor(); return; }