using System.Threading.Tasks; using FlowScope.Flow; using FlowScope.UI; namespace FlowScope.Samples.MainMenuP0 { public sealed class MainMenuFeature : FeatureBase { private readonly IUIScreenNavigator _screenNavigator; private readonly PlayerData _playerData; private MainMenuViewModel _viewModel; public MainMenuFeature(IUIScreenNavigator screenNavigator, PlayerData playerData) { _screenNavigator = screenNavigator; _playerData = playerData; } public override Task LoadAsync(FeatureContext context) { base.LoadAsync(context); _viewModel = new MainMenuViewModel(_playerData); return Task.CompletedTask; } public override async Task EnterAsync(FeatureContext context) { await _screenNavigator.PushAsync( _viewModel, context.CancellationToken); } public override Task ExitAsync(FeatureContext context) { _screenNavigator.Clear(); return base.ExitAsync(context); } public override void Dispose() { _viewModel = null; base.Dispose(); } } }