2025-11-25 17:26:38 +08:00

138 lines
5.0 KiB
C#

using ZXKFramework;
using UnityEngine;
using System.Collections;
using DongWuYiXue.Main;
namespace DongWuYiXue.DaoNiaoShu
{
public class GameManager : MonoSingleton<GameManager>
{
bool isActive = false;
[SerializeField]
GameObject yingJianCanvas;
public SensorManager senSor;
//交互模块
[HideInInspector]
public InteractionManager interactionManager;
//动画播放模块
[HideInInspector]
public TimelineClipManager timelineManager;
[HideInInspector]
public FSMManager fsm;
//玩家管理器
[HideInInspector]
public PlayerManager playerManager;
//高亮模块
[HideInInspector]
public HighLightManager highLightManager;
//计时模块
[HideInInspector]
public TimeCounterManager timeCounterManager;
//成绩模块
[HideInInspector]
public KaoHeManager kaoheManager;
//UI模块
[HideInInspector]
public IUIManager uiManager = new UIManager();
//虚拟相机模块
[HideInInspector]
public VirtualCameraManager virtualCameraManager;
public bool test;
[HideInInspector]
public SceneDataHandler sceneDataHandler;
IEnumerator Start()
{
if (test)
{
//数据初始化
MVC.RegisterModel(new Main.GameModel());
yield return MVC.GetModel<Main.GameModel>().Init();
MVC.GetModel<Main.GameModel>().modeType = ModeType.KaoHe;
MVC.GetModel<Main.GameModel>().mainData = MVC.GetModel<Main.GameModel>().excelData.GetMainData(2);
}
MVC.RegisterModel(new GameModel());
yield return MVC.GetModel<GameModel>().Init();
Game.Instance.eventManager.AddListener<PlayTrueOrFalseEvent>(PlayTrueOrFalseSound);
Game.Instance.eventManager.AddListener<PlaySoundEvent>(PlaySound);
sceneDataHandler = transform.FindFirst<SceneDataHandler>("SceneDataHandler");
interactionManager = transform.FindFirst<InteractionManager>("InteractionManager");
virtualCameraManager = transform.FindFirst<VirtualCameraManager>("VirtualCameraManager");
fsm = transform.FindFirst<FSMManager>("FSMManager");
timelineManager = transform.FindFirst<TimelineClipManager>("TimelineManager");
highLightManager = transform.FindFirst<HighLightManager>("HighLightManager");
timeCounterManager = transform.FindFirst<TimeCounterManager>("TimeCounterManager");
kaoheManager = transform.FindFirst<KaoHeManager>("KaoHeManager");
playerManager = transform.FindFirst<PlayerManager>("PlayerManager");
//aiManager = transform.FindFirst<AIManager>("AIManager");
//存储数据初始化
sceneDataHandler.Init();
Game.Instance.fsm.ChangeState<GamePlayingState>();
uiManager.ShowUI<HomePanel>();
//虚拟相机初始化
virtualCameraManager.Init();
//高亮初始化
highLightManager.Init();
//状态机初始化
fsm.Init();
//动画模块初始化
timelineManager.Init();
//计时器初始化
timeCounterManager.Init();
if(MVC.GetModel<Main.GameModel>().modeType == ModeType.ShiXun )
{
uiManager.ShowUI<TreeViewPanel>();
uiManager.GetUI<TreeViewPanel>().BuildButton(MVC.GetModel<GameModel>().GetTreeViewData());
uiManager.ShowUI<TimePanel>();
uiManager.ShowUI<ScorePanel>();
}
if ( MVC.GetModel<Main.GameModel>().modeType == ModeType.KaoHe)
{
uiManager.ShowUI<TimePanel>();
uiManager.ShowUI<ScorePanel>();
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
isActive = !isActive;
if (isActive)
{
yingJianCanvas.SetActive(true);
}
else
{
yingJianCanvas.SetActive(false);
}
}
}
private void PlaySound(PlaySoundEvent e)
{
Game.Instance.sound.PlayBGM(e.path, false, clip => {
e.callBack?.Invoke(clip.length);
});
}
private void PlayTrueOrFalseSound(PlayTrueOrFalseEvent e)
{
if (e.isTrue)
{
Game.Instance.sound.PlayMS(MVC.GetModel<Main.GameModel>().mainData.folder + "/Sounds/right");
}
else
{
Game.Instance.sound.PlayMS(MVC.GetModel<Main.GameModel>().mainData.folder + "/Sounds/false");
}
}
private void OnDestroy()
{
Game.Instance.eventManager.RemoveListener<PlayTrueOrFalseEvent>(PlayTrueOrFalseSound);
Game.Instance.eventManager.RemoveListener<PlaySoundEvent>(PlaySound);
}
}
}