| 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<DungeonModel>()); } }  | 
|   | 
|         AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }  | 
|   | 
|         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<AllianceBossInspireWin>();  | 
|                     break;  | 
|                 default:  | 
|                     WindowCenter.Instance.Open<DungeonInspireWin>();  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private void OnDisable()  | 
|         {  | 
|             model.dungeonInspireLvEvent -= UpdateDugeonInspireLv;  | 
|         }  | 
|     }  | 
| }  | 
|   |