少年修仙传客户端代码仓库
client_linchunjie
2019-05-06 a0ca1164c07501974e74a543cf5b58513ab987c8
6642  【2.0】【前端】五行灵根功能开启相应表现
2个文件已修改
93 ■■■■■ 已修改文件
System/Role/ReikiFuncOpenWin.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/ReikiRootWin.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/ReikiFuncOpenWin.cs
@@ -15,7 +15,17 @@
    public class ReikiFuncOpenWin : Window
    {
        [SerializeField] UIAlphaTween m_AlphaTween;
        [SerializeField] UIAlphaTween m_AlphaTween1;
        [SerializeField] PositionTween m_PositionTween;
        [SerializeField] Transform m_ContainerReikiIcon;
        [SerializeField] Transform m_ContainerFly;
        [SerializeField] UIEffect m_Effect;
        [SerializeField] Transform[] m_FlyIcons;
        [SerializeField] float m_OpenTime = 2f;
        bool displayAnimation = false;
        public static Action onFlyComplete;
        float timer = 0f;
        #region Built-in
@@ -29,10 +39,15 @@
        protected override void OnPreOpen()
        {
            m_OpenTime = Mathf.Max(2f, m_OpenTime);
            timer = 0f;
            displayAnimation = false;
            m_PositionTween.SetStartState();
            m_AlphaTween.SetStartState();
            m_AlphaTween1.SetStartState();
            m_ContainerReikiIcon.gameObject.SetActive(true);
            m_ContainerFly.gameObject.SetActive(false);
        }
        protected override void OnAfterOpen()
@@ -41,6 +56,7 @@
        protected override void OnPreClose()
        {
            StopAllCoroutines();
        }
        protected override void OnAfterClose()
@@ -50,13 +66,14 @@
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (timer >= m_OpenTime)
            if (displayAnimation)
            {
                return;
            }
            timer += Time.deltaTime;
            if (timer >= m_OpenTime)
            {
                displayAnimation = true;
                StartAnimation();
            }
        }
@@ -64,7 +81,57 @@
        void StartAnimation()
        {
            m_AlphaTween.Play(CloseClick);
            m_PositionTween.Play(PositionTweenComplete);
        }
        private void PositionTweenComplete()
        {
            m_AlphaTween.Play();
            m_AlphaTween1.Play();
            StartCoroutine(Co_Fly());
        }
        IEnumerator Co_Fly()
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(m_AlphaTween.delay);
            m_Effect.Play();
            yield return null;
            m_ContainerReikiIcon.gameObject.SetActive(false);
            m_ContainerFly.gameObject.SetActive(true);
            var parent = m_Effect.target.transform.Find("Animation/B/JIN");
            SetParent(m_FlyIcons[0], parent, Vector3.one);
            parent = m_Effect.target.transform.Find("Animation/B/MU");
            SetParent(m_FlyIcons[1], parent, Vector3.one);
            parent = m_Effect.target.transform.Find("Animation/B/SHUI");
            SetParent(m_FlyIcons[2], parent, Vector3.one);
            parent = m_Effect.target.transform.Find("Animation/B/HUO");
            SetParent(m_FlyIcons[3], parent, Vector3.one);
            parent = m_Effect.target.transform.Find("Animation/B/TU");
            SetParent(m_FlyIcons[4], parent, Vector3.one);
            yield return WaitingForSecondConst.WaitMS500;
            for (int i = 0; i < m_FlyIcons.Length; i++)
            {
                SetParent(m_FlyIcons[i], m_ContainerFly, Vector3.zero);
            }
            yield return WaitingForSecondConst.WaitMS900;
            if (onFlyComplete != null)
            {
                onFlyComplete();
            }
            yield return WaitingForSecondConst.WaitMS1600;
            CloseClick();
        }
        void SetParent(Transform source, Transform dest, Vector3 scale)
        {
            source.SetParentEx(dest, Vector3.zero, Quaternion.identity, scale);
        }
    }
System/Role/ReikiRootWin.cs
@@ -64,8 +64,11 @@
                if (i < model.reikiRoots.Count)
                {
                    m_ReikiRootPoints[i].Display(this, model.reikiRoots[i]);
                    m_ReikiRootPoints[i].gameObject.SetActive(!model.displayOpenAnimation);
                }
            }
            ReikiFuncOpenWin.onFlyComplete += OnFlyComplete;
            m_NumKeyboard.gameObject.SetActive(false);
@@ -88,10 +91,13 @@
        {
            model.onCacheFreePointRefresh -= OnCacheFreePointRefresh;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
            ReikiFuncOpenWin.onFlyComplete -= OnFlyComplete;
            for (int i = 0; i < m_ReikiRootPoints.Count; i++)
            {
                m_ReikiRootPoints[i].Dispose();
            }
            StopAllCoroutines();
        }
        protected override void OnAfterClose()
@@ -258,6 +264,20 @@
            WindowCenter.Instance.Open<ReikiRootRuleWin>();
        }
        private void OnFlyComplete()
        {
            StartCoroutine(Co_DisplayReikis());
        }
        IEnumerator Co_DisplayReikis()
        {
            for (int i = 0; i < m_ReikiRootPoints.Count; i++)
            {
                m_ReikiRootPoints[i].gameObject.SetActive(true);
                yield return WaitingForSecondConst.WaitMS100;
            }
        }
        private void OnCacheFreePointRefresh()
        {
            DisplayFreePoint();