Esempio n. 1
0
        // ========================================================================== //

        /* 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);
            }
        }