少年修仙传客户端代码仓库
client_linchunjie
2019-05-21 09d250ff3df339b247fbae52b0d0c131f6bce340
6863 【2.0】【开发】灵根激活界面优化
3个文件已修改
133 ■■■■ 已修改文件
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA516_tagCMSelectSkillElement.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/ExpertSkillSelectWin.cs 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TreasureSkillModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA516_tagCMSelectSkillElement.cs
@@ -4,7 +4,8 @@
// A5 16 选择技能五行专精 #tagCMSelectSkillElement
public class CA516_tagCMSelectSkillElement : GameNetPackBasic {
    public uint SkillTypeID;    // 专精技能ID
    public uint SkillTypeID;    // 专精技能ID
    public byte DoType;         // 0-激活 1-使用
    public CA516_tagCMSelectSkillElement () {
        combineCmd = (ushort)0x03FE;
@@ -12,7 +13,7 @@
    }
    public override void WriteToBytes () {
        WriteBytes (SkillTypeID, NetDataType.DWORD);
        WriteBytes (SkillTypeID, NetDataType.DWORD);         WriteBytes(DoType, NetDataType.BYTE);
    }
}
System/Skill/ExpertSkillSelectWin.cs
@@ -21,13 +21,17 @@
        [SerializeField] Text m_SkillName;
        [SerializeField] Image m_ReikiIcon;
        [SerializeField] Text m_ReikiPoint;
        [SerializeField] Transform m_ContainerReikiIcon;
        [SerializeField] Image[] m_ReikiIcons;
        [SerializeField] FunctionUnlockFlyObjectTarget m_FlyTarget;
        [SerializeField] Image m_SkillIconSelect;
        [SerializeField] ExpertSkillCyclicScroll m_CyclicScroll;
        [SerializeField] LayoutElement m_LayoutElement;
        [SerializeField] Button m_Active;
        [SerializeField] Text m_ActiveLabel;
        [SerializeField] UIEffect m_ActiveEffect;
        [SerializeField] Button m_Select;
        [SerializeField] UIEffect m_SelectEffect;
        //[SerializeField] Button m_Select;
        //[SerializeField] UIEffect m_SelectEffect;
        [SerializeField] Button m_Close1;
        [SerializeField] Button m_Close2;
@@ -61,6 +65,10 @@
        List<int> datas = new List<int>();
        FunctionUnlockFlyObject flyObject = null;
        bool flying = false;
        TreasureSkillModel model { get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -70,7 +78,7 @@
        protected override void AddListeners()
        {
            //m_Controller.OnRefreshCell += OnRefreshCell;
            m_Select.AddListener(OnSelect);
            //m_Select.AddListener(OnSelect);
            m_Close1.AddListener(CloseClick);
            m_Close2.AddListener(CloseClick);
            m_Active.AddListener(OnActiveSkill);
@@ -87,9 +95,18 @@
            m_CyclicScroll.enabled = false;
            if (flyObject != null)
            {
                GameObject.Destroy(flyObject);
                flyObject = null;
            }
            flying = false;
            Display();
            model.expertActiveRefresh += ExpertActiveRefresh;
            model.expertSkillRefresh += ExpertSkillRefresh;
        }
        protected override void OnAfterOpen()
@@ -103,6 +120,7 @@
            StopAllCoroutines();
            model.expertActiveRefresh -= ExpertActiveRefresh;
            model.expertSkillRefresh -= ExpertSkillRefresh;
        }
        protected override void OnAfterClose()
@@ -116,6 +134,7 @@
            DisplayExperts();
            DisplaySelect();
            DisplayDetail();
            DisplaySelectReiki();
        }
        void SetDefaultSelect()
@@ -229,7 +248,7 @@
            var used = selectExpertSkill == selectExpert;
            m_SelectEffect.StopImediatly();
            //m_SelectEffect.StopImediatly();
            TreasurePotential expert;
            if (model.TryGetPotential(selectExpert, out expert))
@@ -238,16 +257,16 @@
                var satisfyActive = model.SatisfyActiveExpert(selectExpert, out error);
                var activeLevel = 0;
                model.TryGetExpertActiveLevel(selectExpert, out activeLevel);
                m_Select.gameObject.SetActive(activeLevel > 0 && !satisfyActive && !used);
                //m_Select.gameObject.SetActive(activeLevel > 0 && !satisfyActive && !used);
                m_Active.gameObject.SetActive(satisfyActive || error == 3);
                if (m_Select.gameObject.activeSelf)
                {
                    if (selectExpertSkill == 0)
                    {
                        m_SelectEffect.Play();
                    }
                }
                //if (m_Select.gameObject.activeSelf)
                //{
                //    if (selectExpertSkill == 0)
                //    {
                //        m_SelectEffect.Play();
                //    }
                //}
                //m_Active.SetColorful(m_ActiveLabel, satisfyActive);
