172 lines
5.3 KiB
C#
172 lines
5.3 KiB
C#
|
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<ObjManager>.GetInstance().MainPlayer == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (Singleton<ObjManager>.GetInstance().MainPlayer.OwnSkillInfo.Length <= skillIdx || skillIdx < 0)
|
|||
|
return;
|
|||
|
|
|||
|
Tab_SkillEx skillEx = Singleton<ObjManager>.GetInstance().MainPlayer.OwnSkillInfo[skillIdx].SkillExTable;
|
|||
|
if (skillEx == null)
|
|||
|
return;
|
|||
|
|
|||
|
Tab_SkillBase skillBase = Singleton<ObjManager>.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<RectTransform>(), 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
|
|||
|
}
|