157 lines
5.9 KiB
C#
157 lines
5.9 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// 初始化工具
|
|
/// </summary>
|
|
/// <param name="toolName">工具名字</param>
|
|
/// <param name="toolParent">所有工具父物体</param>
|
|
/// <param name="toolTempParent">临时工具箱</param>
|
|
/// <param name="toolSelectParent">选中的工具父物体</param>
|
|
public void InitToolItem(string toolName, Sprite toolImg, Transform toolParent, Transform toolTempParent, Transform toolSelectParent)
|
|
{
|
|
_rectTransform = GetComponent<RectTransform>();
|
|
|
|
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<Image>().sprite= _isMove ? _defaultAndSelectBg[3] : _defaultAndSelectBg[2];
|
|
transform.GetComponent<Image>().sprite = _isMove ? _defaultAndSelectBg[1] : _defaultAndSelectBg[0];
|
|
//transform.GetComponent<Image>().color = _isMove ? Color.yellow : Color.white;
|
|
if (_isMove)
|
|
transform.GetComponent<Image>().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<Image>().sprite = _isMove ? _defaultAndSelectBg[3] : _defaultAndSelectBg[2];
|
|
transform.GetComponent<Image>().sprite = _isMove ? _defaultAndSelectBg[1] : _defaultAndSelectBg[0];
|
|
//transform.GetComponent<Image>().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<RectTransform>(), 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<RectTransform>(), eventData.position))
|
|
{
|
|
//Debug.Log("在内部");
|
|
_IsToolSelectState = true;
|
|
transform.SetParent(_toolSelectContainerTran);
|
|
}
|
|
else
|
|
{
|
|
//Debug.Log("在外部");
|
|
_IsToolSelectState = false;
|
|
transform.SetParent(_toolContainerTran);
|
|
transform.SetSiblingIndex(_originalPosIndex);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |