| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
| using System; | 
| using UnityEngine.EventSystems; | 
| namespace vnxbqy.UI | 
| { | 
|     public class SkillCell : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler | 
|     { | 
|   | 
|         [SerializeField] SkillData skill; | 
|         [SerializeField] RedpointBehaviour m_Redpoint; | 
|   | 
|         public SkillData skillData | 
|         { | 
|             get | 
|             { | 
|                 return skill; | 
|             } | 
|         } | 
|   | 
|         SkillModel m_Model; | 
|         SkillModel model | 
|         { | 
|             get | 
|             { | 
|                 return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<SkillModel>()); | 
|             } | 
|         } | 
|   | 
|         TreasureSkillModel treasureSkillModel | 
|         { | 
|             get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); } | 
|         } | 
|   | 
|         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.IsXpSkill(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(int skillId) | 
|         { | 
|             skill.SetSkillData(skillId); | 
|             if (model.presentSltSkillID == skillId) | 
|             { | 
|                 skill.m_SelectImg.SetActive(true); | 
|             } | 
|             else | 
|             { | 
|                 skill.m_SelectImg.SetActive(false); | 
|             } | 
|   | 
|             skill.SetActive(PlayerDatas.Instance.skill.GetSKillById(skillId) != null); | 
|             skill.m_SkillBtn.onClick.RemoveAllListeners(); | 
|             skill.m_SkillBtn.onClick.AddListener(OnClickSkill); | 
|   | 
|             var config = SkillConfig.Get(skillId); | 
|             if (m_Redpoint != null) | 
|             { | 
|                 TreasureSkill treasureSkill; | 
|                 if (treasureSkillModel.TryGetSkill(config.SkillTypeID, out treasureSkill)) | 
|                 { | 
|                     m_Redpoint.redpointId = treasureSkill.levelUpRedpoint.id; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         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; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } |