| using System;  | 
| using System.Collections;  | 
| using System.Collections.Generic;  | 
|   | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
| namespace vnxbqy.UI  | 
| {  | 
|     public class AchieveTargetBehaviour : MonoBehaviour  | 
|     {  | 
|         [SerializeField] List<AchievementDesc> m_Achievements;  | 
|   | 
|         private int currentDungeonId;  | 
|   | 
|         AchievementModel m_AchievementModel;  | 
|         AchievementModel achievementModel {  | 
|             get {  | 
|                 return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>());  | 
|             }  | 
|         }  | 
|   | 
|         DungeonModel m_DungeonModel;  | 
|         DungeonModel dungeonModel {  | 
|             get {  | 
|                 return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>());  | 
|             }  | 
|         }  | 
|   | 
|         public void Init(int mapId)  | 
|         {  | 
|             currentDungeonId = mapId;  | 
|             ShowAncientAchieve();  | 
|         }  | 
|   | 
|         private void OnEnable()  | 
|         {  | 
|             achievementModel.achievementCompletedEvent += UpdateAchieveEvent;  | 
|             achievementModel.achievementProgressUpdateEvent += UpdateAchieveEvent;  | 
|         }  | 
|   | 
|         private void UpdateAchieveEvent(int achieveId)  | 
|         {  | 
|             switch (currentDungeonId)  | 
|             {  | 
|                 case 31160:  | 
|                     if (GeneralDefine.ancientGrandTotalAchievements.Contains(achieveId)  | 
|                         || GeneralDefine.ancientContinueKillAchievements.Contains(achieveId))  | 
|                     {  | 
|                         ShowAncientAchieve();  | 
|                     }  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private void ShowAncientAchieve()  | 
|         {  | 
|             ParseAchieve(GeneralDefine.ancientGrandTotalAchievements, m_Achievements[0]);  | 
|             ParseAchieve(GeneralDefine.ancientContinueKillAchievements, m_Achievements[1]);  | 
|         }  | 
|   | 
|         private void ParseAchieve(List<int> _achieveList, AchievementDesc _achievement)  | 
|         {  | 
|             Achievement presentAchieve = null;  | 
|             int _index = 0;  | 
|             if (_achieveList != null)  | 
|             {  | 
|                 Achievement achievement;  | 
|                 for (int i = 0; i < _achieveList.Count; i++)  | 
|                 {  | 
|                     if (achievementModel.TryGetAchievement(_achieveList[i], out achievement))  | 
|                     {  | 
|                         if (!Achievement.IsReach(_achieveList[i], achievement.progress) && !achievement.completed)  | 
|                         {  | 
|                             presentAchieve = achievement;  | 
|                             _index = i;  | 
|                             break;  | 
|                         }  | 
|                     }  | 
|                 }  | 
|             }  | 
|             if (presentAchieve != null)  | 
|             {  | 
|                 SuccessConfig _tagSuccessModel = SuccessConfig.Get(presentAchieve.id);  | 
|                 _achievement.m_ContainerUnComplete.SetActive(true);  | 
|                 _achievement.m_ContainerComplete.SetActive(false);  | 
|                 _achievement.m_AwardDesc.text = _tagSuccessModel.Describe.Replace("@NeedCnt@", string.Empty);  | 
|                 _achievement.m_AchieveTarget.text = StringUtility.Contact(presentAchieve.progress, "/", _tagSuccessModel.NeedCnt);  | 
|                 if (_achievement.m_AchieveProgressDesc != null)  | 
|                 {  | 
|                     _achievement.m_AchieveProgressDesc.text = Language.Get("SGZC_Text_2", _tagSuccessModel.Condition.Length > 0 ? _tagSuccessModel.Condition[0] : 0);  | 
|                 }  | 
|                 if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)  | 
|                 {  | 
|                     _achievement.m_ItemCell.SetActive(true);  | 
|                     ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false, (ulong)presentAchieve.rewardItem[0].count);  | 
|                     _achievement.m_ItemCell.Init(_itemCellModel);  | 
|                     _achievement.m_ItemCell.button.RemoveAllListeners();  | 
|                     _achievement.m_ItemCell.button.onClick.AddListener(() =>  | 
|                     {  | 
|                         if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)  | 
|                         {  | 
|                             var _item = presentAchieve.rewardItem[0];  | 
|                             ItemTipUtility.Show(_item.id);  | 
|                         }  | 
|                     });  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     _achievement.m_ItemCell.SetActive(false);  | 
|                 }  | 
|             }  | 
|             else  | 
|             {  | 
|                 _achievement.m_ContainerUnComplete.SetActive(false);  | 
|                 _achievement.m_ContainerComplete.SetActive(true);  | 
|                 _achievement.m_ItemCell.button.RemoveAllListeners();  | 
|             }  | 
|         }  | 
|   | 
|         private void OnDisable()  | 
|         {  | 
|             achievementModel.achievementCompletedEvent -= UpdateAchieveEvent;  | 
|             achievementModel.achievementProgressUpdateEvent -= UpdateAchieveEvent;  | 
|         }  | 
|   | 
|         [Serializable]  | 
|         public class AchievementDesc  | 
|         {  | 
|             public ItemCell m_ItemCell;  | 
|             public Text m_AwardDesc;  | 
|             public Text m_AchieveTarget;  | 
|             public Text m_AchieveProgressDesc;  | 
|             public RectTransform m_ContainerUnComplete;  | 
|             public RectTransform m_ContainerComplete;  | 
|         }  | 
|     }  | 
| }  | 
|   |