2025-02-12 08:43:33 +08:00

233 lines
9.9 KiB
C#

using ZXK.Framework;
using ZXK.UTility;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Linq;
using UnityEngine.SceneManagement;
/*******************************************************************************
*Create By CG
*Function
*******************************************************************************/
namespace ZXK.BYSS
{
public class AppManagement : MonoSingleton<AppManagement>
{
public EnumCtrl.LogoType curLogoType = EnumCtrl.LogoType.LNZB;
public EnumCtrl.Type _CurType = EnumCtrl.Type.XHBY;
[SerializeField]
private HintModel _hintData;
public HintModel _HintData { get => _hintData; }
[MyReadOnly]
public EnumCtrl.Model _TrainExam = EnumCtrl.Model.None;
[MyReadOnly]
public EnumCtrl.Model _CurModel = EnumCtrl.Model.None;
[MyReadOnly]
public bool _FirstEnterApp = true;//?????????????????
[MyReadOnly]//???????
public AppModel _AppModel = null;
[MyReadOnly]//?豸???????
public CognizeModel _CognizeData = null;
[MyReadOnly]//ui????
public UIModel _UiPanelData = null;
public static Dictionary<string,System.IO.Stream> _ImgDataArray = new Dictionary<string, System.IO.Stream>();
public int _ConnectScore = 0;
public int _GasScore = 0;
//[HideInInspector]
//public StepManager stepManager = null;//流程管理类预制体
//private string stepPrefabPath = "Prefab/StepManager";//StepManager管理类实例化对象加载路径
protected override void AwakeSelf()
{
base.AwakeSelf();
_AppModel = new AppModel();
StartCoroutine(_AppModel.ReadExcelDataWeb());
_CognizeData = new CognizeModel();
StartCoroutine(_CognizeData.InitDataIEnum());
}
private void Start()
{
_UiPanelData = new UIModel();
_UiPanelData.InitData();
}
/// <summary>
/// ?л???
/// </summary>
/// <param name="model"></param>
public void ChangeModel(EnumCtrl.Model model)
{
_CurModel = model;
switch (_CurModel)
{
case EnumCtrl.Model.None:
break;
case EnumCtrl.Model.Home:
ChangeState(EnumCtrl.Model.Home.ToString(), () =>
{
UI_Manage.Instance.ShowPanel("HomePanel");
});
break;
case EnumCtrl.Model.Select2:
UI_Manage.Instance.ShowPanel("Select2Panel");
ChangeState(EnumCtrl.Model.Home.ToString(), () =>
{
UI_Manage.Instance.ShowPanel("Select2Panel");
});
break;
case EnumCtrl.Model.Select3:
ChangeState(EnumCtrl.Model.Home.ToString(), () =>
{
UI_Manage.Instance.ShowPanel("Select3Panel");
});
break;
case EnumCtrl.Model.Cognize:
UI_Manage.Instance.ShowPanel("BlackMaskPanel", -1, GameObject.Find("TopCanvas").transform);
ChangeState(EnumCtrl.Model.Cognize.ToString(), () =>
{
UI_Manage.Instance.ClosePanel("BlackMaskPanel");
UI_Manage.Instance.ShowPanel("CognizePanel");
});
break;
case EnumCtrl.Model.Teach:
//教学模式,修改成,带引导按钮的,没有跳步栏的练习模式
_TrainExam = EnumCtrl.Model.Teach;
UI_Manage.Instance.Clear(GameObject.Find("Canvas").transform);
UI_Manage.Instance.HideAllPanel(GameObject.Find("TopCanvas").transform);
UI_Manage.Instance.ShowPanel("BlackMaskPanel", -1, GameObject.Find("TopCanvas").transform);
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
//教学模式,始终显示教学引导
UI_Manage.Instance.ClosePanel("BlackMaskPanel");
UI_Manage.Instance.ShowPanel("PracticeAndExamPanel");
UI_Manage.Instance.ShowPanel("HoverPanel");
UI_Manage.Instance.ShowPanel("JiaoXueYinDaoBtn");
});
break;
case EnumCtrl.Model.Train:
_TrainExam = EnumCtrl.Model.Train;
UI_Manage.Instance.Clear(GameObject.Find("Canvas").transform);
UI_Manage.Instance.HideAllPanel(GameObject.Find("TopCanvas").transform);
UI_Manage.Instance.ShowPanel("BlackMaskPanel", -1, GameObject.Find("TopCanvas").transform);
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
UI_Manage.Instance.ClosePanel("BlackMaskPanel");
UI_Manage.Instance.ShowPanel("HoverPanel");
UI_Manage.Instance.ShowPanel("PracticeAndExamPanel");
});
break;
case EnumCtrl.Model.Exam:
_TrainExam = EnumCtrl.Model.Exam;
UI_Manage.Instance.Clear(GameObject.Find("Canvas").transform);
UI_Manage.Instance.HideAllPanel(GameObject.Find("TopCanvas").transform);
UI_Manage.Instance.ShowPanel("BlackMaskPanel", -1, GameObject.Find("TopCanvas").transform);
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
UI_Manage.Instance.ClosePanel("BlackMaskPanel");
UI_Manage.Instance.ShowPanel("HoverPanel");
UI_Manage.Instance.ShowPanel("PracticeAndExamPanel");
});
break;
case EnumCtrl.Model.Line:
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
UI_Manage.Instance.ShowPanel("ConnectPanel");
//教学模式,始终显示教学引导
if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Teach)
{
UI_Manage.Instance.ShowPanel("JiaoXueYinDaoBtn");
}
});
break;
case EnumCtrl.Model.Debug:
// UI_Manage.Instance.GetPanel("PracticeAndExamPanel")
//.GetComponent<PracticeAndExamPanel>()._CurTrainExamSceneCtrl.speakManager.ChangeModelAudio("程序调试");
// UI_Manage.Instance.GetPanel("PracticeAndExamPanel")
// .GetComponent<PracticeAndExamPanel>()._CurTrainExamSceneCtrl.speakManager.ReSetAudioCilp();
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
UI_Manage.Instance.ShowPanel(_CurType + "DebugPanel");
});
break;
case EnumCtrl.Model.Gas:
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
// OnDestroyPrefab();
UI_Manage.Instance.ShowPanel("GasPanel");
//教学模式,始终显示教学引导
if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Teach)
{
UI_Manage.Instance.ShowPanel("JiaoXueYinDaoBtn");
}
});
break;
case EnumCtrl.Model.Running:
ChangeState(EnumCtrl.Model.Train.ToString() + EnumCtrl.Model.Exam.ToString(), () =>
{
UI_Manage.Instance.ShowPanel("RunningPanel");
//教学模式,始终显示教学引导
if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Teach)
{
UI_Manage.Instance.ShowPanel("JiaoXueYinDaoBtn");
}
});
break;
default:
break;
}
}
private void ChangeState(string changeToSceneName, System.Action loadedCall)
{
string curSceneName = SceneManager.GetActiveScene().name;
if (curSceneName.Equals(changeToSceneName))
{
UI_Manage.Instance.HideAllPanel();
loadedCall?.Invoke();
}
else
{
//UI_Manage.Instance.HideAllPanel();
UI_Manage.Instance.Clear();
//LoadScenesAsyncNoPanel.Instance.LoadSceneAsync(changeToSceneName, loadedCall);
//UtilitiesMng.LoadSceneAsync(changeToSceneName, loadedCall);
LoadScenes.Instance.LoadScene(changeToSceneName, loadedCall);
}
}
/// <summary>
/// 加载流程类预制体
/// </summary>
//public void OnSpawnPrefab()
//{
// GameObject stepItem= Instantiate(Resources.Load(stepPrefabPath),transform,false) as GameObject;
// stepManager=stepItem.GetComponent<StepManager>();
//}
/// <summary>
/// 销毁流程类预制体
/// </summary>
//public void OnDestroyPrefab()
//{
// DestroyImmediate(stepManager);
//}
}
}