2025-03-10 10:18:11 +08:00

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