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; }
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; }
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 _); }