NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/LevelFight/UICommandSkillNode.cs

118 lines
2.8 KiB
C#

using System;
using Framework;
using Gameplay.Common;
using Gameplay.Skill;
using PhxhSDK;
using UnityEngine;
using UnityEngine.UI;
public class UICommandSkillNode: UINode
{
public Image Image_CMSkillNormal;
public Image Image_SkillProgress;
public UIButtonEx Button_CMSkillPress;
public Image Image_CMSkillReady;
private UIWindow _bindWindow;
private float _curCdProgress;
private bool _isInCd;
private int _skillID;
public override void OnAwake()
{
Button_CMSkillPress.AddOutDragListener(OnOutDrag);
Button_CMSkillPress.AddPointUpListener(OnPointUp);
}
public override void SetData(object data)
{
_skillID = (int)data;
Init();
}
public override void OnUpdate()
{
_curCdProgress = SkillManager.instance.playerSkillManager.GetCDProgress(_skillID);
if (!_isInCd)
{
if (_curCdProgress > 0)
{
ChangeState(true);
}
return;
}
if (_isInCd)
{
if (_curCdProgress <= 0.01f)
{
ChangeState(false);
return;
}
RefreshNode();
}
}
public void BindWindow(UIWindow window)
{
_bindWindow = window;
}
public void Init()
{
_Init();
}
private void _Init()
{
Button_CMSkillPress.gameObject.SetActive(true);
Image_CMSkillNormal.gameObject.SetActive(false);
}
private void RefreshNode()
{
var playerSkillData = TableManager.Instance.Tables.PlayerSkillConfig.GetOrDefault(_skillID);
if (playerSkillData != null)
{
var fill = (1 - _curCdProgress) * UI_StartBtn_CMSBtnController.PROGRESS_FULL;
Image_SkillProgress.fillAmount = fill;
}
}
private void ChangeState(bool state)
{
_isInCd = state;
Image_CMSkillNormal.gameObject.SetActive(state);
Button_CMSkillPress.gameObject.SetActive(!state);
}
private void OnOutDrag()
{
try
{
//InputManager.Instance.enabled = false;
var data = new EDReadyPlayerSkill{playerSkillId = _skillID};
EventManager.Instance.Send(EventManager.EventName.INFIGHT_PLAYER_SKILL_READYUSE, data);
var window = (UI_StartBtn_CMSBtnController)_bindWindow;
if (!TeamManager.IsHideAllUI)
{
TeamManager.IsHideAllUI = true;
}
window.OnOutDragNode();
}
catch (Exception e)
{
DebugUtil.LogError(e);
//InputManager.Instance.enabled = true;
throw;
}
}
private void OnPointUp()
{
var window = (UI_StartBtn_CMSBtnController)_bindWindow;
window.OnPointUp();
}
}