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); } } } } }