using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DungeonInspireBehaviour : MonoBehaviour { [SerializeField] Button m_InspireBtn; [SerializeField] RotationTween m_RotTween; [SerializeField] Text m_InspireProgress; [SerializeField] Image m_Icon; [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()); } } AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel(); } } bool m_Waggle = false; DungeonInspireConfig m_CoinConfig; private void Awake() { m_InspireBtn.onClick.AddListener(OnInspireBtn); } private void OnEnable() { ResetTween(); model.dungeonInspireLvEvent += UpdateDugeonInspireLv; UpdateDugeonInspireLv(); var mapId = PlayerDatas.Instance.baseData.MapID; var _list = model.GetDungeonInspire(mapId); m_CoinConfig = null; if (_list == null) { return; } for (int i = 0; i < _list.Count; i++) { if (_list[i].InspireType == 3) { m_CoinConfig = _list[i]; break; } } switch (mapId) { case JadeDynastyBossModel.JADEDYNASTY_MAP: case AllianceBossModel.DATAMAPID: m_Icon.SetSprite("W_XYGuwu_a2"); break; default: m_Icon.SetSprite("W_Guwu_a"); break; } m_Icon.SetNativeSize(); } private void UpdateDugeonInspireLv() { var mapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var level = model.GetDungeonInspireLevel(); m_Waggle = m_CoinConfig != null && model.GetDungeonInspireLevel(3) < m_CoinConfig.InspireCount && level < model.GetInspireMaxCount(mapId); if (m_InspireProgress != null) { m_InspireProgress.SetActive(IsRequireDisplayProgress()); m_InspireProgress.text = StringUtility.Contact(level * model.GetDungeonInspireUpper(mapId), "%"); } if (!m_Waggle) { ResetTween(); } } 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 bool IsRequireDisplayProgress() { return PlayerDatas.Instance.baseData.MapID == DemonJarModel.DATA_MAPID || PlayerDatas.Instance.baseData.MapID == JadeDynastyBossModel.JADEDYNASTY_MAP || PlayerDatas.Instance.baseData.MapID == AllianceBossModel.DATAMAPID; } private void ResetTween() { m_Time = 0; m_RotTween.enabled = false; m_InspireBtn.transform.localEulerAngles = Vector3.zero; } private void OnInspireBtn() { var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); switch (dataMapId) { case AllianceBossModel.DATAMAPID: if ((model.GetDungeonInspireLevel()) >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID)) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireMaxLevel"); return; } if (model.mission.IsEncourage >= allianceBossModel.personalInspireCount) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireMaxLevel"); return; } WindowCenter.Instance.Open(); break; default: WindowCenter.Instance.Open(); break; } } private void OnDisable() { model.dungeonInspireLvEvent -= UpdateDugeonInspireLv; } } }