forked from zxl/LaboratoryProtection
204 lines
8.2 KiB
C#
204 lines
8.2 KiB
C#
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老师开门进入实验室动作;
|
||
}
|
||
} |