public void StatGameLevelFinished(GameLevelInfo gameLevelInfo, ILevelFinishStat levelFinishStat) { if (InfoResolver.Resolve <FortInfo>().Analytic.AnalyticsProvider == null) { return; } if (!InfoResolver.Resolve <FortInfo>().Analytic.StatGameLevelFinished) { return; } GameLevelCategory gameLevelCategory = InfoResolver.Resolve <FortInfo>().GameLevel.LevelCategoriesParentMap[gameLevelInfo.Id]; InfoResolver.Resolve <FortInfo>() .Analytic.AnalyticsProvider.StateEvent(gameLevelInfo.Name, gameLevelInfo.DisplayName, "GameLevelFinished", new GameLevelFinishedAnalyticStat { LevelFinishStat = levelFinishStat, GameLevelId = gameLevelInfo.Id, GameLevelName = gameLevelInfo.Name, GameLevelCategoryId = gameLevelCategory.Id, GameLevelCategoryName = gameLevelCategory.Name }); }
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 LevelFinishParameters(ILevelFinishStat levelFinishStat) { LevelFinishStat = levelFinishStat; TransitionType = LevelFinishSceneTransitionType.Stay; }