@@ -265,6 +284,29 @@
            }
        }
        void DisplaySelectReiki()
        {
            var selectExpertSkill = 0;
            model.TryGetExpertSkill(selectSkillId, out selectExpertSkill);
            m_ContainerReikiIcon.gameObject.SetActive(selectExpertSkill != 0);
            m_SkillIconSelect.gameObject.SetActive(selectExpertSkill != 0);
            if (selectExpertSkill != 0)
            {
                var skillConfig = SkillConfig.Get(selectExpertSkill);
                m_SkillIconSelect.SetSprite(skillConfig.IconName);
                var property = skillConfig.RequireProperty();
                m_ReikiIcons[0].gameObject.SetActive(property == (int)PropertyType.Mater);
                m_ReikiIcons[1].gameObject.SetActive(property == (int)PropertyType.Wood);
                m_ReikiIcons[2].gameObject.SetActive(property == (int)PropertyType.Water);
                m_ReikiIcons[3].gameObject.SetActive(property == (int)PropertyType.Fire);
                m_ReikiIcons[4].gameObject.SetActive(property == (int)PropertyType.Earth);
            }
        }
        void DisplayAnimation()
        {
            m_PositionTween.Play();
@@ -277,6 +319,7 @@
            {
                var pak = new CA516_tagCMSelectSkillElement();
                pak.SkillTypeID = (uint)selectExpert;
                pak.DoType = 1;
                GameNetSystem.Instance.SendInfo(pak);
            }
            CloseImmediately();
@@ -298,16 +341,29 @@
            }
            var pak = new CA516_tagCMSelectSkillElement();
            pak.SkillTypeID = (uint)selectExpert;
            pak.DoType = 0;
            GameNetSystem.Instance.SendInfo(pak);
        }
        private void OnSelect(int skillId)
        {
            if (m_CyclicScroll.IsPlaying)
            if (m_CyclicScroll.IsPlaying || flying)
            {
                return;
            }
            selectExpert = skillId;
            var level = 0;
            var selectExpertSkill = 0;
            if (model.TryGetExpertSkill(selectSkillId, out selectExpertSkill)
                && selectExpertSkill != selectExpert && model.TryGetExpertActiveLevel(selectExpert, out level)
                && level > 0)
            {
                var pak = new CA516_tagCMSelectSkillElement();
                pak.SkillTypeID = (uint)selectExpert;
                pak.DoType = 1;
                GameNetSystem.Instance.SendInfo(pak);
            }
        }
        private void ExpertActiveRefresh(int id)
@@ -319,7 +375,7 @@
                {
                    if (level > selectActiveLevel && level > 1)
                    {
                        m_CyclicScroll.DisplayAnimation(()=>
                        m_CyclicScroll.DisplayAnimation(() =>
                        {
                            DisplayDetail(true);
                        });
@@ -327,6 +383,43 @@
                }
                DisplayButtonState();
                DisplayExperts();
            }
        }
        private void ExpertSkillRefresh()
        {
            var selectExpertSkill = 0;
            if (model.serverInited && model.TryGetExpertSkill(selectSkillId, out selectExpertSkill)
                && selectExpertSkill == selectExpert)
            {
                if (flyObject != null)
                {
                    GameObject.Destroy(flyObject);
                    flyObject = null;
                }
                Transform parent = null;
                for (int i = 0; i < m_SkillExperts.Length; i++)
                {
                    if (m_SkillExperts[i].skillId == selectExpert)
                    {
                        parent = m_SkillExperts[i].flyContainer;
                    }
                }
                m_FlyTarget.IdList = new int[1] { selectExpert };
                FunctionUnlockFlyObjectTargetCenter.Register(FunctionUnlockType.Skill, new int[] { selectExpert }, m_FlyTarget);
                var instance = UIUtility.CreateWidget("SkillUnlockFlyObject", "SkillUnlockFlyObject");
                instance.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                flyObject = instance.GetComponent<FunctionUnlockFlyObject>();
                flyObject.SetContent(FunctionUnlockType.Skill, selectExpert);
                flying = true;
                flyObject.Begin(() =>
                {
                    flying = false;
                    DisplaySelectReiki();
                });
            }
        }
@@ -347,6 +440,11 @@
            public int skillId { get; private set; }
            public Transform flyContainer
            {
                get { return m_Icon.transform; }
            }
            TreasureSkillModel model { get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); } }
            public void Display(int skillId, bool unlock, Action<int> func)
System/Skill/TreasureSkillModel.cs
@@ -32,7 +32,7 @@
            }
        }
        bool serverInited = false;
        public bool serverInited { get; private set; }
        public int skillLevelUpLimitLevel { get; private set; }