private void ContinueMovement(Plane plane, IStation currentStation) { IStation nextStation = simulatorService.GetAvailabelNextStation(currentStation); if (nextStation != null) { ExitedStationOperations(plane); simulatorService.SetPlaneEnteredTime(plane, nextStation); //update new station enterance time MoveToNextStation(nextStation, plane); //move plane ClearStationPlane(currentStation); //clear station simulatorService.InvokeStationCleared(currentStation); //notify listeners station cleared OnStationArrival(nextStation, plane); //Operations after plane move to new station. } else { simulatorService.KeepPlaneWait(plane, currentStation.NextStations, OnNextStationCleared); // if (currentStation is TakeoffRunwayStation) simulatorService.InvokeTakeoffWaiter(plane); } }