1
0
Fork 0
LaboratoryProtection/Assets/UnityTest/ZXL/Scripts/Process/FourProcess.cs

225 lines
10 KiB
C#
Raw Normal View History

2023-09-18 03:39:32 +08:00
using System;
using System.Collections.Generic;
using DragonSoul.Shared;
2023-09-18 03:39:32 +08:00
using Mono.Event;
using UnityEngine;
using UnityEngine.Playables;
namespace UnityTest.ZXL
2023-09-12 23:57:06 +08:00
{
public class FourProcess : ProcessBase
{
public override ProcessType processType => ProcessType._;
2023-09-18 03:39:32 +08:00
protected override void OnInit()
{
base.OnInit();
StartAsync().Coroutine();
}
protected override void OnLevel()
{
base.OnLevel();
}
async ETTask StartAsync()
{
var ui = UIManager.Instance().ShowUI(UIType.Chapter);
var chapterUI = ui as ChapterUI;
if (chapterUI == null)
{
Debug.LogError($"{ui.GetType()}");
return;
}
await chapterUI.Transit(3);
UIManager.Instance().HideUI(UIType.Chapter);
this.SetPlayDirector(playableDirectors[0], PlayTimelineMode.Play);
}
protected override void Next()
{
base.Next();
switch (index)
{
case 0:
this.SetPlayDirector(playableDirectors[0], PlayTimelineMode.Play);
break;
case 1:
this.SetPlayDirector(playableDirectors[1], PlayTimelineMode.Play);
break;
case 2:
this.SetPlayDirector(playableDirectors[2], PlayTimelineMode.Play);
break;
case 3:
this.SetPlayDirector(playableDirectors[3], PlayTimelineMode.Play);
break;
case 4:
this.SetPlayDirector(playableDirectors[4], PlayTimelineMode.Play);
break;
case 5:
// this.SetPlayDirector(playableDirectors[4], PlayTimelineMode.Play);
// TODO: 打开总结面板
break;
default:
EventManager.Instance.FireNow(this, new ProcessOverEventArgs(processType));
break;
}
}
public override void ConstEventLogic(object sender, GameEventArgs e)
{
base.ConstEventLogic(sender, e);
var args = e as ConstEventArgs;
this.SetPlayDirector(CurrentPlayableDirector, PlayTimelineMode.Pause);
switch (args.constDataType)
{
case ConstDataType.None:
break;
case ConstDataType.:
WaitOperateFinish4_1_1().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_2().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_3().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_5().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_4().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_6().Coroutine();
break;
case ConstDataType.:
WaitOperateFinish4_1_7().Coroutine();
break;
default:
throw new ArgumentOutOfRangeException();
}
}
public override void ClickObjectEvent(object sender, GameEventArgs e)
{
base.ClickObjectEvent(sender, e);
var args = e as ClickObjectEventArgs;
switch (args.objectType)
{
case HighlightObjectType.:
currentTask.SetResult(true);
break;
case HighlightObjectType.:
currentTask.SetResult(true);
break;
default:
throw new ArgumentOutOfRangeException();
}
}
#region MyRegion
private async ETTask WaitOperateFinish4_1_1() // 消火栓高亮并等待点击
{
await WaitOperateFinish_ClickHighlight(HighlightObjectType.);
}
private async ETTask WaitOperateFinish4_1_2() // 出现小时钟及文字并等待点击灭火器
{
await WaitOperateFinish_ClickHighlight(HighlightObjectType.);
}
private async ETTask WaitOperateFinish4_1_3() // 出现小时钟及文字并等待点击灭火器
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "“阀门已关闭", () => { currentTask.SetResult(true); }, 1);
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
}
private async ETTask WaitOperateFinish4_1_4() //
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "“阀门关闭,火焰熄灭,继续用消防水枪进行保护,防止少量漏气,再次燃烧", () => { currentTask.SetResult(true); }, 1);
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
}
private async ETTask WaitOperateFinish4_1_5() //
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "“已检查阀门完全关闭,无漏气,火焰无复燃,周围未有引燃物品,再停止消防水枪保护", () => { currentTask.SetResult(true); }, 1);
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
}
private async ETTask WaitOperateFinish4_1_6() //
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "“消防人员到达后,经消防人员专业地检查判断下,由消防人员将事故气瓶转移到安全地点(通风、空旷、周围无易燃物)。", () => { currentTask.SetResult(true); }, 1);
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
}
private async ETTask WaitOperateFinish4_1_7() //
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "“经消防员对整个室内环境做最后检测,确认无复燃点,室内安全,向实验室负责老师确认。救援结束。", () => { currentTask.SetResult(true); }, 1);
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
2023-09-24 11:28:47 +08:00
showUI = UIManager.Instance().ShowUI(UIType.Summarize);
var summarizeUI = showUI as SummarizeUI;
summarizeUI.SetAction(() => { currentTask.SetResult(true); });
await WaitOperateFinish_Click();
UIManager.Instance().HideUI(UIType.StrongTips);
2023-09-18 03:39:32 +08:00
}
#endregion
2023-09-12 23:57:06 +08:00
// 4-1
// ①J老师进门后室内消火栓高亮点击后播放动画2-12要求打开软管前端喷枪阀门后喷射出水
// 4-2
// ①L老师对瓶体喷水后出现小时钟及文字“瓶体冷却后”室内干粉灭火器高亮点击后播放动画2-13
// 要求1动画2-13播放时出现温馨提示文字注意周围未做好防火措施时切不可灭火以免大量气体外溢引起爆炸。
// 要求2动画2-13中右手压下把手时灭火器喷嘴喷出白色粉末气瓶火焰慢慢变小。
// 要求3动画2-13播放后弹出提示框“阀门已关闭”点击“确认”按钮关闭提示框。
// 4-3
// ①点击“确认”按钮后继续播放动画2-14喷水循环动画同时一侧出现小时钟及文字“阀门关闭火焰熄灭继续用消防水枪进行保护防止少量漏气再次燃烧”
// ②动画2-14播放完毕弹出文字框“已检查阀门完全关闭无漏气火焰无复燃周围未有引燃物品再停止消防水枪保护”并关闭喷水。点击“确认”按钮。
// 4-4
// 点击“确认”按钮后播放119报警声音视角转到实验室外播放动画2-15视角跟随消防员来到实验室内到达乙炔气瓶处此时燃烧乙炔气瓶高亮点击后播放消防员转身推着乙炔气瓶从实验室中走出并弹出文字框“消防人员到达后经消防人员专业地检查判断下由消防人员将事故气瓶转移到安全地点通风、空旷、周围无易燃物。”点击“确认”
// 4-5
// 点击“确认”后播放动画2-16再弹出文字框“经消防员对整个室内环境做最后检测确认无复燃点室内安全向实验室负责老师确认。救援结束。”点击“确认”按钮弹出总结页面。
// 4-6
// 总结:
// 一、学校医疗救护组对乙炔泄露受伤人员进行紧急救护,必要时护送至医院诊治。
// 二、实验负责老师向各小组负责人电话汇报相关结果:“受伤人员已安全处置,气瓶火灾事故处理完毕!”
// 三、此次气瓶火灾事故各级联动响应及时,处置合理,但同时在以后实验中一定要加强安全教育,杜绝此类事故的发生。
// 按钮:“气瓶火灾爆炸应急处置实验结束”,点击后返回类型页面。
}
}