LaboratoryProtection/Assets/UnityTest/ZXL/Scripts/Process/ThirdProcess.cs

230 lines
9.4 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 ThirdProcess : ProcessBase
{
public override ProcessType processType => ProcessType._;
2023-09-18 03:39:32 +08:00
protected override void OnInit()
{
base.OnInit();
StartAsync().Coroutine();
EventManager.Instance.Subscribe(SureButtonEventArgs.EventId, SureButtonEvent);
}
private void SureButtonEvent(object sender, GameEventArgs e)
{
var args = e as SureButtonEventArgs;
currentTask.SetResult(true);
2023-09-18 03:39:32 +08:00
}
protected override void OnLevel()
{
base.OnLevel();
EventManager.Instance.Unsubscribe(SureButtonEventArgs.EventId, SureButtonEvent);
2023-09-18 03:39:32 +08:00
}
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_2_1().Coroutine();
break;
2023-09-18 03:39:32 +08:00
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.);
// var strongTipsUI = showUI as StrongTipsUI;
// strongTipsUI.SetContent("提示", "对现场情况进行二次确认。", () => { currentTask.SetResult(true); }, 1);
2023-09-18 03:39:32 +08:00
await WaitOperateFinish_Click();
UIManager.Instance().HideUI(UIType.);
2023-09-18 03:39:32 +08:00
}
private async ETTask WaitOperateFinish3_1_2_1() // 等待点击
{
await WaitOperateFinish_ClickHighlight(HighlightObjectType.);
}
2023-09-18 03:39:32 +08:00
private async ETTask WaitOperateFinish3_1_3() //
{
currentTask = ETTask<bool>.Create();
currentToken = new ETCancellationToken();
var showUI = UIManager.Instance().ShowUI(UIType.RePlacement);
var rePlacementUI = showUI as RePlacementUI;
rePlacementUI.SetAction(currentTask);
2023-09-27 23:28:03 +08:00
EventManager.Instance.FireNow(this, new AudioEventArgs("3-3"));
currentToken.Add(TokenCancel);
bool result = await currentTask;
2023-09-18 03:39:32 +08:00
this.SetPlayDirector(CurrentPlayableDirector, PlayTimelineMode.Resume);
UIManager.Instance().HideUI(UIType.RePlacement);
2023-09-18 03:39:32 +08:00
}
private async ETTask WaitOperateFinish3_1_4() //
{
var showUI = UIManager.Instance().ShowUI(UIType.StrongTips);
var strongTipsUI = showUI as StrongTipsUI;
strongTipsUI.SetContent("提示", "两人防化服整齐,拉链处和鄂下处密封良好。", () => { currentTask.SetResult(true); }, 1);
2023-09-18 03:39:32 +08:00
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);
2023-09-18 03:39:32 +08:00
await WaitOperateFinish_Click();
await currentTask;
UIManager.Instance().HideUI(UIType.StrongTips);
}
#endregion
2023-09-12 23:57:06 +08:00
// 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老师开门进入实验室动作
}
}