public ApproachChecker(Player sender, Airfield airfield, string voice, List <NavigationPoint> wayPoints,
                               ConcurrentQueue <byte[]> responseQueue)
        {
            _sender          = sender;
            _airfield        = airfield;
            _voice           = voice;
            _wayPoints       = wayPoints;
            _responseQueue   = responseQueue;
            _lastInstruction = DateTime.Now;
            _startTime       = DateTime.Now;

            if (_airfield.ApproachingAircraft.ContainsKey(_sender.Id))
            {
                _airfield.ApproachingAircraft[_sender.Id].Stop();
                _airfield.ApproachingAircraft.TryRemove(_sender.Id, out _);
            }

            _approachState = new StateMachine <State, Trigger>(State.Flying);
            ConfigureStateMachine();

            _approachState.FireAsync(Trigger.StartInbound);

            _airfield.ApproachingAircraft[_sender.Id] = this;
            ApproachChecks[_sender.Id] = this;
        }
Beispiel #2
0
        public TaxiProgressChecker(Player sender, Airfield airfield, string voice, List <NavigationPoint> taxiPoints,
                                   ConcurrentQueue <byte[]> responseQueue)
        {
            _sender        = sender;
            _airfield      = airfield;
            _voice         = voice;
            _taxiPoints    = taxiPoints;
            _responseQueue = responseQueue;

            if (_airfield.TaxiingAircraft.ContainsKey(_sender.Id))
            {
                _airfield.TaxiingAircraft[_sender.Id].Stop();
                _airfield.TaxiingAircraft.TryRemove(_sender.Id, out _);
            }

            // Do once immediately so we get the current taxi-point
            Task.Run(async() => await CheckAsync());

            _checkTimer          = new Timer(CheckInterval);
            _checkTimer.Elapsed += async(s, e) => await CheckAsync();

            _checkTimer.Start();

            _airfield.TaxiingAircraft[_sender.Id] = this;
            TaxiChecks[_sender.Id] = this;
        }
Beispiel #3
0
        public AtcProgressChecker(Player sender, Airfield airfield, string voice, List <NavigationPoint> wayPoints,
                                  ConcurrentQueue <byte[]> responseQueue)
        {
            _sender          = sender;
            _airfield        = airfield;
            _voice           = voice;
            _wayPoints       = wayPoints;
            _responseQueue   = responseQueue;
            _lastInstruction = DateTime.Now;
            _startTime       = DateTime.Now;

            if (!_airfield.ControlledAircraft.ContainsKey(_sender.Id))
            {
                return;
            }
            _airfield.ControlledAircraft[_sender.Id].Stop();
            _airfield.ControlledAircraft.TryRemove(_sender.Id, out _);
        }