少年修仙传客户端代码仓库
client_linchunjie
2018-08-27 d106f11e7f44c748f595da36e0cdfd54849649e6
System/Dungeon/AchieveTargetBehaviour.cs
@@ -1,144 +1,144 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.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 (GeneralConfig.Instance.ancientGrandTotalAchievements.Contains(achieveId)
                        || GeneralConfig.Instance.ancientContinueKillAchievements.Contains(achieveId))
                    {
                        ShowAncientAchieve();
                    }
                    break;
            }
        }
        private void ShowAncientAchieve()
        {
            ParseAchieve(GeneralConfig.Instance.ancientGrandTotalAchievements, m_Achievements[0]);
            ParseAchieve(GeneralConfig.Instance.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 = ConfigManager.Instance.GetTemplate<SuccessConfig>(presentAchieve.id);
                _achievement.m_ContainerUnComplete.gameObject.SetActive(true);
                _achievement.m_ContainerComplete.gameObject.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.gameObject.SetActive(true);
                    ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false,
                       (ulong)presentAchieve.rewardItem[0].count, presentAchieve.rewardItem[0].bind);
                    _achievement.m_ItemCell.Init(_itemCellModel);
                    _achievement.m_ItemCell.cellBtn.RemoveAllListeners();
                    _achievement.m_ItemCell.cellBtn.onClick.AddListener(() =>
                    {
                        if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)
                        {
                            var _item = presentAchieve.rewardItem[0];
                            ItemAttrData _itemAttr = new ItemAttrData(_item.id, false, (ulong)_item.count, -1, _item.bind);
                            ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(_itemAttr);
                        }
                    });
                }
                else
                {
                    _achievement.m_ItemCell.gameObject.SetActive(false);
                }
            }
            else
            {
                _achievement.m_ContainerUnComplete.gameObject.SetActive(false);
                _achievement.m_ContainerComplete.gameObject.SetActive(true);
                _achievement.m_ItemCell.cellBtn.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;
        }
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.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 (GeneralConfig.Instance.ancientGrandTotalAchievements.Contains(achieveId)
                        || GeneralConfig.Instance.ancientContinueKillAchievements.Contains(achieveId))
                    {
                        ShowAncientAchieve();
                    }
                    break;
            }
        }
        private void ShowAncientAchieve()
        {
            ParseAchieve(GeneralConfig.Instance.ancientGrandTotalAchievements, m_Achievements[0]);
            ParseAchieve(GeneralConfig.Instance.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 = Config.Instance.Get<SuccessConfig>(presentAchieve.id);
                _achievement.m_ContainerUnComplete.gameObject.SetActive(true);
                _achievement.m_ContainerComplete.gameObject.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.gameObject.SetActive(true);
                    ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false,
                       (ulong)presentAchieve.rewardItem[0].count, presentAchieve.rewardItem[0].bind);
                    _achievement.m_ItemCell.Init(_itemCellModel);
                    _achievement.m_ItemCell.cellBtn.RemoveAllListeners();
                    _achievement.m_ItemCell.cellBtn.onClick.AddListener(() =>
                    {
                        if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)
                        {
                            var _item = presentAchieve.rewardItem[0];
                            ItemAttrData _itemAttr = new ItemAttrData(_item.id, false, (ulong)_item.count, -1, _item.bind);
                            ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(_itemAttr);
                        }
                    });
                }
                else
                {
                    _achievement.m_ItemCell.gameObject.SetActive(false);
                }
            }
            else
            {
                _achievement.m_ContainerUnComplete.gameObject.SetActive(false);
                _achievement.m_ContainerComplete.gameObject.SetActive(true);
                _achievement.m_ItemCell.cellBtn.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;
        }
    }
}