2025-05-18 01:04:31 +08:00

111 lines
2.3 KiB
C#

// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2020-11-06
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "SkillJoystick" company="Kunpo"></copyright>
// <summary></summary>
// ***********************************************************************
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace G.UI
{
/// <summary>
///
/// </summary>
public class SkillJoystick : Joystick
{
public TextMeshProUGUI tmpName;
public TextMeshProUGUI tmpCdTime;
public Image imgCdProgress;
public Image imgSkillIcon;
public GameObject castFx;
private Button _skillBtn;
private Cha_Moves.MovesInfo _buffInfo;
public void SetBuff(Cha_Moves.MovesInfo buffInfo)
{
_buffInfo = buffInfo;
var skillItem = ItemProxy.Instance.GetStaticItem<ItemSkill>(buffInfo.targetId);
if (skillItem != null)
IconProxy.Instance.SetSprite(imgSkillIcon, skillItem.icon);
}
public Cha_Moves.MovesInfo GetBuff()
{
return _buffInfo;
}
private void OnDisable()
{
_buffInfo = null;
}
private void LateUpdate()
{
if (_buffInfo == null)
return;
var ct = _buffInfo.uiSkillCoolTime;
var cd = _buffInfo.uiSkillCoolDown;
if (ct > 0f && cd > 0f)
{
_skillBtn.interactable = false;
if (castFx && castFx.activeSelf)
{
castFx.SetActive(false);
}
if (cd < 1f)
{
tmpCdTime.text = (cd).ToString("0.0");
}
else
{
tmpCdTime.text = ((int)cd).ToString();
}
imgCdProgress.fillAmount = cd / ct;
}
else
{
if (castFx && !castFx.activeSelf)
{
castFx.SetActive(true);
}
_skillBtn.interactable = true;
tmpCdTime.text = "";
imgCdProgress.fillAmount = 0f;
}
}
protected override void Start()
{
_skillBtn = GetComponent<Button>();
base.Start();
background.gameObject.SetActive(false);
}
public override void OnBeginDrag(PointerEventData eventData)
{
background.gameObject.SetActive(false);
base.OnBeginDrag(eventData);
}
public override void OnEndDrag(PointerEventData eventData)
{
background.gameObject.SetActive(false);
base.OnEndDrag(eventData);
}
}
}