public ChallengeView(ChallengeData data, ChallengeProgress progress, int id) { Data = data; Progress = progress; progress.PropertyChanged += SubView_PropertyChanged; Id = id; if (data.Type == ChallengeType.Progressable) { subChallenges = new ObservableCollection<SubChallengeView>(); } }
public List<ChallengeProgress> createChallengeProgressListFromChallengeList(List<ChallengeData> dataList) { var progressList = new List<ChallengeProgress>(); foreach (var data in dataList) { var progress = new ChallengeProgress(data.Type); if (data.Type == ChallengeType.Progressable) { foreach (var subData in data.SubChallenges) { progress.AddSubChallengeProgress(new SubChallengeProgress()); } } progressList.Add(progress); } return progressList; }
internal void toogleChallengeIsDone(ChallengeData data, ChallengeProgress progress) { switch (data.Type) { case ChallengeType.Binary: progress.IsDone = !progress.IsDone; break; case ChallengeType.Progressable: //Determine current progress var currentProgress = 0; foreach (var item in progress.SubChallengesProgress) { if (item.CurrentCompletion != SubChallengeCompletionType.Not) { currentProgress++; } } if (currentProgress >= data.NeedForCompletion) { //Need to uncomplete subs foreach (var item in progress.SubChallengesProgress.Where(x => x.CurrentCompletion == SubChallengeCompletionType.Auto)) { item.CurrentCompletion = SubChallengeCompletionType.Not; } } else { //Need to complete subs foreach (var item in progress.SubChallengesProgress) { if (currentProgress < data.NeedForCompletion && item.CurrentCompletion == SubChallengeCompletionType.Not) { item.CurrentCompletion = SubChallengeCompletionType.Auto; currentProgress++; } } } break; } }