示例#1
0
        private async Task AddAchievementProgress(TieredAchievementModel achievement, AchievementProgress progress)
        {
            var storedProgress = GetProgressCurrentTier(achievement);

            if (progress.Progress != null)
            {
                foreach (var p in progress.Progress)
                {
                    storedProgress.Progress++;
                    storedProgress.TimeProgressAchieved = p;

                    if (storedProgress.Progress >= achievement.Type.GetGoal(achievement.CurrentTier))
                    {
                        storedProgress.DateTierAchieved = p;
                        await storageService.UpdateTieredAchievementProgress(storedProgress);

                        OnTierChanged?.Invoke(achievement.Type, achievement.CurrentTier);

                        achievement.CurrentTier++;
                        if (achievement.CurrentTier == Tier.Complete)
                        {
                            break;
                        }
                        storedProgress = GetProgressCurrentTier(achievement);
                        storedProgress.TimeProgressAchieved = p;
                        await storageService.UpdateTieredAchievementProgress(storedProgress);
                    }
                }
            }

            if (storedProgress.SubProgress != progress.SubProgress)
            {
                storedProgress.SubProgress = progress.SubProgress;
                OnTierProgress?.Invoke(achievement.Type);
            }
        }
示例#2
0
 public async Task UpdateTieredAchievement(TieredAchievementModel achievement)
 {
     await connection.InsertOrReplaceAsync(achievement, typeof(TieredAchievementModel));
 }
示例#3
0
 private AchievementTierProgressModel GetProgressCurrentTier(TieredAchievementModel a) =>
 GetProgressForTier(a.Id, a.CurrentTier);