using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using ZXK.UTility;
using DG.Tweening;
/*******************************************************************************
*Create By CG
*Function 每个工具控制
*******************************************************************************/
namespace ZXK.ZPS
{
public class UIToolItemCtrl : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
[SerializeField]//每个工具图片载体
private Image _itemToolImg = null;
[SerializeField]//每个工具图片载体
private Text _itemName = null;
[SerializeField]//背景常态和选中,,文本常态和选中
private Sprite[] _defaultAndSelectBg = null;
private Transform _toolContainerTran = null;
private Transform _toolSelectContainerTran = null;
private Transform _toolTempContainerTran = null;
private string _toolName = null;
private RectTransform _rectTransform = null;
private int _originalPosIndex = 0;
private bool _isMove = false;
[MyReadOnly]
public bool _IsToolSelectState = false;
///
/// 初始化工具
///
/// 工具名字
/// 所有工具父物体
/// 临时工具箱
/// 选中的工具父物体
public void InitToolItem(string toolName, Sprite toolImg, Transform toolParent, Transform toolTempParent, Transform toolSelectParent)
{
_rectTransform = GetComponent();
transform.name = _toolName = toolName;
_itemName.text = toolName;
if (toolImg != null)
{
_itemToolImg.sprite = toolImg;
}
_toolContainerTran = toolParent;
_toolTempContainerTran = toolTempParent;
_toolSelectContainerTran = toolSelectParent;
_originalPosIndex = transform.GetSiblingIndex();
}
public void SetLight(bool isNext)
{
_isMove = isNext;
transform.Find("TxtBg").GetComponent().sprite= _isMove ? _defaultAndSelectBg[3] : _defaultAndSelectBg[2];
transform.GetComponent().sprite = _isMove ? _defaultAndSelectBg[1] : _defaultAndSelectBg[0];
//transform.GetComponent().color = _isMove ? Color.yellow : Color.white;
if (_isMove)
transform.GetComponent().DOFade(0.3f, 0.5f).SetLoops(-1, LoopType.Yoyo).SetId("ToolLight");
else
DOTween.Kill("ToolLight");
}
public void SetDefault()
{
_isMove = false;
DOTween.Kill("ToolLight");
transform.Find("TxtBg").GetComponent().sprite = _isMove ? _defaultAndSelectBg[3] : _defaultAndSelectBg[2];
transform.GetComponent().sprite = _isMove ? _defaultAndSelectBg[1] : _defaultAndSelectBg[0];
//transform.GetComponent().color = _isMove ? Color.yellow : Color.white;
transform.SetParent(_toolContainerTran);
}
public void OnBeginDrag(PointerEventData eventData)
{
if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train)
{
if (_isMove)
{
//Debug.Log("开始移动");
transform.SetParent(_toolTempContainerTran);
}
}
else
{
//Debug.Log("开始移动");
transform.SetParent(_toolTempContainerTran);
}
}
public void OnDrag(PointerEventData eventData)
{
if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train)
{
if (_isMove)
{
Vector3 pos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(_rectTransform, eventData.position, eventData.enterEventCamera, out pos);
_rectTransform.position = pos;
}
}
else
{
Vector3 pos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(_rectTransform, eventData.position, eventData.enterEventCamera, out pos);
_rectTransform.position = pos;
}
}
public void OnEndDrag(PointerEventData eventData)
{
if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train)
{
if (_isMove)
{
if (RectTransformUtility.RectangleContainsScreenPoint(_toolSelectContainerTran.parent.GetComponent(), eventData.position))
{
//Debug.Log("在内部");
_IsToolSelectState = true;
transform.SetParent(_toolSelectContainerTran);
}
else
{
//Debug.Log("在外部");
_IsToolSelectState = false;
transform.SetParent(_toolContainerTran);
transform.SetSiblingIndex(_originalPosIndex);
}
}
}
else
{
if (RectTransformUtility.RectangleContainsScreenPoint(_toolSelectContainerTran.parent.GetComponent(), eventData.position))
{
//Debug.Log("在内部");
_IsToolSelectState = true;
transform.SetParent(_toolSelectContainerTran);
}
else
{
//Debug.Log("在外部");
_IsToolSelectState = false;
transform.SetParent(_toolContainerTran);
transform.SetSiblingIndex(_originalPosIndex);
}
}
}
}
}