using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DungeonLiquidBehaviour : MonoBehaviour { [SerializeField] Button m_LiquidBtn; [SerializeField] RotationTween m_RotTween; [SerializeField, Header("晃动次数")] int m_WaggleCnt = 6; [SerializeField, Header("间隔时间")] float m_IntervalTime = 3.0f; float m_Time; DungeonModel m_Model; DungeonModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } DungeonLiquidModel m_DungeonLiquidModel; DungeonLiquidModel dungeonLiquidModel { get { return m_DungeonLiquidModel ?? (m_DungeonLiquidModel = ModelCenter.Instance.GetModel()); } } BuffModel m_BuffModel; BuffModel Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel()); } } bool m_Waggle = false; void Awake() { m_LiquidBtn.onClick.AddListener(OnLiquidBtn); } private void OnEnable() { ResetTween(); BuffModel.Even_ObjAddBuf += UpdateBuf; BuffModel.Even_ObjDelBuff += UpdateBuf; UpdateBuf(); } private void ResetTween() { m_Time = 0; m_RotTween.enabled = false; m_LiquidBtn.transform.localEulerAngles = Vector3.zero; } private void LateUpdate() { if (m_Waggle) { m_Time += Time.deltaTime; if (m_RotTween.isActiveAndEnabled) { if (m_Time > m_RotTween.duration * m_WaggleCnt) { ResetTween(); } } else { if (m_Time > m_IntervalTime) { m_Time = 0; m_RotTween.enabled = true; } } } } private void OnLiquidBtn() { WindowCenter.Instance.Open(); } private void OnDisable() { BuffModel.Even_ObjAddBuf -= UpdateBuf; BuffModel.Even_ObjDelBuff -= UpdateBuf; } private void UpdateBuf() { int buffid = 0; for (int i = 0; i < dungeonLiquidModel.liquidItems.Count; i++) { ItemConfig cfg = ItemConfig.Get(dungeonLiquidModel.liquidItems[i]); if (Buffmodel._BuffDic.ContainsKey(cfg.AddSkill1)) { buffid = cfg.AddSkill1; break; } } m_Waggle = buffid == 0; if (!m_Waggle) { ResetTween(); } } } }