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); }
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]); }
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 })); }
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(); } }
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 }); }