2025-10-09 17:36:27 +08:00

126 lines
4.7 KiB
C#

using ZXKFramework;
using UnityEngine;
using System.Collections;
namespace YiLiao.SiBuChuZhen
{
public class GameManager : MonoSingleton<GameManager>
{
//交互模块
[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;
[HideInInspector]
public NetAsyncMgr net;
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);
Game.Instance.eventManager.AddListener<TipEvent>(ShowTip);
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");
net = transform.FindFirst<NetAsyncMgr>("NetAsyncMgr");
//存储数据初始化
sceneDataHandler.Init();
//平台适配初始化
Game.Instance.AdapterInit();
uiManager.ShowUI<TipPanel>();
//uiManager.ShowUI<TipPanel>();
uiManager.ShowUI<NavPanel>();
//虚拟相机初始化
virtualCameraManager.Init();
//高亮初始化
highLightManager.Init();
//状态机初始化
fsm.Init();
//动画模块初始化
timelineManager.Init();
//计时器初始化
timeCounterManager.Init();
timeCounterManager.StartTimeCounter(str =>
{
uiManager.GetUI<NavPanel>().SetTime(str);
});
kaoheManager.Init();
kaoheManager.callBack = totalScore =>
{
uiManager.GetUI<NavPanel>().SetScore(totalScore.ToString());
};
}
private void ShowTip(TipEvent e)
{
uiManager.GetUI<TipPanel>().AddText(e.text);
uiManager.GetUI<TipPanel>().HighlightText(e.text);
}
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);
Game.Instance.eventManager.RemoveListener<TipEvent>(ShowTip);
}
}
}