using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using System; using UnityEngine.EventSystems; namespace Snxxz.UI { public class SkillCell : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler { [SerializeField] SkillData skill; public SkillData skillData { get { return skill; } } SkillModel m_Model; SkillModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } private bool onPress = false; private float m_Time = 0.0f; public void OnPointerDown(PointerEventData eventData) { skill.m_SkillBtn.OnPointerClick(eventData); if (model.skillDraging) { return; } if (PlayerDatas.Instance.skill.GetSKillById(skill.skillId) == null) { return; } if (model.GetXpSkillID() == skill.skillId) { return; } onPress = true; } public void OnPointerUp(PointerEventData eventData) { //if (!model.skillDraging && skill.m_SkillBtn != null && onPress) { //} onPress = false; m_Time = 0; } public void OnPointerExit(PointerEventData eventData) { onPress = false; m_Time = 0; } public void Refresh(SkillConfig skillCfg) { skill.SetSkillData(skillCfg.SkillID); if (model.presentSltSkillID == skillCfg.SkillID) { skill.m_SelectImg.gameObject.SetActive(true); } else { skill.m_SelectImg.gameObject.SetActive(false); } skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillCfg.SkillID) != null); skill.m_SkillBtn.onClick.RemoveAllListeners(); skill.m_SkillBtn.onClick.AddListener(OnClickSkill); } private void OnClickSkill() { model.presentSltSkillID = skill.skillId; model.RefreshSltSkill(); } private void LateUpdate() { if (onPress && !model.skillDraging) { m_Time += Time.deltaTime; if (m_Time > model.onDragDelay) { model.skillDragId = skill.skillId; model.skillDraging = true; m_Time = 0; onPress = false; } } } } }