private void HandleTierProgress(TieredAchievement achievement)
        {
            var vma = Achievements.First(a => a.Achievement == achievement);
            var sma = achievementService.GetTieredAchievements().Find(a => (TieredAchievement)a.Id == achievement);

            vma.UpdateFromStorageModel(sma);
        }
Exemple #2
0
        public static string TieredAchievementCompleteIcon(TieredAchievement achievement)
        {
            if (TieredAchievementCompleteIcons.ContainsKey(achievement))
            {
                return(TieredAchievementCompleteIcons[achievement]);
            }
#if DEBUG
            throw new ArgumentOutOfRangeException(nameof(achievement), achievement, $"No icon for {achievement}");
#else
            return("");
#endif
        }
Exemple #3
0
        public static int GetProgressiveGoal(this TieredAchievement achievement, Tier tier)
        {
            var goal = 0;

            foreach (var t in TierExtensions.GetAll())
            {
                if (t > tier)
                {
                    break;
                }

                goal += achievement.GetGoal(t);
            }
            return(goal);
        }
Exemple #4
0
        private void AchievementUnlocked(TieredAchievement achievement, Tier tier)
        {
            BulletinService.Instance.AddBulletin(
                AppText.bulletin_achievement_title,
                $"{achievement.Details().CompletedDescription} {(achievement.GetGoal(tier) > 1 ? $"{achievement.GetGoal(tier)} ganger" : "")}\n\n" +
                $"{achievement.GetUnlockedText(tier)}",
                Images.TieredAchievementCompleteIcon(achievement),
                tier: (int)tier);

            if (!App.IsForeground && Settings.WillSendNotifications)
            {
                var id = (Config.NotificationIdAchievement + ((int)achievement * 10) + (int)tier);
                CrossLocalNotifications.Current.Show(AppText.notification_title, AppText.notification_achievement_unlocked, id);
            }
        }
Exemple #5
0
        public static TieredAchievementDetails Details(this TieredAchievement achievement)
        {
            if (TieredAchievements.ContainsKey(achievement))
            {
                return(TieredAchievements[achievement]);
            }
#if DEBUG
            throw new ArgumentOutOfRangeException(nameof(achievement), achievement, null);
#else
            return(new TieredAchievementDetails()
            {
                Title = "Uknown",
                Description = "Uknown",
                CompletedDescription = "Uknown",
            });
#endif
        }
Exemple #6
0
        public static string GetUnlockedText(this TieredAchievement achievement, Tier tier)
        {
            if (CompletedDictionary.ContainsKey(achievement))
            {
                if (CompletedDictionary[achievement].ContainsKey(tier))
                {
                    return(CompletedDictionary[achievement][tier]);
                }
#if DEBUG
                throw new ArgumentOutOfRangeException(nameof(tier), tier, null);
#else
                return("");
#endif
            }
#if DEBUG
            throw new ArgumentOutOfRangeException(nameof(achievement), achievement, null);
#else
            return("");
#endif
        }
Exemple #7
0
        public static int GetSubGoal(this TieredAchievement achievement)
        {
            switch (achievement)
            {
            case TieredAchievement.ReachedGoal:
                return(0);

            case TieredAchievement.ThirtyMinutes:
                return(30);

            case TieredAchievement.ReachedGoalFiveDaysInARow:
                return(5);

            default:
#if DEBUG
                throw new ArgumentOutOfRangeException(nameof(achievement), achievement, null);
#else
                return(int.MaxValue);
#endif
            }
        }
Exemple #8
0
 public TieredAchievementModel(TieredAchievement achievement)
 {
     Id = (int)achievement;
 }
Exemple #9
0
        public static int GetGoal(this TieredAchievement achievement, Tier tier)
        {
            switch (achievement)
            {
            case TieredAchievement.ReachedGoal:
                switch (tier)
                {
                case Tier.Bronze:
                    return(5);

                case Tier.Silver:
                    return(15);

                case Tier.Gold:
                    return(30);

                case Tier.Complete:
                    return(int.MaxValue);

                default:
#if DEBUG
                    throw new ArgumentOutOfRangeException(nameof(tier), tier, null);
#else
                    return(int.MaxValue);
#endif
                }

            case TieredAchievement.ThirtyMinutes:
                switch (tier)
                {
                case Tier.Bronze:
                    return(5);

                case Tier.Silver:
                    return(15);

                case Tier.Gold:
                    return(30);

                case Tier.Complete:
                    return(int.MaxValue);

                default:
#if DEBUG
                    throw new ArgumentOutOfRangeException(nameof(tier), tier, null);
#else
                    return(int.MaxValue);
#endif
                }

            case TieredAchievement.ReachedGoalFiveDaysInARow:
                switch (tier)
                {
                case Tier.Bronze:
                    return(1);

                case Tier.Silver:
                    return(3);

                case Tier.Gold:
                    return(6);

                case Tier.Complete:
                    return(int.MaxValue);

                default:
#if DEBUG
                    throw new ArgumentOutOfRangeException(nameof(tier), tier, null);
#else
                    return(int.MaxValue);
#endif
                }

            default:
#if DEBUG
                throw new ArgumentOutOfRangeException(nameof(achievement), achievement, null);
#else
                return(int.MaxValue);
#endif
            }
        }