private void OnPuzzleSet(FlipEventArgs args) { var numPuzzles = Statistics.Instance[Statistics.Stats.TotalPuzzlesPlayed]; if (numPuzzles == PUZZLES_UNPUZZLED) { NewBadge(Badge.Unpuzzled); } }
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); } }
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); } }
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); } }
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); }
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); } }