using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXKFramework; public class ShiTuStateMain : StateBase { ModelChildShowOne allShiTu; List allShituItem = new List(); private ShiTuBomb curModel; ModelChildShowOne loModelChildShowOne = new ModelChildShowOne(); public override void Init(IFSM stateMachine) { base.Init(stateMachine); allShiTu = Game.Instance.transform.FindFirst("ShiTu"); int loIndex = 0; foreach (Transform item in allShiTu.transform) { ShiTuItem loShiTuItem = item.GetComponent(); GameObject lobj = ShiTuLauncher.Instance.allModel.transform.GetChild(loIndex).gameObject; loShiTuItem.Init(lobj); allShituItem.Add(loShiTuItem); loIndex++; } loModelChildShowOne = GameObject.Find("Main").FindFirst("ModelShow"); loModelChildShowOne?.CloseAllModel(); } public override void OnEnter(params object[] obj) { base.OnEnter(obj); Game.Instance.uiManager.ShowUIAndCloseOther(); Game.Instance.eventManager.AddListener(OnShiTuEvent); ToReset(); } public override void OnExit() { base.OnExit(); Game.Instance.eventManager.RemoveListener(OnShiTuEvent); ShiTuLauncher.Instance.allModel?.CloseAllModel(); } private void OnShiTuEvent(ShiTuEvent e) { switch (e.eventData) { case "ShiTu1": ChangeShiTu(0); break; case "ShiTu2": ChangeShiTu(1); break; case "ShiTu3": ChangeShiTu(2); break; case "Last": break; case "ChaiBtn": curModel?.MoveOrBack(); break; case "Next": break; default: break; } } public void ToReset() { ChangeShiTu(0); } public void ChangeShiTu(int index) { if (index >= 0 && index < allShituItem.Count) { allShiTu?.ShowModel(index); GameObject loMod = ShiTuLauncher.Instance.allModel?.ShowModel(index); if (loMod != null) curModel = loMod.GetComponent(); allShituItem[index].ToReset(); } } } public class ShiTuStateShowModel : StateBase { ModelChildShowOne loModelChildShowOne = new ModelChildShowOne(); public override void Init(IFSM stateMachine) { base.Init(stateMachine); loModelChildShowOne = GameObject.Find("Main").FindFirst("ModelShow"); loModelChildShowOne?.CloseAllModel(); } public override void OnEnter(params object[] obj) { base.OnEnter(obj); Game.Instance.uiManager.ShowUIAndCloseOther(); string objName = obj[0].ToString(); loModelChildShowOne?.ShowModel(objName); Game.Instance.eventManager.AddListener(OnShiTuEvent); } public override void OnExit() { base.OnExit(); loModelChildShowOne?.CloseAllModel(); Game.Instance.eventManager.RemoveListener(OnShiTuEvent); } private void OnShiTuEvent(ShiTuEvent e) { switch (e.eventData) { case "Back": Game.Instance.fsm.ChangeState(); break; default: break; } } }