public void CheckChallengesForCompletion() { if (currentChallengeLog != null) { SaveDataAccessor saveDataAccessor = new SaveDataAccessor(); Dictionary <int, bool> challengeDictionary = saveDataAccessor.GetDataValue <Dictionary <int, bool> >(SaveKeys.COMPLETED_CHALLENGES_SAVE_KEY); int challengeCount = currentChallengeLog.GetChallengeCount(); for (int i = 0; i < challengeCount; i++) { IChallenge challenge = currentChallengeLog.GetChallengeData(i) as IChallenge; if (challenge != null) { int challengeKey = Challenge.GetChallengeKey(packIndex, levelIndex, i); if (challenge.CheckForCompletedChallenge()) { if (challengeDictionary == null) { challengeDictionary = new Dictionary <int, bool>(); challengeDictionary.Add(challengeKey, true); saveDataAccessor.SetData(SaveKeys.COMPLETED_CHALLENGES_SAVE_KEY, challengeDictionary); DataTracker.dataTracker.SaveData(); } else if (!challengeDictionary.ContainsKey(challengeKey)) { challengeDictionary.Add(challengeKey, true); saveDataAccessor.SetData(SaveKeys.COMPLETED_CHALLENGES_SAVE_KEY, challengeDictionary); DataTracker.dataTracker.SaveData(); } else { challengeDictionary[challengeKey] = true; } } } } } }