using System; using System.Collections.Generic; using DragonSoul.Shared; using Mono.Event; using UnityEngine; using UnityEngine.Playables; namespace UnityTest.ZXL { public class ThirdProcess : 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(2); 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[5], PlayTimelineMode.Play); 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.警示牌高亮并等待点击: WaitOperateFinish3_1_1().Coroutine(); break; case ConstDataType.打开二次确认提示并等待点击: WaitOperateFinish3_1_2().Coroutine(); break; case ConstDataType.打开穿戴面板等待穿戴完成: WaitOperateFinish3_1_3().Coroutine(); break; case ConstDataType.打开密封性良好提示并等待点击: WaitOperateFinish3_1_4().Coroutine(); break; case ConstDataType.打开气体探测器检测正常并等待关闭: WaitOperateFinish3_1_5().Coroutine(); break; case ConstDataType.点击进入实验室按钮: currentTask.SetResult(true); break; case ConstDataType.打开确认电源关闭提示并等待点击: WaitOperateFinish3_1_6().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 3-1 private async ETTask WaitOperateFinish3_1_1() // 警示牌高亮并等待点击 { await WaitOperateFinish_ClickHighlight(HighlightObjectType.警示牌); } private async ETTask WaitOperateFinish3_1_2() // 打开二次确认提示并等待点击 { 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 WaitOperateFinish3_1_3() // { this.SetPlayDirector(CurrentPlayableDirector, PlayTimelineMode.Resume); // await WaitOperateFinish_Click(); } private async ETTask WaitOperateFinish3_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 WaitOperateFinish3_1_5() // { await WaitOperateFinish_Click(); // var showUI = UIManager.Instance().ShowUI(UIType.StrongTips); // var strongTipsUI = showUI as GasDetectorUI; // strongTipsUI.SetAction(() => { currentTask.SetResult(true); }); // // await WaitOperateFinish_Click(); // await currentTask; // UIManager.Instance().HideUI(UIType.StrongTips); } private async ETTask WaitOperateFinish3_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); } #endregion // 3-1 // ①来到泄露现场,实验室门口站着同学G、F老师,L老师和J老师推着应急器材专用车来到实验室门口,将专用车放置在实验室走廊上,应急器材专用车中的警示牌高亮,点击后,在实验室入口处播放动画16,播放完毕显示警示牌和隔离带; // 3-2 // ①视角跟随J老师来到F老师面前,这时F老师手中应急处理表高亮,点击后,F老师将手上应急处理表递给J老师,并出现“对现场情况进行二次确认”弹框,点击确认,进行下一步; // 3-3 // ①进入界面,弹出提示“按住鼠标左键,将防护用品穿到身上。”,并播放配音; // ②用户按住鼠标左键将模型拖拽至实验员身上,完成穿戴;当所有防护用品都穿戴完毕后,弹出“确定”按钮,进行下一步; // 3-4 // ①视角对准L老师和J老师,播放动画18,播放完后弹出提示“两人防护服整齐,拉链处和鄂下处密封良好。”,点击“确定”按钮,进行下一步; // 3-5 // ①视角对准实验室门口,播放动画2-7,动画播完后,视角对准L老师,播放动画2-8,动画播完,弹出 气体探测器结果界面,显示“正常”,点击“进入实验室”按钮; // ②播放动画2-9,动画播完,自动跳转至下一步; // 3-6 // ①视角来到实验室内,播放动画2-10,待电源开关关闭后,弹出“已确认电源关闭”提示框,点击确认,再播放J老师开门进入实验室动作; } }