Example #1
0
        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();
            }
        }
Example #2
0
        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;
        }