534 lines
19 KiB
C#
534 lines
19 KiB
C#
|
|
using System;
|
||
|
|
using System.Collections;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.Events;
|
||
|
|
using ZXKFramework;
|
||
|
|
//辽宁交专
|
||
|
|
public class LiaoNingJiaoZhuanLauncher : MonoSingleton<LiaoNingJiaoZhuanLauncher>
|
||
|
|
{
|
||
|
|
GameModel gameModel;
|
||
|
|
AClipManager[] clipManagerArray;
|
||
|
|
ModelShowManager modelShow;
|
||
|
|
ModelClickManager modelClick;
|
||
|
|
ModelChildShowOneBase clipManagerShowOneBase = new();
|
||
|
|
AClipManager clipManagerCurrent;
|
||
|
|
PlayerMovement playerMovement;
|
||
|
|
TargetToScreen targetToScreen;
|
||
|
|
TimeCounterManager timeCounterManager;
|
||
|
|
ScoreManager scoreManager;
|
||
|
|
ProcessManager processManager;
|
||
|
|
ResultManager resultManager;
|
||
|
|
NetManager netManager;
|
||
|
|
protected override void Awake()
|
||
|
|
{
|
||
|
|
base.Awake();
|
||
|
|
clipManagerShowOneBase.Init(transform.FindFirst<Transform>("ClipManager"));
|
||
|
|
clipManagerArray = GetComponentsInChildren<AClipManager>(true);
|
||
|
|
if(clipManagerArray.Length > 0)
|
||
|
|
{
|
||
|
|
for (int i = 0; i < clipManagerArray.Length; i++)
|
||
|
|
{
|
||
|
|
clipManagerArray[i]?.Init();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
modelShow = GetComponentInChildren<ModelShowManager>(true);
|
||
|
|
modelShow?.Init();
|
||
|
|
modelClick = GetComponentInChildren<ModelClickManager>(true);
|
||
|
|
modelClick?.Init();
|
||
|
|
playerMovement = GetComponentInChildren<PlayerMovement>(true);
|
||
|
|
targetToScreen = GetComponentInChildren<TargetToScreen>(true);
|
||
|
|
timeCounterManager = GetComponentInChildren<TimeCounterManager>(true);
|
||
|
|
scoreManager = GetComponentInChildren<ScoreManager>(true);
|
||
|
|
scoreManager?.Init();
|
||
|
|
processManager = GetComponentInChildren<ProcessManager>(true);
|
||
|
|
processManager?.Init();
|
||
|
|
resultManager = GetComponentInChildren<ResultManager>(true);
|
||
|
|
resultManager?.Init();
|
||
|
|
netManager = GetComponentInChildren<NetManager>(true);
|
||
|
|
netManager?.Init();
|
||
|
|
}
|
||
|
|
void Start()
|
||
|
|
{
|
||
|
|
MVC.RegisterModel(new GameModel());
|
||
|
|
gameModel = MVC.GetModel<GameModel>();
|
||
|
|
gameModel.Init();
|
||
|
|
Game.Instance.eventManager.AddListener<CloseModelEvent>(OnCloseModelEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<WorkBtnClipEvent>(OnWorkBtnClipEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<ImageChangeEvent>(OnImageChangeEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<CloseImageEvent>(OnCloseImageEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<HomeEvent>(OnHomeEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<CloseQuestionEvent>(OnCloseQuestionEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<MessageTypeEvent>(OnMessageTypeEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<ScoreRecordEvent>(OnScoreRecordEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<ProcessEvent>(OnProcessEvent);
|
||
|
|
Game.Instance.eventManager.AddListener<StepRecordEvent>(OnStepRecordEvent);
|
||
|
|
//切换到开始状态
|
||
|
|
Game.Instance.fsm.ChangeState<WelcomeState>();
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 事件类型事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnMessageTypeEvent(MessageTypeEvent e)
|
||
|
|
{
|
||
|
|
OnMessageType(e.type,e.id);
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 返回主页事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnHomeEvent(HomeEvent e)
|
||
|
|
{
|
||
|
|
Game.Instance.sound.StopBGM();
|
||
|
|
modelShow?.HideModel();
|
||
|
|
modelShow?.HideCamera();
|
||
|
|
modelClick?.HideModel();
|
||
|
|
playerMovement?.ResetPos();
|
||
|
|
//重置动画
|
||
|
|
clipManagerCurrent = GetClipManager(gameModel.mainData.GetClipManager(gameModel.GetId()));
|
||
|
|
|
||
|
|
clipManagerCurrent?.ResetClip();
|
||
|
|
|
||
|
|
StopAllCoroutines();
|
||
|
|
if(e.type == "Welcome")
|
||
|
|
{
|
||
|
|
Game.Instance.fsm.ChangeState<WelcomeState>();
|
||
|
|
}else if (e.type == "Mode")
|
||
|
|
{
|
||
|
|
gameModel.SetId(gameModel.mainData.GetMinId(gameModel.mainData.GetModuleName(gameModel.GetId())));
|
||
|
|
Game.Instance.fsm.ChangeState<ModeSelectionState>();
|
||
|
|
}
|
||
|
|
if (gameModel.GetModeType() == ModeType.KaoHe)
|
||
|
|
{
|
||
|
|
StopTimeCounter(false);
|
||
|
|
netManager?.SendData(resultManager?.ToJson());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 图片切换事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnImageChangeEvent(ImageChangeEvent e)
|
||
|
|
{
|
||
|
|
if (gameModel.GetModeType() == ModeType.LiuLan)
|
||
|
|
{
|
||
|
|
string speakText = gameModel.imageData.GetImageSoundText(e.id);
|
||
|
|
if (!string.IsNullOrEmpty(speakText))
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<SpeakText>(null, speakText);
|
||
|
|
}
|
||
|
|
string audioPath = gameModel.imageData.GetImageSoundPath(e.id);
|
||
|
|
if (!string.IsNullOrEmpty(audioPath))
|
||
|
|
{
|
||
|
|
Game.Instance.sound.PlayBGM(audioPath, false);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 关闭模型事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnCloseModelEvent(CloseModelEvent e)
|
||
|
|
{
|
||
|
|
modelShow?.HideModel();
|
||
|
|
modelShow?.HideCamera();
|
||
|
|
Game.Instance.uiManager.CloseUI<ModelShowPanel>();
|
||
|
|
//暂停语音和文字
|
||
|
|
Game.Instance.uiManager.CloseUI<SpeakText>();
|
||
|
|
Game.Instance.sound.StopBGM();
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 图片关闭事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnCloseImageEvent(CloseImageEvent e)
|
||
|
|
{
|
||
|
|
//暂停语音和文字
|
||
|
|
Game.Instance.uiManager.CloseUI<SpeakText>();
|
||
|
|
Game.Instance.sound.StopBGM();
|
||
|
|
//判断是否要触发下一步骤
|
||
|
|
if (e.id == gameModel.GetId())
|
||
|
|
{
|
||
|
|
//显示子模块按钮高亮
|
||
|
|
HighLightSubBtn(gameModel.GetId());
|
||
|
|
//全局id自增
|
||
|
|
if (gameModel.IsCanAddIDSelf())
|
||
|
|
{
|
||
|
|
gameModel.AddId();
|
||
|
|
if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "自动")
|
||
|
|
{
|
||
|
|
OnMessageType(
|
||
|
|
(EventType)Enum.Parse(typeof(EventType), gameModel.mainData.GetMessageType(gameModel.GetId()))
|
||
|
|
, gameModel.GetId());
|
||
|
|
}
|
||
|
|
else if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "手动")
|
||
|
|
{
|
||
|
|
ShowTipText(gameModel.GetId());//提示
|
||
|
|
HighLightToolBtn(gameModel.GetId());//高亮
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 子模块事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnWorkBtnClipEvent(WorkBtnClipEvent e)
|
||
|
|
{
|
||
|
|
//重置动画
|
||
|
|
clipManagerCurrent = GetClipManager(gameModel.mainData.GetClipManager(e.id));
|
||
|
|
clipManagerCurrent?.ResetClip();
|
||
|
|
//重置点击
|
||
|
|
modelClick?.HideModel();
|
||
|
|
OnMessageType(e.type,e.id);
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 关闭习题事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnCloseQuestionEvent(CloseQuestionEvent e)
|
||
|
|
{
|
||
|
|
//全局id自增
|
||
|
|
if (gameModel.IsCanAddIDSelf())
|
||
|
|
{
|
||
|
|
gameModel.AddId();
|
||
|
|
if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "自动")
|
||
|
|
{
|
||
|
|
OnMessageType(
|
||
|
|
(EventType)Enum.Parse(typeof(EventType), gameModel.mainData.GetMessageType(gameModel.GetId()))
|
||
|
|
, gameModel.GetId());
|
||
|
|
}
|
||
|
|
else if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "手动")
|
||
|
|
{
|
||
|
|
ShowTipText(gameModel.GetId());//提示
|
||
|
|
HighLightToolBtn(gameModel.GetId());//工具高亮
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
private void OnMessageType(EventType type, int id)
|
||
|
|
{
|
||
|
|
if (id == 0) return;
|
||
|
|
switch (type)
|
||
|
|
{
|
||
|
|
case EventType.开始:
|
||
|
|
OnInit();
|
||
|
|
break;
|
||
|
|
case EventType.动画:
|
||
|
|
OnPlayClip();
|
||
|
|
break;
|
||
|
|
case EventType.图片:
|
||
|
|
OnImage(id);
|
||
|
|
break;
|
||
|
|
case EventType.展示:
|
||
|
|
OnModelShow(id);
|
||
|
|
break;
|
||
|
|
case EventType.习题:
|
||
|
|
OnQuestion();
|
||
|
|
break;
|
||
|
|
case EventType.点击:
|
||
|
|
OnModelClick(id);
|
||
|
|
break;
|
||
|
|
case EventType.拖拽:
|
||
|
|
OnModelDrag(id);
|
||
|
|
break;
|
||
|
|
case EventType.操作:
|
||
|
|
break;
|
||
|
|
case EventType.结束:
|
||
|
|
OnFinish();
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
private void OnInit()
|
||
|
|
{
|
||
|
|
clipManagerShowOneBase.ShowModel(gameModel.mainData.GetClipManager(gameModel.GetId()));//显示ClipManager模型
|
||
|
|
Game.Instance.uiManager.ShowUI<InitPanel>(null, gameModel.mainData.GetSoundText(gameModel.GetId()));//文字
|
||
|
|
PlaySound(gameModel.GetId());//语音
|
||
|
|
if (gameModel.IsCanAddIDSelf())
|
||
|
|
{
|
||
|
|
gameModel.AddId();
|
||
|
|
if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "自动")
|
||
|
|
{
|
||
|
|
OnMessageType(
|
||
|
|
(EventType)Enum.Parse(typeof(EventType), gameModel.mainData.GetMessageType(gameModel.GetId()))
|
||
|
|
, gameModel.GetId());
|
||
|
|
}
|
||
|
|
else if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "手动")
|
||
|
|
{
|
||
|
|
ShowTipText(gameModel.GetId());//提示
|
||
|
|
HighLightToolBtn(gameModel.GetId());//高亮
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
private void OnImage(int value)
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<ImagePanel>(null, value);
|
||
|
|
}
|
||
|
|
private void OnModelShow(int value)
|
||
|
|
{
|
||
|
|
float clipLength = 0;
|
||
|
|
//隐藏UI
|
||
|
|
HideUI();
|
||
|
|
Game.Instance.uiManager.CloseUI<ModelShowPanel>();
|
||
|
|
//模型
|
||
|
|
modelShow?.ShowModel(gameModel.mainData.GetModelShowPath(value));
|
||
|
|
//动画
|
||
|
|
clipManagerCurrent = GetClipManager(gameModel.mainData.GetClipManager(value));
|
||
|
|
if (clipManagerCurrent)
|
||
|
|
{
|
||
|
|
clipLength = clipManagerCurrent.PlayClip(gameModel.mainData.GetClipPath(value));
|
||
|
|
}
|
||
|
|
if (gameModel.GetModeType() == ModeType.LiuLan)
|
||
|
|
{
|
||
|
|
//文字
|
||
|
|
ShowSpeakText(value);
|
||
|
|
//语音
|
||
|
|
PlaySound(value);
|
||
|
|
}
|
||
|
|
//展示UI
|
||
|
|
ShowUI(clipLength, () => {
|
||
|
|
Game.Instance.uiManager.ShowUI<ModelShowPanel>();
|
||
|
|
modelShow?.ShowCamera();
|
||
|
|
});
|
||
|
|
}
|
||
|
|
private void OnModelDrag(int value)
|
||
|
|
{
|
||
|
|
//todo
|
||
|
|
}
|
||
|
|
private void OnPlayClip()
|
||
|
|
{
|
||
|
|
float clipLength = 0;
|
||
|
|
float audioLength = 0;
|
||
|
|
//重置动画
|
||
|
|
clipManagerCurrent = GetClipManager(gameModel.mainData.GetClipManager(gameModel.GetId()));
|
||
|
|
clipManagerCurrent?.ResetClip();
|
||
|
|
//隐藏UI
|
||
|
|
HideUI();
|
||
|
|
//动画
|
||
|
|
clipManagerCurrent = GetClipManager(gameModel.mainData.GetClipManager(gameModel.GetId()));
|
||
|
|
if (clipManagerCurrent)
|
||
|
|
{
|
||
|
|
clipLength = clipManagerCurrent.PlayClip(gameModel.mainData.GetClipPath(gameModel.GetId()));
|
||
|
|
}
|
||
|
|
if (gameModel.GetModeType() == ModeType.LiuLan)
|
||
|
|
{
|
||
|
|
//文字
|
||
|
|
ShowSpeakText(gameModel.GetId());
|
||
|
|
//语音
|
||
|
|
audioLength = PlaySound(gameModel.GetId());
|
||
|
|
}
|
||
|
|
//语音和动画的长度比较
|
||
|
|
float t = CompareLength(audioLength, clipLength);
|
||
|
|
//显示UI
|
||
|
|
ShowUI(t, () =>
|
||
|
|
{
|
||
|
|
//记录步骤
|
||
|
|
if (gameModel.GetModeType() == ModeType.KaoHe)
|
||
|
|
{
|
||
|
|
OnStepRecordEvent(new StepRecordEvent() {
|
||
|
|
subModule = gameModel.mainData.GetSubModuleName(gameModel.GetId()),
|
||
|
|
task = gameModel.mainData.GetTaskName(gameModel.GetId()) ,
|
||
|
|
start = false});
|
||
|
|
}
|
||
|
|
//显示子模块按钮高亮
|
||
|
|
HighLightSubBtn(gameModel.GetId());
|
||
|
|
//全局id自增
|
||
|
|
if (gameModel.IsCanAddIDSelf())
|
||
|
|
{
|
||
|
|
gameModel.AddId();
|
||
|
|
if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "自动")
|
||
|
|
{
|
||
|
|
OnMessageType(
|
||
|
|
(EventType)Enum.Parse(typeof(EventType), gameModel.mainData.GetMessageType(gameModel.GetId()))
|
||
|
|
, gameModel.GetId());
|
||
|
|
}
|
||
|
|
else if (gameModel.mainData.GetTriggerType(gameModel.GetId()) == "手动")
|
||
|
|
{
|
||
|
|
ShowTipText(gameModel.GetId());//提示
|
||
|
|
HighLightToolBtn(gameModel.GetId());//高亮
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
private void OnModelClick(int value)
|
||
|
|
{
|
||
|
|
modelClick?.ShowModel(gameModel.mainData.GetModelClickPath(value));
|
||
|
|
if (targetToScreen)
|
||
|
|
{
|
||
|
|
targetToScreen.targetTransform = modelClick.GetModel(gameModel.mainData.GetModelClickPath(value)).transform;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
private void OnQuestion()
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<Question_ChoicePanel>(null,gameModel.mainData.GetQuestionGroup(gameModel.GetId()));
|
||
|
|
}
|
||
|
|
private void OnFinish()
|
||
|
|
{
|
||
|
|
if(gameModel.GetModeType() == ModeType.KaoHe)
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<DetailsPanel>(null,resultManager.ToList());
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<FinishPanel>(null, gameModel.mainData.GetSoundText(gameModel.GetId()));//文字
|
||
|
|
}
|
||
|
|
PlaySound(gameModel.GetId());//语音
|
||
|
|
}
|
||
|
|
void ShowSpeakText(int value)
|
||
|
|
{
|
||
|
|
string speakText = gameModel.mainData.GetSoundText(value);
|
||
|
|
if (!string.IsNullOrEmpty(speakText))
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<SpeakText>(null, speakText);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void ShowTipText(int value)
|
||
|
|
{
|
||
|
|
string tipText = gameModel.mainData.GetTip(value);
|
||
|
|
if (!string.IsNullOrEmpty(tipText))
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.ShowUI<Tip>(null, tipText);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
float PlaySound(int value)
|
||
|
|
{
|
||
|
|
string audioPath = gameModel.mainData.GetSoundPath(value);
|
||
|
|
if (!string.IsNullOrEmpty(audioPath))
|
||
|
|
{
|
||
|
|
Game.Instance.sound.PlayBGM(audioPath, false);
|
||
|
|
AudioClip ac = Resources.Load<AudioClip>(Game.Instance.soundDirPath + "/" + audioPath);
|
||
|
|
return ac ? ac.length : 0;
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
AClipManager GetClipManager(string value)
|
||
|
|
{
|
||
|
|
if (clipManagerArray.Length == 0) return null;
|
||
|
|
for (int i = 0; i < clipManagerArray.Length; i++)
|
||
|
|
{
|
||
|
|
if(clipManagerArray[i].name == value)
|
||
|
|
{
|
||
|
|
return clipManagerArray[i];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
void HighLightToolBtn(int value)
|
||
|
|
{
|
||
|
|
if (gameModel.GetModeType() == ModeType.LiuLan)
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.GetUI<ToolPanel>().HighLightBtn(gameModel.mainData.GetToolName(value));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void HighLightSubBtn(int value)
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.GetUI<WorkBtn>().HighLightBtn(gameModel.mainData.GetSubModuleName(value));
|
||
|
|
}
|
||
|
|
void HideUI()
|
||
|
|
{
|
||
|
|
Game.Instance.uiManager.CloseUI<Tip>();
|
||
|
|
Game.Instance.uiManager.CloseUI<ToolPanel>();
|
||
|
|
Game.Instance.uiManager.CloseUI<WorkBtn>();
|
||
|
|
Game.Instance.uiManager.CloseUI<Result>();
|
||
|
|
}
|
||
|
|
float CompareLength(float ac, float pd)
|
||
|
|
{
|
||
|
|
return ac > pd ? ac : pd;
|
||
|
|
}
|
||
|
|
void ShowUI(float t = 0,UnityAction callBack = null)
|
||
|
|
{
|
||
|
|
StartCoroutine(DelayExecute(t, () => {
|
||
|
|
Game.Instance.uiManager.ShowUI<ToolPanel>();
|
||
|
|
Game.Instance.uiManager.ShowUI<WorkBtn>();
|
||
|
|
Game.Instance.uiManager.ShowUI<Result>();
|
||
|
|
callBack?.Invoke();
|
||
|
|
}));
|
||
|
|
}
|
||
|
|
IEnumerator DelayExecute(float value,UnityAction callback)
|
||
|
|
{
|
||
|
|
yield return new WaitForSeconds(value);
|
||
|
|
callback?.Invoke();
|
||
|
|
}
|
||
|
|
public void StartTimeCounter()
|
||
|
|
{
|
||
|
|
if (timeCounterManager == null) return;
|
||
|
|
//开始记录时间
|
||
|
|
timeCounterManager.StartTimeCounter((str) => {
|
||
|
|
Game.Instance.uiManager.GetUI<Result>().timeText.text = str;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
void StopTimeCounter(bool clear)
|
||
|
|
{
|
||
|
|
if (timeCounterManager == null) return;
|
||
|
|
timeCounterManager.StopTimeCounter();//停止记录时间
|
||
|
|
if (clear)
|
||
|
|
{
|
||
|
|
//清除时间记录
|
||
|
|
timeCounterManager.ClearTimeCounter();
|
||
|
|
Game.Instance.uiManager.GetUI<Result>().timeText.text = timeCounterManager.GetTime();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 记录成绩事件
|
||
|
|
/// </summary>
|
||
|
|
private void OnScoreRecordEvent(ScoreRecordEvent e)
|
||
|
|
{
|
||
|
|
if (scoreManager == null) return;
|
||
|
|
if (e.right)
|
||
|
|
{
|
||
|
|
Game.Instance.sound.PlayBGM("right", false);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
Game.Instance.sound.PlayBGM("false", false);
|
||
|
|
}
|
||
|
|
scoreManager.SetScore(e.subModule,e.task, e.right, gameModel.mainData.GetScoreMode(gameModel.GetId()));
|
||
|
|
Game.Instance.uiManager.GetUI<Result>().scoreText.text = scoreManager.GetTotalScore().ToString();
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 进度事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnProcessEvent(ProcessEvent e)
|
||
|
|
{
|
||
|
|
if (processManager == null) return;
|
||
|
|
processManager.SetProcess(e.subModule,e.task);
|
||
|
|
Game.Instance.uiManager.GetUI<Result>().processText.text = processManager.GetProcess() + "%";
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 步骤记录事件监听
|
||
|
|
/// </summary>
|
||
|
|
private void OnStepRecordEvent(StepRecordEvent e)
|
||
|
|
{
|
||
|
|
if (resultManager == null) return;
|
||
|
|
if (scoreManager == null) return;
|
||
|
|
if (e.start)
|
||
|
|
{
|
||
|
|
resultManager.StartStep(
|
||
|
|
e.subModule,
|
||
|
|
e.task,
|
||
|
|
30,
|
||
|
|
e.stepType,
|
||
|
|
e.answer,
|
||
|
|
e.yourAnswer
|
||
|
|
);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
resultManager.EndStep(
|
||
|
|
e.subModule,
|
||
|
|
e.task,
|
||
|
|
scoreManager.GetScore(e.subModule,e.task),
|
||
|
|
scoreManager.GetStepMaxScore(e.subModule,e.task),
|
||
|
|
scoreManager.GetModeRemark(e.subModule,e.task),
|
||
|
|
e.yourAnswer
|
||
|
|
);
|
||
|
|
}
|
||
|
|
gameModel.SetListStep(resultManager.ToList());
|
||
|
|
}
|
||
|
|
private void OnDestroy()
|
||
|
|
{
|
||
|
|
Game.Instance.eventManager.RemoveListener<CloseModelEvent>(OnCloseModelEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<WorkBtnClipEvent>(OnWorkBtnClipEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<ImageChangeEvent>(OnImageChangeEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<CloseImageEvent>(OnCloseImageEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<HomeEvent>(OnHomeEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<CloseQuestionEvent>(OnCloseQuestionEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<MessageTypeEvent>(OnMessageTypeEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<ScoreRecordEvent>(OnScoreRecordEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<ProcessEvent>(OnProcessEvent);
|
||
|
|
Game.Instance.eventManager.RemoveListener<StepRecordEvent>(OnStepRecordEvent);
|
||
|
|
}
|
||
|
|
}
|