//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, May 31, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class DemonJarSoulIncreaseWin : Window { public static event Action demonJarSoulIncreaseShowEvent; [SerializeField] RectTransform m_EffectFrom; [SerializeField] RectTransform m_EffectTo; DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { } protected override void OnAfterOpen() { } protected override void OnPreClose() { demonJarModel.demonJarSoulIncreaseDelta = 0; StopAllCoroutines(); } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); if (demonJarModel.demonJarSoulIncreaseDelta >= 2) { EffectMgr.Instance.PlayUIEffect(1145, (int)this.windowInfo.windowType * 1000 + 1500, m_EffectFrom, false); StartCoroutine("Co_Emission", 6); } else if (demonJarModel.demonJarSoulIncreaseDelta >= 1) { EffectMgr.Instance.PlayUIEffect(1144, (int)this.windowInfo.windowType * 1000 + 1500, m_EffectFrom, false); StartCoroutine("Co_Emission", 3); } } #endregion IEnumerator Co_Emission(int _totalFly) { if (demonJarSoulIncreaseShowEvent != null) { demonJarSoulIncreaseShowEvent(); } var count = 0; var timer = 0f; var interval = 0.2; while (timer < interval && count < _totalFly) { timer += Time.deltaTime; if (timer > interval) { timer = 0f; var startPoint = m_EffectFrom.position; var endPoint = m_EffectTo.position; var direction = Vector3.Normalize(startPoint - endPoint); var normal = new Vector3(-direction.y, direction.x, 0); var distance = Vector3.Distance(startPoint, endPoint); var pivot = startPoint + normal * UnityEngine.Random.Range(-distance, distance) * 0.7f + direction * distance * 0.4f; var effect = EffectMgr.Instance.PlayUIEffect(1146, (int)this.windowInfo.windowType * 1000 + 1500, this.transform, false); var bezierMove = effect.AddMissingComponent(); bezierMove.duration = 1f; bezierMove.Begin(startPoint, pivot, endPoint, () => { effect.Stop(); DestroyObject(bezierMove); EffectMgr.Instance.PlayUIEffect(1147, (int)this.windowInfo.windowType * 1000 + 1500, this.m_EffectTo, false); }); count++; } yield return null; } yield return WaitingForSecondConst.WaitMS2000; CloseClick(); } } }