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;
|
}
|
}
|
}
|
|