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); }
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 }
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); }
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); } }
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 }
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 }
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 } }
public TieredAchievementModel(TieredAchievement achievement) { Id = (int)achievement; }
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 } }