204 lines
6.3 KiB
C#
204 lines
6.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
using ZXK.UTility;
|
|
/*******************************************************************************
|
|
*Create By CG
|
|
*Function 工具集面板管理
|
|
*******************************************************************************/
|
|
namespace ZXK.ZPS
|
|
{
|
|
public class UIToolPanelCtrl : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Button _submitBtn = null;
|
|
[SerializeField]
|
|
private Transform _toolContainerTran = null;
|
|
[SerializeField]
|
|
private Transform _toolTempContainerTran = null;
|
|
[SerializeField]
|
|
private Transform _toolSelectContainerTran = null;
|
|
[SerializeField]
|
|
private Toggle _showHideTog = null;
|
|
[SerializeField]
|
|
private GameObject _toolItemPrefab = null;
|
|
[SerializeField]
|
|
private List<Sprite> _toolImg = null;
|
|
|
|
private RectTransform _curTranRect = null;
|
|
|
|
private List<UIToolItemCtrl> _tools = new List<UIToolItemCtrl>();
|
|
private List<string> _selectTools = new List<string>();
|
|
|
|
//锁定工具
|
|
private string[] _lockTools = null;
|
|
|
|
|
|
public static UIToolPanelCtrl _Instance;
|
|
//静态类
|
|
private void Awake()
|
|
{
|
|
_Instance = this;
|
|
}
|
|
|
|
//一级目录切换 调用方法
|
|
public void switchstep()
|
|
{
|
|
|
|
|
|
foreach (Transform item in _toolSelectContainerTran)
|
|
{
|
|
item.GetComponent<UIToolItemCtrl>().SetDefault();
|
|
|
|
}
|
|
_selectTools.Clear();
|
|
|
|
CloseTool();
|
|
|
|
}
|
|
|
|
public void CreateToolItem(List<string> tools)
|
|
{
|
|
_curTranRect = transform.GetComponent<RectTransform>();
|
|
|
|
_submitBtn.onClick.AddListener(() =>
|
|
{
|
|
//提交的时候遍历选中了哪些工具
|
|
List<string> _selectTool = new List<string>();
|
|
foreach (Transform item in _toolSelectContainerTran)
|
|
{
|
|
if (!_selectTool.Contains(item.name))
|
|
{
|
|
_selectTool.Add(item.name);
|
|
}
|
|
}
|
|
if (_selectTool.Count == 0) return;
|
|
bool submitTemp = false;
|
|
if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train)
|
|
{
|
|
submitTemp = GameRoot.Instance._TrainMng.ToolSubmitBtn(_selectTool);
|
|
}
|
|
else if (GameRoot.Instance._CurModel == EnumCtrl.Model.Exam)
|
|
{
|
|
submitTemp = GameRoot.Instance._ExamMng.ToolSubmitBtn(_selectTool);
|
|
}
|
|
if (submitTemp)
|
|
{
|
|
UIToolItemCtrl[] children = _toolSelectContainerTran.GetComponentsInChildren<UIToolItemCtrl>();
|
|
for (int i = 0; i < children.Length; i++)
|
|
{
|
|
children[i].SetDefault();
|
|
}
|
|
CloseTool();
|
|
}
|
|
});
|
|
|
|
_showHideTog.onValueChanged.AddListener((isOn) =>
|
|
{
|
|
if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train)
|
|
{
|
|
GameRoot.Instance._TrainMng._ToolOpenState = isOn;
|
|
}
|
|
else if(GameRoot.Instance._CurModel == EnumCtrl.Model.Exam)
|
|
{
|
|
GameRoot.Instance._ExamMng._ToolOpenState = isOn;
|
|
}
|
|
if (isOn)
|
|
{
|
|
OpenToolTog();
|
|
}
|
|
else
|
|
{
|
|
CloseToolTog();
|
|
}
|
|
});
|
|
_showHideTog.isOn = false;
|
|
string temp = "";
|
|
for (int i = 0; i < tools.Count; i++)
|
|
{
|
|
temp += tools[i] + '_';
|
|
GameObject toolItemGeo = Instantiate(_toolItemPrefab, _toolContainerTran);
|
|
UIToolItemCtrl toolItemCtrl = toolItemGeo.GetComponent<UIToolItemCtrl>();
|
|
//利用读取图片的方式
|
|
Sprite curImg = null;
|
|
for (int a = 0; a < _toolImg.Count; a++)
|
|
{
|
|
if (_toolImg[a].name.Equals(tools[i]))
|
|
{
|
|
curImg = _toolImg[a];
|
|
}
|
|
}
|
|
toolItemCtrl.InitToolItem(tools[i],curImg, _toolContainerTran, _toolTempContainerTran, _toolSelectContainerTran);
|
|
_tools.Add(toolItemCtrl);
|
|
}
|
|
Debug.Log(temp);
|
|
}
|
|
|
|
|
|
public void OpenTool(string[] tools =null)
|
|
{
|
|
_lockTools = tools;
|
|
_showHideTog.isOn = true;
|
|
}
|
|
/// <summary>
|
|
/// 是否允许点击提交按钮
|
|
/// </summary>
|
|
/// <param name="allow"></param>
|
|
public void AllowSubminTool(bool allow)
|
|
{
|
|
_submitBtn.interactable = allow;
|
|
}
|
|
public void CloseTool()
|
|
{
|
|
AllowSubminTool(false);
|
|
_showHideTog.isOn = false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开工具箱
|
|
/// </summary>
|
|
/// <param name="tools">是否需要锁定工具,如果有请填入数据,否则没有</param>
|
|
private void OpenToolTog()
|
|
{
|
|
_curTranRect.DOAnchorPosX(-290, 0.5f);
|
|
foreach (UIToolItemCtrl item in _tools)
|
|
{
|
|
item.SetLight(false);
|
|
}
|
|
if (_lockTools == null) return;
|
|
for (int i = 0; i < _lockTools.Length; i++)
|
|
{
|
|
foreach (UIToolItemCtrl item in _tools)
|
|
{
|
|
if (item.name.Equals(_lockTools[i]))
|
|
{
|
|
item.SetLight(true);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CloseToolTog()
|
|
{
|
|
_curTranRect.DOAnchorPosX(-22, 0.5f);
|
|
}
|
|
/// <summary>
|
|
/// 获取选择的道具
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<string> GetSelectTool()
|
|
{
|
|
_selectTools.Clear();
|
|
foreach (Transform item in _toolSelectContainerTran)
|
|
{
|
|
_selectTools.Add(item.name);
|
|
}
|
|
return _selectTools;
|
|
}
|
|
|
|
}
|
|
} |