Пример #1
0
        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
            });
        }
Пример #2
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();
            }
        }
Пример #3
0
 public LevelFinishParameters(ILevelFinishStat levelFinishStat)
 {
     LevelFinishStat = levelFinishStat;
     TransitionType  = LevelFinishSceneTransitionType.Stay;
 }