private void AddAchievement(AchievementModel data) { if (data != null) { if (!Achievements.ContainsKey(data.ID)) { Achievement ach = Achievement.CreateAchievement(data, this); if (ach != null) { ach.OnAchievementCompleted += OnAchievementCompleted; Achievements.Add(data.ID, ach); m_AchievementsIDs.Add(data.ID); //save reference for tagged properties if (!string.IsNullOrEmpty(data.tag)) { if (!m_AchievementsByTag.ContainsKey(data.tag)) { m_AchievementsByTag.Add(data.tag, new List <Achievement>(10)); } m_AchievementsByTag[data.tag].Add(ach); } } } else { Debug.Log("Trying to add new achievement, but the collection already contains the same property: " + data.ID); } } else { Debug.Log("Trying to add new achievement with NULL data, skipping..."); } }
/// <summary> /// A factory to create achievement from specified data /// </summary> /// <param name="data">Not null please</param> /// <param name="manager">NOT NULL also</param> /// <returns></returns> public static Achievement CreateAchievement(AchievementModel data, AchievementManager manager) { if (data == null) { Debug.LogWarning("Trying to create achievement with null data, skipping..."); return(null); } if (manager == null) { Debug.LogWarning("Trying to create achievement without manager, skipping..."); return(null); } Achievement ach = new Achievement(data); ach.m_Manager = manager; if (!data.isUnlocked) { ach.Initialize(); //ach.allOperators = new Dictionary<OperatorModel, Operator>(5); //ach.m_OperatorCompleted = 0; //ach.m_TotalOperator = data.listConditions.Count; ////Debug.Log("Creating achievement: " + data.ID + ", num condition: " + data.listConditions.Count); //for (int i = 0; i < listOperators.Count; i++){ // Operator op = manager.AddOperator(listOperators[i]); // if (op != null) { // op.SetOperatorCompleteCallBack(ach.OnOperatorCompleted); // op.SetOperatorUndoneCallback(ach.OnOperatorUndone); // ach.allOperators.Add(listOperators[i], op); // } // else { // Debug.Log("Can NOT find suitable operator, creating Achievement failed for " + data.ID); // return null; // } //} } return(ach); }
private Achievement(AchievementModel data) { m_Data = data; m_OperatorCompleted = 0; }