// ========================================================================== // /* public - [Do~Something] Function */ public void DoInit <TAchievementData>(TAchievementData[] arrSourceData, IAchievementLogic[] arrAchievementLogicList, params IAchievementProgressData[] arrProgressData) where TAchievementData : IAchievementData { Dictionary <string, IAchievementData> mapAchivementData_Source; Dictionary <string, IAchievementProgressData> mapAchievementData_Progress; _mapAchievementData.Clear(); _listAchievementLogicList = arrAchievementLogicList.OrderBy(p => p.iAchievementLogic_Order).ToList(); try { mapAchivementData_Source = arrSourceData.ToDictionary(p => p.strAchievementKey, p => (IAchievementData)p); mapAchievementData_Progress = arrProgressData.ToDictionary(p => p.strAchievementKey); } catch (System.Exception e) { Debug.LogError($"{nameof(AchievementDataManager)}-{nameof(DoInit)} - Fail - {e}", this); return; } foreach (var pQuestSource in mapAchivementData_Source.Values) { string strQuestKey = pQuestSource.strAchievementKey; AchievementData pQuestData = new AchievementData(pQuestSource, _listAchievementLogicList); pQuestData.OnUpdateAchieve.Subscribe += OnUpdateAchievement_Subscribe; IAchievementProgressData pProgressData; if (mapAchievementData_Progress.TryGetValue(strQuestKey, out pProgressData)) { pQuestData.Event_SetProgressData(pProgressData); } _mapAchievementData.Add(strQuestKey, pQuestData); } }