using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public class TooRoomMannger : SingletonMono { public List allTMDs; public Transform toolParent; public Transform headSlot; public Transform bodySlot; public Transform handSlot; public Transform shoesSlot; private List _cancel; //未穿戴材质球 private List _wear; //穿戴材质球 private FirstPersonController firstPersonController; void Start() { allTMDs = toolParent.GetComponentsInChildren(true).ToList(); firstPersonController = GameObject.FindGameObjectWithTag("Player").GetComponent(); GameManager.EventMgr.AddEventListener(Enum_EventType.PlayerCanMove, SwitchFirstPersonControllerMove); _cancel = new List(); _wear = new List(); _cancel = Resources.LoadAll("Materials/CharacterEquip/Cancel").ToList(); _wear = Resources.LoadAll("Materials/CharacterEquip/Wear").ToList(); GameManager.EventMgr.EventTrigger(Enum_EventType.InitializationUI); foreach (var tmd in allTMDs) { tmd.GetInfo(); } RemoveRepeat(); CheckWearByWearDic(); if (GameManager.RunModelMgr.ModeType == E_ModeType.Study) { GameManager.EventMgr.AddEventListener(Enum_EventType.SwitchSubProcess, SwitchSubProcess); } InitializationUI(); } private void SwitchSubProcess(int subProcess) { if (!GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Mid, (panel) => { panel.Init($"{GameManager.ProcessMgr.d_Scheme.CurrentProcess.processName}:{GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.subProcessName}", $"{GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.tips}", false); }); } else { GameManager.UIMgr.GetPanel().Init($"{GameManager.ProcessMgr.d_Scheme.CurrentProcess.processName}:{GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.subProcessName}", $"{GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.tips}", false); } } /// /// 通过wearDic数据检测是否穿衣 /// public void CheckWearByWearDic() { var wearData = GameManager.PacksackBagMgr.wearDic; if (wearData.Count > 0) { foreach (var item in wearData) { Wear(item.Key, true); } } else { Wear("国网安全帽", false); Wear("工作服", false); Wear("绝缘手套", false); Wear("绝缘靴", false); } } public void SwitchFirstPersonControllerMove(bool isMove) { firstPersonController.playerCanMove = isMove; } /// /// /移除重复问题 /// public void RemoveRepeat() { var bagDatas = GameManager.PacksackBagMgr.GetCurrentBagData(); foreach (var item in bagDatas.Values) { foreach (var itemI in item) { for (int i = 0; i < allTMDs.Count; i++) { int index = i; if (itemI.selfPosInToolRoom == allTMDs[index].itemInfo.selfPosInToolRoom) { Destroy(allTMDs[index].gameObject); allTMDs.Remove(allTMDs[index]); } } } } } /// /// 与模型联动 /// /// /// public void Wear(string equipName, bool isChange) { Material ma = null; if (isChange) { ma = _wear.SingleOrDefault(s => s.name == equipName); } else { ma = _cancel.SingleOrDefault(s => s.name == equipName); } switch (equipName) { case "国网安全帽": headSlot.GetComponent().material = ma; break; case "工作服": bodySlot.GetComponent().material = ma; break; case "绝缘手套": handSlot.GetComponent().material = ma; break; case "绝缘靴": shoesSlot.GetComponent().material = ma; break; } } private void InitializationUI() { if (!GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Bot, (panel) => { panel.Init(GameManager.ProcessMgr.subProcessId); }); } if (GameManager.RunModelMgr.ModeType == E_ModeType.Study) { GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID); GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, GameManager.ProcessMgr.subProcessId); } if (!GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Mid, (panel) => { panel.Init(); GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType); }); } GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchMode); } private void OnDestroy() { GameManager.EventMgr.RemoveEventListener(Enum_EventType.PlayerCanMove, SwitchFirstPersonControllerMove); GameManager.UIMgr.toolTips.HideTips(); GameManager.UIMgr.imageTips.HideTips(); if (GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.HidePanel(); } Debug.Log("toolroomManager disable"); } //private void OnDisable() //{ // GameManager.EventMgr.RemoveEventListener(Enum_EventType.PlayerCanMove, SwitchFirstPersonControllerMove); //} public void CreateTool() { var bagDatas = GameManager.PacksackBagMgr.GetCurrentBagData(); var wearDate = GameManager.PacksackBagMgr.wearDic; foreach (var item in bagDatas.Keys) { List temp = bagDatas[item]; for (int j = 0; j < temp.Count; j++) { int indexJ = j; if (temp[indexJ].selfPosInToolRoom != Vector3.zero) { GameObject obj = Instantiate(temp[indexJ].objPrefab, toolParent); obj.name = temp[indexJ].toolName; obj.transform.position = temp[indexJ].selfPosInToolRoom; obj.transform.eulerAngles = temp[indexJ].selfAngleInToolRoom; obj.GetComponent().itemInfo = temp[indexJ]; obj.GetComponent().GetInfo(); } } } allTMDs.Clear(); allTMDs = toolParent.GetComponentsInChildren(true).ToList(); } } /// /// 工具架工具配置 /// //public class ToolRoomSettingData //{ // public string objname; // public Vector3 initPostion; // public ToolRoomSettingData(string objname, Vector3 initPostion) // { // this.e_ToolOrDeviceOrMaterials = e_toolOrDeviceOrMaterials; // this.initPostion = initPostion; // } //}