private void OnCloseScreenRequest(CloseScreenRequestSignal signal) { var subjectScreenStackItem = _navigationStack.FirstOrDefault(screenStackItem => screenStackItem.ScreenController == signal.ScreenController); if (subjectScreenStackItem == null) { Debug.LogWarningFormat("Trying to close a screen '{0}', but it doesn't exist in the navigation stack!", signal.ScreenController.GetType().ToString()); return; } // If the closed screen was the screen in front, focus the next screen var frontScreen = _navigationStack.Last(); if (signal.ScreenController == frontScreen.ScreenController) { var newFrontScreenStackItem = _navigationStack[_navigationStack.Count - 2]; newFrontScreenStackItem.ScreenController.Focus(); _currentFocussed = newFrontScreenStackItem; } // Close the screen subjectScreenStackItem.ScreenController.Close(); }
private void OnCloseScreenRequestSignal(CloseScreenRequestSignal signal) { CloseScreen(signal.Screen, signal.Animation); }