Beispiel #1
0
        public ILevelFinishStat GetGameFinishStat(GameLevelInfo level)
        {
            GameSavedData gameSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <GameSavedData>() ??
                                          new GameSavedData();

            if (gameSavedData.LevelFinishStats.ContainsKey(level.Id))
            {
                return(gameSavedData.LevelFinishStats[level.Id]);
            }
            return(null);
        }
Beispiel #2
0
        public GameLevelInfo GetLastFinishedLevel()
        {
            GameSavedData gameSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <GameSavedData>() ??
                                          new GameSavedData();

            if (string.IsNullOrEmpty(gameSavedData.LastFinishedLevelId))
            {
                return(null);
            }
            if (!FortInfo.Instance.GameLevel.GameLevelInfos.ContainsKey(gameSavedData.LastFinishedLevelId))
            {
                return(null);
            }
            return(FortInfo.Instance.GameLevel.GameLevelInfos[gameSavedData.LastFinishedLevelId]);
        }
Beispiel #3
0
        public AsyncOperation ContinueLoadGameLevelAsync()
        {
            GameSavedData gameSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <GameSavedData>() ??
                                          new GameSavedData();

            gameSavedData.LastLoadedLevelId = _lastLoadGameAsync.Id;
            ServiceLocator.Resolve <IStorageService>().UpdateData(gameSavedData);
            return
                (ServiceLocator.Resolve <ISceneLoaderService>()
                 .LoadAsync(new SceneLoadParameters(ResolveGameLevelSceneName(_lastLoadGameAsync))
            {
                AddToSceneStack = false,
                CaptureReturnKey = false,
                Context = GetLastLoadedLevel(),
                FlushSceneStack = true
            }));
        }
Beispiel #4
0
        public void GameLevelFinished(LevelFinishParameters parameters)
        {
            _lastFinishStat = parameters.LevelFinishStat;
            GameLevelInfo level = GetLastLoadedLevel();

            ServiceLocator.Resolve <IAnalyticsService>().StatGameLevelFinished(level, parameters.LevelFinishStat);
            GameSavedData gameSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <GameSavedData>() ??
                                          new GameSavedData();

            gameSavedData.LastFinishedLevelId = level.Id;
            if (gameSavedData.LevelFinishStats.ContainsKey(level.Id))
            {
                if (gameSavedData.LevelFinishStats[level.Id].CompareTo(parameters.LevelFinishStat) == -1)
                {
                    gameSavedData.LevelFinishStats[level.Id] = parameters.LevelFinishStat;
                }
            }
            else
            {
                gameSavedData.LevelFinishStats[level.Id] = parameters.LevelFinishStat;
            }
            ServiceLocator.Resolve <IStorageService>().UpdateData(gameSavedData);
            switch (parameters.TransitionType)
            {
            case LevelFinishSceneTransitionType.Stay:
                break;

            case LevelFinishSceneTransitionType.MoveToScene:
                ServiceLocator.Resolve <ISceneLoaderService>().Load(new SceneLoadParameters(parameters.TransitionScene)
                {
                    AddToSceneStack  = true,
                    CaptureReturnKey = false,
                    Context          = GetLastLoadedLevel(),
                    FlushSceneStack  = true
                });
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #5
0
        public void LoadGameLevel(GameLevelInfo level)
        {
            string gameLevelSceneName = ResolveGameLevelSceneName(level);

            if (string.IsNullOrEmpty(gameLevelSceneName))
            {
                throw new Exception(string.Format("Scene name of Level {0} cannot be resloved.", level.Name));
            }
            GameSavedData gameSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <GameSavedData>() ??
                                          new GameSavedData();

            gameSavedData.LastLoadedLevelId = level.Id;
            ServiceLocator.Resolve <IStorageService>().UpdateData(gameSavedData);
            ServiceLocator.Resolve <ISceneLoaderService>().Load(new SceneLoadParameters(gameLevelSceneName)
            {
                AddToSceneStack  = false,
                CaptureReturnKey = false,
                Context          = level,
                FlushSceneStack  = true
            });
        }