Esempio n. 1
0
        private void OnPuzzleSet(FlipEventArgs args)
        {
            var numPuzzles = Statistics.Instance[Statistics.Stats.TotalPuzzlesPlayed];

            if (numPuzzles == PUZZLES_UNPUZZLED)
            {
                NewBadge(Badge.Unpuzzled);
            }
        }
Esempio n. 2
0
 private void OnLevelSet(FlipEventArgs args)
 {
     if (!HasEarned(Badge.SeenItAll) && dbm.GetPlayedLevels().Count() == LevelManager.NUM_LEVELS)
     {
         NewBadge(Badge.SeenItAll);
     }
     if (!HasEarned(Badge.BackForMore) && args.gameMode == GameMode.RandomPuzzles)
     {
         NewBadge(Badge.BackForMore);
     }
 }
Esempio n. 3
0
        private void OnUndoFinished(FlipEventArgs args)
        {
            var numUndos = Statistics.Instance[Statistics.Stats.FlipsUndone];

            if (numUndos == UNDOS_SECOND_THOUGHTS)
            {
                NewBadge(Badge.SecondThoughts);
            }
            else if (numUndos == UNDOS_ALL_THE_WAY_BACK)
            {
                NewBadge(Badge.AllTheWayBack);
            }
        }
Esempio n. 4
0
        private void OnFlipFinished(FlipEventArgs args)
        {
            var numFlips = Statistics.Instance[Statistics.Stats.FlipsDone];

            if (numFlips == FLIPS_FLIPPER)
            {
                NewBadge(Badge.Flipper);
            }
            else if (numFlips == FLIPS_SUPER_FLIPPER)
            {
                NewBadge(Badge.SuperFlipper);
            }
        }
Esempio n. 5
0
        internal void DoNextFlip(FlipEventArgs args)
        {
            if (moves == null || moves.Count == 0)
            {
                Stop();
                if (Finished != null)
                {
                    Finished(new FlipEventArgs());
                }
                return;
            }
            Move next = moves[0];

            moves.RemoveAt(0);
            controller.Flip(next);
        }
Esempio n. 6
0
        private void OnPuzzleSolved(FlipEventArgs args)
        {
            var info = args.info;

/*
 *          Debug.LogFormat("OnPuzzleSolved, puzzle: {0}, issolved: {1}, moves: {2}, level index: {3}, after solved state: {4}",
 *              args.puzzle, args.isSolved, args.Moves, args.puzzle.level.IndexInType, info.state);
 */
            // All earned, do nothing else
            if (earned.Count == NUM_BADGES)
            {
//                Debug.Log("All badges earned, do nothing");
                return;
            }
            // Star Badges
            int currentStars = manager.Stars;

            if (!HasEarned(Badge.StarGazer) && (currentStars >= STARS_STAR_GAZER && (currentStars - info.newStars) < STARS_STAR_GAZER))
            {
                NewBadge(Badge.StarGazer);
            }
            else if (!HasEarned(Badge.StarCollector) && (currentStars >= STARS_STAR_COLLECTOR && (currentStars - info.newStars) < STARS_STAR_COLLECTOR))
            {
                NewBadge(Badge.StarCollector);
            }
            else if (!HasEarned(Badge.Astronomer) && (currentStars >= STARS_STAR_ASTRONOMER && (currentStars - info.newStars) < STARS_STAR_ASTRONOMER))
            {
                NewBadge(Badge.Astronomer);
            }

            var allLevels  = manager.AllLevels;
            var levelStats = dbm.GetLevelStats(allLevels.Select(l => l.Ref));

            if (info.state.LevelMastered)
            {
                if (!HasEarned(Badge.Binary) && LevelMatches(args.puzzle.level, Level.LevelType.simple, LEVEL_INDEX_BINARY))
                {
                    NewBadge(Badge.Binary);
                }
                else if (!HasEarned(Badge.RainbowWarrior) && LevelMatches(args.puzzle.level, Level.LevelType.simple, LEVEL_INDEX_RAINBOW_WARRIOR))
                {
                    NewBadge(Badge.RainbowWarrior);
                }
            }

            if (info.state.LevelFinished || info.state.LevelMastered)
            {
                if (!HasEarned(Badge.Beginner) && LevelMatches(args.puzzle.level, Level.LevelType.simple, LEVEL_INDEX_BEGINNER))
                {
                    NewBadge(Badge.Beginner);
                }

                var numFinishedLevels = levelStats.Values.Aggregate(0, (s, lstat) => {
                    return(s + (((lstat.State == SolvedState.Finished) || (lstat.State == SolvedState.Mastered)) ? 1 : 0));
                });

                if (!HasEarned(Badge.Initiated) && numFinishedLevels == NUM_LEVELS_FINISHED_INITIATED)
                {
                    NewBadge(Badge.Initiated);
                }
                else if (!HasEarned(Badge.Advanced) && numFinishedLevels == NUM_LEVELS_FINISHED_ADVANCED)
                {
                    NewBadge(Badge.Advanced);
                }
            }

            if (info.state.TypeFinished)
            {
                // check only the finished that corresponds to this type
                var type  = args.puzzle.level.type;
                var badge = typeFinishedBadges[type];
                if (!HasEarned(badge))
                {
                    NewBadge(badge);
                }
            }

            // Type mastered badges
            if (info.state.TypeMastered)
            {
                // check only the finished that corresponds to this type
                var type  = args.puzzle.level.type;
                var badge = typeMasteredBadges[type];
                if (!HasEarned(badge))
                {
                    NewBadge(badge);
                }
            }

            // Done It All: finished at least one puzzle from each level
            if (!HasEarned(Badge.DoneItAll) && info.newStars > 0 &&
                dbm.GetLevelsContaining(PuzzleSolvedState.Ok, PuzzleSolvedState.Good, PuzzleSolvedState.Perfect).Count() == LevelManager.NUM_LEVELS)
            {
                NewBadge(Badge.DoneItAll);
            }

            if (!HasEarned(Badge.MasterOfTheUniverse) && info.state.AllLevelsMastered)
            {
                NewBadge(Badge.MasterOfTheUniverse);
            }
        }