public virtual void StartMenuScene(User user, ILoadingScreen loadingScreen, MenuArea menuArea)
        {
            ImageHolder.BeginHoldingData();
            var categories    = MenuInfoReader.GetMenuEncountersInfo(user);
            var menuSceneInfo = new LoadingMenuSceneInfo(user, loadingScreen, menuArea, categories);

            MenuSceneStarter.StartScene(menuSceneInfo);
        }
        protected virtual void ReturnToMainMenu()
        {
            ImageHolder.BeginHoldingData();
            var sceneInfo     = WriterSceneInfoSelectedListener.CurrentValue.SceneInfo;
            var categories    = MenuInfoReader.GetMenuEncountersInfo(sceneInfo.User);
            var menuSceneInfo = new LoadingMenuSceneInfo(sceneInfo.User, sceneInfo.LoadingScreen, MenuArea.InitialSelection, categories);

            MenuSceneStarter.StartScene(menuSceneInfo);
        }
        protected virtual WaitableTask <IMenuEncountersInfo> GetMenuEncountersInfo(
            UserEncounter userEncounter)
        {
            var task       = new WaitableTask <IMenuEncountersInfo>();
            var categories = MenuInfoReader.GetMenuEncountersInfo(userEncounter.User);

            categories.AddOnCompletedListener((result) =>
                                              CompleteMenuEncountersInfoTask(task, result, userEncounter));
            return(task);
        }