Files
JJBB/Assets/Project/Script/GUI/FactionChallenge/FactionSkillBarItem.cs
2024-08-23 15:49:34 +08:00

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
}