using System; using System.Collections.Generic; using DragonSoul.Shared; using Mono.Event; using UnityEngine; using UnityEngine.Playables; namespace UnityTest.ZXL { public class FourProcess : ProcessBase { public override ProcessType processType => ProcessType.四_现场处置场景; 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); showUI = UIManager.Instance().ShowUI(UIType.Summarize); var summarizeUI = showUI as SummarizeUI; summarizeUI.SetAction(() => { currentTask.SetResult(true); }); await WaitOperateFinish_Click(); UIManager.Instance().HideUI(UIType.StrongTips); } #endregion // 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 // 总结: // 一、学校医疗救护组对乙炔泄露受伤人员进行紧急救护,必要时护送至医院诊治。 // 二、实验负责老师向各小组负责人电话汇报相关结果:“受伤人员已安全处置,气瓶火灾事故处理完毕!” // 三、此次气瓶火灾事故各级联动响应及时,处置合理,但同时在以后实验中一定要加强安全教育,杜绝此类事故的发生。 // 按钮:“气瓶火灾爆炸应急处置实验结束”,点击后返回类型页面。 } }