public async Task Unload()
        {
            await gameLoader.Unload();

            currentGame           = null;
            gameModeSwitchHandler = null;
        }
        public async Task PlayGame(CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            var gameUI = (IGameView)(await windowNavigation.Show <IGameView>(cancellationToken));

            gameModeSwitchHandler = new GameModeSwitchHandler(gameUI);
            _ = currentGame.Init(cancellationToken);

            gameModeSwitchHandler.Init(true);
            await Task.WhenAny(gameEndConditions.Select(gec => gec.WaitForGameEndCondition(cancellationToken)));

            gameModeSwitchHandler.Stop();

            await Task.WhenAll(windowNavigation.Hide <IGameView>(cancellationToken), currentGame.End(cancellationToken));
        }