using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections; using System; using GCGame.Table; public class FactionSkillBarItem : UIItemSelect, IDropHandler, IBeginDragHandler, IEndDragHandler, IDragHandler { public Image _SkillIcon; private int _SkillItemIdx; public int SkillItemIdx { get { return _SkillItemIdx; } } private int _OwnSkillIdx; public int OwnSkillIdx { get { return _OwnSkillIdx; } set { _OwnSkillIdx = value; } } public override void Show(Hashtable hash) { base.Show(); var _Page = (int)hash["InitObj"]; } public void InitSkillBar(int skillIdx, int skillItemIdx) { _SkillItemIdx = skillItemIdx; _OwnSkillIdx = skillIdx; _SkillIcon.gameObject.SetActive(false); if (Singleton.GetInstance().MainPlayer == null) return; if (Singleton.GetInstance().MainPlayer.OwnSkillInfo.Length <= skillIdx || skillIdx < 0) return; Tab_SkillEx skillEx = Singleton.GetInstance().MainPlayer.OwnSkillInfo[skillIdx].SkillExTable; if (skillEx == null) return; Tab_SkillBase skillBase = Singleton.GetInstance().MainPlayer.OwnSkillInfo[skillIdx].SkillBaseTable; if (skillEx == null) return; _SkillIcon.gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(_SkillIcon, skillBase.Icon); } #region event private static bool _HasDropSucess = false; public void OnBeginDrag(PointerEventData eventData) { if (!FactionSkillChangeRootCtr.Instance) return; if (_OwnSkillIdx == -1) //当前拖拽的目标为空 return; if (FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx == 12 || FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx == 13) return; _HasDropSucess = false; FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx = _OwnSkillIdx; FactionSkillChangeRootCtr.Instance._DragSkillBar = this; FactionSkillChangeRootCtr.Instance._DragIcon.sprite = _SkillIcon.sprite; FactionSkillChangeRootCtr.Instance._DragIcon.gameObject.SetActive(true); } public void OnDrag(PointerEventData eventData) { if (FactionSkillChangeRootCtr.Instance._DragIcon.isActiveAndEnabled) SetDraggedPosition(eventData); } private void SetDraggedPosition(PointerEventData eventData) { var rt = FactionSkillChangeRootCtr.Instance._DragIcon.rectTransform; Vector3 globalMousePos; if (RectTransformUtility.ScreenPointToWorldPointInRectangle(FactionSkillChangeRootCtr.Instance.GetComponent(), eventData.position, eventData.pressEventCamera, out globalMousePos)) { rt.position = globalMousePos; } } public void OnEndDrag(PointerEventData eventData) { FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx = -1; FactionSkillChangeRootCtr.Instance._DragIcon.sprite = null; FactionSkillChangeRootCtr.Instance._DragIcon.gameObject.SetActive(false); FactionSkillChangeRootCtr.Instance._DragSkillBar = null; if (!_HasDropSucess) { _SkillIcon.gameObject.SetActive(false); _OwnSkillIdx = -1; FactionSkillChangeRootCtr.Instance.ClearSkillBar(_SkillItemIdx); } } public void OnDrop(PointerEventData data) { if (FactionSkillChangeRootCtr.Instance._DragSkillBar == null) //从技能栏拖拽下来是没有OnBeginDrag接口的。 { if (FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx < 0) { return; } _SkillIcon.gameObject.SetActive(true); _SkillIcon.sprite = FactionSkillChangeRootCtr.Instance._DragIcon.sprite; _OwnSkillIdx = FactionSkillChangeRootCtr.Instance._DragSkillOwnIdx; FactionSkillChangeRootCtr.Instance.ChangeSkillBar(_SkillItemIdx); } else { var tempSprite = _SkillIcon.sprite; _SkillIcon.sprite = FactionSkillChangeRootCtr.Instance._DragSkillBar._SkillIcon.sprite; FactionSkillChangeRootCtr.Instance._DragSkillBar._SkillIcon.sprite = tempSprite; FactionSkillChangeRootCtr.Instance.ExChangeSkillBar(_SkillItemIdx); var tempSkillIdx = _OwnSkillIdx; _OwnSkillIdx = FactionSkillChangeRootCtr.Instance._DragSkillBar.OwnSkillIdx; FactionSkillChangeRootCtr.Instance._DragSkillBar.OwnSkillIdx = tempSkillIdx; if (FactionSkillChangeRootCtr.Instance._DragSkillBar.OwnSkillIdx < 0) { FactionSkillChangeRootCtr.Instance._DragSkillBar._SkillIcon.gameObject.SetActive(false); } else { FactionSkillChangeRootCtr.Instance._DragSkillBar._SkillIcon.gameObject.SetActive(true); } if (OwnSkillIdx < 0) { _SkillIcon.gameObject.SetActive(false); } else { _SkillIcon.gameObject.SetActive(true); } } _HasDropSucess = true; } #endregion }