From 82931aabaaa3e479bc04e11630a77cd9c9dd5fe3 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 26 十月 2018 20:05:36 +0800
Subject: [PATCH] Merge branch 'master' into leonard

---
 UI/Common/UI3DHeroSkillShow.cs |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/UI/Common/UI3DHeroSkillShow.cs b/UI/Common/UI3DHeroSkillShow.cs
index 388ccdb..6b76993 100644
--- a/UI/Common/UI3DHeroSkillShow.cs
+++ b/UI/Common/UI3DHeroSkillShow.cs
@@ -51,6 +51,8 @@
 
         Action m_HeroSkillCompletet;
 
+        SFXController m_SkillExtraSfx;
+
         public int cacheSkillId { get; private set; }
 
         public Camera showCamera { get { return m_ShowCamera; } }
@@ -163,6 +165,15 @@
                 });
                 var _clip = _index != -1 ? _treasureSkill.clip[_index] : _treasureSkill.clip[0];
                 ShowHeroSkill(_skillId, _clip.clip);
+                if (_treasureSkill.effects != null && _treasureSkill.effects.Count > 0)
+                {
+                    _index = _treasureSkill.effects.FindIndex((x) =>
+                    {
+                        return (int)x.job == PlayerDatas.Instance.baseData.Job;
+                    });
+                    var _effect = _index != -1 ? _treasureSkill.effects[_index] : _treasureSkill.effects[0];
+                    StartCoroutine(Co_PlayExtraEffect(_effect));
+                }
             }
         }
 
@@ -251,12 +262,38 @@
             StopShow();
         }
 
+        IEnumerator Co_PlayExtraEffect(Effect effect)
+        {
+            yield return new WaitForSeconds(effect.startTime);
+            if (m_SkillExtraSfx != null)
+            {
+                SFXPlayUtility.Instance.Release(m_SkillExtraSfx);
+                m_SkillExtraSfx = null;
+            }
+            var parent = hero;
+            if (!string.IsNullOrEmpty(effect.parentName) && hero != null)
+            {
+                parent = hero.GetChildTransformDeeply(effect.parentName, true);
+            }
+            m_SkillExtraSfx = SFXPlayUtility.Instance.Play(effect.id, parent);
+            if (m_SkillExtraSfx != null)
+            {
+                m_SkillExtraSfx.duration = effect.duration;
+                m_SkillExtraSfx.transform.localPosition = effect.position;
+            }
+        }
+
         public void StopShow()
         {
             UI3DTreasureSelectStage.Instance.showCamera.enabled = true;
             m_ShowCamera.gameObject.SetActive(false);
             m_HeroSkillCompletet = null;
             m_HeroShow.Dispose();
+            if (m_SkillExtraSfx != null)
+            {
+                SFXPlayUtility.Instance.Release(m_SkillExtraSfx);
+                m_SkillExtraSfx = null;
+            }
         }
 
         [Serializable]
@@ -267,10 +304,22 @@
         }
 
         [Serializable]
+        public struct Effect
+        {
+            public PlayerJob job;
+            public int id;
+            public float startTime;
+            public float duration;
+            public string parentName;
+            public Vector3 position;
+        }
+
+        [Serializable]
         public struct TreasureSkill
         {
             public int treasureId;
             public List<CameraClip> clip;
+            public List<Effect> effects;
         }
 
         public enum PlayerJob

--
Gitblit v1.8.0