YanCheng_Metrology/Assets/Scripts/Project/Manager/ToolAndmaterialMgr.cs

82 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
/// <summary>
/// 正在使用的工具/材料管理类
/// </summary>
public class ToolAndmaterialMgr : BaseManager<ToolAndmaterialMgr>
{
//该系统所需要使用的全部工器具和材料
public List<D_ToolAndMaterialData> toolAndMaterialList = new List<D_ToolAndMaterialData>();
private ToolAndmaterialMgr()
{
}
public void Init(string toolOrMaterilOrDevice)
{
toolAndMaterialList = GameManager.DataMgr.GetCurrentSystemToolAndMaterials(toolOrMaterilOrDevice);
}
/// <summary>
/// 获取指定工具
/// </summary>
/// <param name="objName"></param>
/// <returns></returns>
public D_ToolAndMaterialData GetToolOrMaterialOrDeviceInfoByObjName(string objName)
{
for (int i = 0; i < toolAndMaterialList.Count; i++)
{
if (toolAndMaterialList[i].objName == objName)
return toolAndMaterialList[i];
}
return null;
}
/// <summary>
/// 获取场景中ItemInfo (仅在在工具间场景调用)
/// </summary>
/// <param name="objName"></param>
/// <returns></returns>
public List<Tool_SelectComponent> GetItemInfoByName(List<string> objNamelist)
{
List<Tool_SelectComponent> tmps= new List<Tool_SelectComponent>();
objNamelist.ForEach(objName =>
{
Tool_SelectComponent tmp = GameObject.FindObjectsOfType<Tool_SelectComponent>().ToList().Find(a => a.gameObject.name == objName);
tmps.Add(tmp);
});
return tmps;
}
/// <summary>
/// 生成iteminfo (在其他场景调用)
/// </summary>
/// <param name="objName"></param>
/// <returns></returns>
public List<ItemInfo> CreateItemInfoByName(List<string> objNamelist)
{
List<ItemInfo> infos = new List<ItemInfo>();
objNamelist.ForEach(objName =>
{
D_ToolAndMaterialData dTMD = GetToolOrMaterialOrDeviceInfoByObjName(objName);
ItemInfo itemInfo = new ItemInfo();
if (dTMD != null)
{
itemInfo.toolId = dTMD.id;
itemInfo.triggerID = dTMD.id;
itemInfo.toolName = dTMD.objName;
itemInfo.toolOrDeviceOrMaterial = (E_ToolOrDeviceOrMaterials)dTMD.type;
itemInfo.objPrefab = Resources.Load<GameObject>("Prefabs/Objects/Tools/" + objName);
//itemInfo.selfPosInToolRoom = transform.position;
infos.Add(itemInfo);
}
});
return infos;
}
}