创建大客流实训(待完善)

This commit is contained in:
joylink_zhaoerwei 2024-07-15 10:29:36 +08:00
parent aa584ddef6
commit e3451a90b6
16 changed files with 1034 additions and 163 deletions

Binary file not shown.

View File

@ -3,7 +3,7 @@
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dif5iaw78818l"
uid="uid://be7rd6jrcyie4"
path="res://.godot/imported/people.glb-62bc0b5c85ed5a480c8eeb4d8043d67f.scn"
[deps]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

View File

@ -1,36 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cxcfm31rnpsh4"
path.s3tc="res://.godot/imported/people_DKL_SB_J.jpg-f39f041a529fd3cfc3493af8ca188db9.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={}
[deps]
source_file="res://Model/people/people_DKL_SB_J.jpg"
dest_files=["res://.godot/imported/people_DKL_SB_J.jpg-f39f041a529fd3cfc3493af8ca188db9.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cmwordcwuj802"
uid="uid://bkavdbsiwsgan"
path.s3tc="res://.godot/imported/people_n_bigys_1.jpg-bedd72229e926543012b08dd6ea5fffd.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],

View File

@ -0,0 +1,12 @@
extends Area3D
var passPeopleCount = 0
func _ready():
self.connect("area_entered",Callable(self,"_on_area_entered"))
func _on_area_entered(area: Area3D) -> void:
var peopleWalkFollow = area.get_parent().get_parent()
if peopleWalkFollow is PlayerPathFollow :
passPeopleCount += 1
self.disconnect("area_entered",Callable(self,"_on_area_entered"))

File diff suppressed because one or more lines are too long

View File

@ -55,8 +55,8 @@ func _on_player_area_enter(area: Area3D) -> void:
if player.currentExerciseType == player.Exercise_type.pathFollow and (area.is_in_group('needStopWalk') or area.is_in_group('player')):
peopleStopWalk()
var waitTimeWalkAgain = 0.2
func _on_player_area_exit(area: Area3D) -> void:
if player.currentExerciseType == player.Exercise_type.pathFollow and (area.is_in_group('needStopWalk') or area.is_in_group('player')) :
await get_tree().create_timer(0.5).timeout
await get_tree().create_timer(waitTimeWalkAgain).timeout
peopleBeginWalk()

View File

@ -33,14 +33,23 @@ func hasScreenDoorOpen ()-> bool:
return true
return false
##屏蔽门开关门没声音
func screenDoorOpenAndCloseNoMusic ()-> void:
for child in screenDoorALL:
child.playScreenDoorMusic = false
func _ready() -> void:
var screenDoor_scene = preload("res://sceen/platform/screenDoor.tscn")
for i in range(1, 5):
var lastScreenDoorPosX = -4.385
for i in range(1, 6):
var screenDoorInstance = screenDoor_scene.instantiate()
add_child(screenDoorInstance)
screenDoorALL.append(screenDoorInstance)
screenDoorInstance.position.x=(i-1)*4.385
if i % 4 ==1 and i != 1:
screenDoorInstance.position.x=lastScreenDoorPosX+6.104
else:
screenDoorInstance.position.x=lastScreenDoorPosX+4.385
lastScreenDoorPosX = screenDoorInstance.position.x
screenDoorInstance.name = 'screenDoor{0}'.format([i])
screenDoorInstance.connect("clickLcbSignalAndSent",Callable($LCB,"_on_screen_door_click_lcb_signal"))
screenDoorInstance.connect("clicksScreenDoorSignal",Callable($ScreenDoorOperate,"_on_screen_door_click_signal"))

View File

@ -29,6 +29,7 @@ enum ScreenDoor_State{
close,# 关到位
}
var playScreenDoorMusic = true
##屏蔽门的状态
@onready var screenDoorState : ScreenDoor_State = ScreenDoor_State.close :
set(value):
@ -37,11 +38,13 @@ enum ScreenDoor_State{
if screenDoorState == ScreenDoor_State.opening :
left_animation_player.play("leftOpen")
right_animation_player.play("rightOpen")
$AudioStreamPlayer.play()
if playScreenDoorMusic :
$AudioStreamPlayer.play()
elif screenDoorState == ScreenDoor_State.closeing :
left_animation_player.play("leftClose")
right_animation_player.play("rightClose")
$AudioStreamPlayer.play()
if playScreenDoorMusic :
$AudioStreamPlayer.play()
##打开屏蔽门
func openScreenDoor (isUseLCBKey=false)-> void:

View File

@ -11,7 +11,9 @@ signal AllClickShortcutToolModel2(equipmentName:String, equipmentInfo: Variant)
func allTimerStopAndShowRedStripe() -> void:
for child in [$picketlineModelAtB,$picketlineModelAtA,$picketlineModelAtGateB,$picketlineModelAtGateA]:
child.get_node('Timer').stop()
child.get_node('redStripe').visible = true
var redStripe = child.get_node('redStripe')
redStripe.position.y = 0
redStripe.visible = true
var picketlineModelAtBCountTime = 0
func _picketlineModelAtB_timer_timeout() -> void:

View File

@ -122,6 +122,7 @@ func playerGoToNextArea(peopleWalkFollow:PlayerPathFollow,nextArea: PlayerWalkAr
await get_tree().create_timer(5).timeout
playerGoToNextArea(peopleWalkFollow,PlayerWalkArea3D.entranceGateArea)
PlayerWalkArea3D.entranceGateArea:
peopleWalkFollow.waitTimeWalkAgain = 0.5
walkByPathFollow(targetAreaInfo.entranceGateArea,peopleWalkFollow)
await peopleWalkFollow.player.ArriveTargetPos
await get_tree().create_timer(0.2).timeout
@ -133,9 +134,9 @@ func playerGoToNextArea(peopleWalkFollow:PlayerPathFollow,nextArea: PlayerWalkAr
PlayerWalkArea3D.gangwayDownArea:
walkByPathFollow(targetAreaInfo.gangwayDownArea,peopleWalkFollow)
await peopleWalkFollow.player.ArriveTargetPos
playerGoToNextArea(peopleWalkFollow,PlayerWalkArea3D.screenDoorWaitArea)
#PlayerWalkArea3D.screenDoorWaitArea:
#goToScreenDoorAreaAndWaitTrain(peopleWalkFollow,0)
#playerGoToNextArea(peopleWalkFollow,PlayerWalkArea3D.screenDoorWaitArea)
PlayerWalkArea3D.screenDoorWaitArea:
goToScreenDoorAreaAndWaitTrain(peopleWalkFollow,0)
const areaBackInfo = {
'B':{
@ -193,11 +194,12 @@ var screenDoorAreaInfo = [
##进入指定屏蔽门区域并等待上车
func goToScreenDoorAreaAndWaitTrain(peopleWalkFollow:PlayerPathFollow, screenDoorAreaInfoIndex:int) -> void:
var screenDoorPos = $platform.get_node(screenDoorAreaInfo[screenDoorAreaInfoIndex].screenDoorName).get_node('dimiantishi').get_global_position()
var addPoint = Vector3(screenDoorPos.x,screenDoorPos.y,screenDoorPos.z+2)
screenDoorPos.z += 1.2
var addPoint = Vector3(screenDoorPos.x,screenDoorPos.y,screenDoorPos.z+3.2)
walkByPathFollow([addPoint,screenDoorPos],peopleWalkFollow)
await self.screenDoorOpenConfirmSignal
var trainPoint1 = Vector3(screenDoorPos.x,screenDoorPos.y,screenDoorPos.z-3)
var trainPoint2 = Vector3(screenDoorPos.x+3,screenDoorPos.y,screenDoorPos.z-3)
var trainPoint1 = Vector3(screenDoorPos.x,screenDoorPos.y,screenDoorPos.z-3.5)
var trainPoint2 = Vector3(screenDoorPos.x+3,screenDoorPos.y,screenDoorPos.z-3.5)
walkByPathFollow([trainPoint1,trainPoint2],peopleWalkFollow)
await self.screenDoorCloseConfirmSignal
peopleWalkFollow.queue_free()
@ -205,14 +207,15 @@ func goToScreenDoorAreaAndWaitTrain(peopleWalkFollow:PlayerPathFollow, screenDoo
const ArrayUtils = preload("res://util/ArrayUtils.gd")
func _on_screen_door_wait_area_screen_door_area_enter(curentArea: Area3D, peopleWalkFollow: PlayerPathFollow) -> void:
var waitPeopleCounts = [$AllScreenDoorWaitArea/ScreenDoorWaitArea1.waitPeopleCount,$AllScreenDoorWaitArea/ScreenDoorWaitArea2.waitPeopleCount,$AllScreenDoorWaitArea/ScreenDoorWaitArea3.waitPeopleCount]
var waitPeopleCounts = [$AllScreenDoorWaitArea/ScreenDoorWaitArea1.waitPeopleCount,$AllScreenDoorWaitArea/ScreenDoorWaitArea2.waitPeopleCount,$AllScreenDoorWaitArea/ScreenDoorWaitArea3.waitPeopleCount,$AllScreenDoorWaitArea/ScreenDoorWaitArea4.waitPeopleCount]
for index in range(screenDoorAreaInfo.size()):
if screenDoorAreaInfo[index].areaName == curentArea.name and curentArea.waitPeopleCount-1 <= ArrayUtils.removeElementByIndex(waitPeopleCounts,index).min() :
peopleWalkFollow.peopleStopWalk()
goToScreenDoorAreaAndWaitTrain(peopleWalkFollow,index)
var trainLeaveAtDownPlatform = true
func _on_screen_door_wait_area_1_area_entered(area: Area3D) -> void:
if $AllScreenDoorWaitArea/ScreenDoorWaitArea1.waitPeopleCount>=4 :
if $AllScreenDoorWaitArea/ScreenDoorWaitArea1.waitPeopleCount>=4 and trainLeaveAtDownPlatform:
trainComeAndLeace()
##通过PathFollow运动
@ -236,27 +239,35 @@ func startGeneratePeople() -> void:
##A入口生成
var totalOfAEntrance=0
func generatePeopleAtAEntrance() -> void:
if $AllAreaDetection/StationHallAExitAreaDetection.passPeopleCount< 1 and currentActiveCameraOfLarge != Camera_name.APassage:
generatePeopleAtStationHallAExit()
if totalOfAEntrance< 15:
totalOfAEntrance += 1
#$AllTimer/generatePeopleAEntranceTimer.wait_time = 10000
var peoplePosition = Vector3(-80,9.8,40.5)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.entrance,'A',totalOfAEntrance)
else :
$AllTimer/generatePeopleAEntranceTimer.stop()
if $AllAreaDetection/APassageAreaDetection.passPeopleCount< 0 and currentActiveCameraOfLarge != Camera_name.APassage:
generatePeopleAPassage()
if $AllAreaDetection/TicketingLfetAreaDetection.passPeopleCount< 0 and currentActiveCameraOfLarge != Camera_name.BTVM:
generatePeopleAtBTVM()
totalOfAEntrance += 1
if totalOfAEntrance > 15:
$AllTimer/generatePeopleAEntranceTimer.wait_time = 10
var peoplePosition = Vector3(-80,9.8,40.5)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.entrance,'A',totalOfAEntrance)
##A出口生成
var totalOfStationHallAExit=0
func generatePeopleAtStationHallAExit() -> void:
totalOfStationHallAExit += 1
##A通道生成
var totalOfAPassage=0
func generatePeopleAPassage() -> void:
totalOfAPassage += 1
var peoplePosition = Vector3(3,5.22,41)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.stationHallExit,'A')
##A闸机生成
var totalOfBTVM=0
func generatePeopleAtBTVM() -> void:
totalOfBTVM += 1
var peoplePosition = Vector3(-11.27,5.22,18.74)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.entranceGateArea,'A')
##售票厅循环排队
var totalOfBTicketingArea=0
var totalOfBTicketingArea = 8
func generatePeopleAtBTicketingArea() -> void:
if $AllAreaDetection/TicketingAreaDetection.waitPeopleCount <7:
if $AllAreaDetection/TicketingAreaDetection.waitPeopleCount < totalOfBTicketingArea:
var peoplrInstance = people_scene.instantiate()
add_child(peoplrInstance)
peoplrInstance.global_position = Vector3(1,5.22,15.84)
@ -268,6 +279,19 @@ func generatePeopleAtBTicketingArea() -> void:
await peoplrInstance.player.ArriveTargetPos
peoplrInstance.queue_free()
##下行站台生成
func letPeopleWaitTrainAtDownPlatform() -> void:
$AllTimer/generatePeopleDownPlatformTimer.start()
var totalOfDownPlatform = 16
func generatePeopleAtDownPlatform() -> void:
if totalOfDownPlatform > 0:
totalOfDownPlatform -= 1
var peoplePosition = Vector3(13.54,0.85,11.2)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.screenDoorWaitArea,'A')
else :
$AllTimer/generatePeopleDownPlatformTimer.stop()
##B入口生成(从进到出3分钟间隔10秒18个人完成循环)
var totalOfBEntrance=18
func generatePeopleAtBEntrance() -> void:
@ -298,17 +322,6 @@ func generatePeopleAtDEntrance() -> void:
else :
$AllTimer/generatePeopleDEntranceTimer.stop()
##下行站台生成
var totalOfDownPlatform=0
func generatePeopleAtDownPlatform() -> void:
if totalOfDownPlatform< 9:
totalOfDownPlatform += 1
var peoplePosition = Vector3(13.54,0.85,11.2)
generatePeopleAtDesignatedArea(peoplePosition,PlayerWalkArea3D.screenDoorWaitArea,'A')
else :
$AllTimer/generatePeopleDownPlatformTimer.stop()
##在指定区域增加人
func generatePeopleAtDesignatedArea(peoplePosition:Vector3, goToNextArea: PlayerWalkArea3D,generateArea:String, peopleId:int=0) -> void:
var peoplrInstance = people_scene.instantiate()
@ -323,10 +336,12 @@ func generatePeopleAtDesignatedArea(peoplePosition:Vector3, goToNextArea: Player
signal trainComingSignal()
func trainComeAndLeace() -> void:
trainLeaveAtDownPlatform = false
trainComingSignal.emit()
self.trainComeAndOpenScreenDoor()
await get_tree().create_timer(25).timeout
self.closeScreenDoorAndTrainLeave()
trainLeaveAtDownPlatform = true
func temporaryTicketOfficeComing() -> void:
$platform.get_node('TemporaryTicketOffice').temporaryTicketOfficeComing()
@ -336,3 +351,4 @@ func allTimerStopAndShowRedStripe() -> void:
func _ready():
$platform.showCameraAndShortcutTool()
$platform.screenDoorOpenAndCloseNoMusic()

View File

@ -1,12 +1,13 @@
[gd_scene load_steps=18 format=3 uid="uid://dmlksr5k23wwk"]
[gd_scene load_steps=19 format=3 uid="uid://dmlksr5k23wwk"]
[ext_resource type="Script" path="res://sceen/totalOfLargePassengerFlow.gd" id="1_5iiv2"]
[ext_resource type="PackedScene" uid="uid://cmnsn2joxo68l" path="res://sceen/platform/platform.tscn" id="1_rjva4"]
[ext_resource type="PackedScene" uid="uid://c8ryhiaac4s0n" path="res://Model/trainingLargePassengerFlow/platformOfLarge.blend" id="2_2i2vl"]
[ext_resource type="AudioStream" uid="uid://dgqmfnjgrea07" path="res://Assets/training_speech/trainComing.mp3" id="4_6ctdm"]
[ext_resource type="PackedScene" uid="uid://bylj0hfttmmqf" path="res://sceen/Area3D/ScreenDoorWaitArea.tscn" id="6_1spme"]
[ext_resource type="Script" path="res://sceen/Area3D/APassageAreaDetection.gd" id="7_sgvbf"]
[ext_resource type="Script" path="res://sceen/Area3D/TicketingAreaDetection.gd" id="8_3kqgp"]
[ext_resource type="Script" path="res://sceen/Area3D/StationHallAExitAreaDetection.gd" id="8_tfyg3"]
[ext_resource type="Script" path="res://sceen/Area3D/TicketingLfetAreaDetection.gd" id="8_52vqq"]
[ext_resource type="PackedScene" uid="uid://ce8bos77837mf" path="res://sceen/people/peopleWalkFollow.tscn" id="9_po51r"]
[ext_resource type="PackedScene" uid="uid://nx6xnwcuq8cf" path="res://sceen/train/train.tscn" id="14_g0uwl"]
@ -141,7 +142,6 @@ one_shot = true
[node name="generatePeopleAEntranceTimer" type="Timer" parent="AllTimer"]
wait_time = 2.0
autostart = true
[node name="generatePeopleBEntranceTimer" type="Timer" parent="AllTimer"]
wait_time = 10.0
@ -155,13 +155,13 @@ autostart = true
wait_time = 2.0
autostart = true
[node name="generatePeopleDownPlatformTimer" type="Timer" parent="AllTimer"]
wait_time = 2.0
[node name="generatePeopleAtBTicketingArea" type="Timer" parent="AllTimer"]
wait_time = 2.0
autostart = true
[node name="generatePeopleDownPlatformTimer" type="Timer" parent="AllTimer"]
wait_time = 2.0
[node name="AllCamera" type="Node3D" parent="."]
[node name="SparePartsCabinet" type="Camera3D" parent="AllCamera"]
@ -181,7 +181,8 @@ transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.447
fov = 106.5
[node name="DownPlatform" type="Camera3D" parent="AllCamera"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.85725, 1.46787, 9.4)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.255, 1.673, 13.34)
fov = 62.5
[node name="StationHallAExit" type="Camera3D" parent="AllCamera"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.388, 7, 17.682)
@ -272,13 +273,23 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.15874, 1.1, 6.5)
[node name="ScreenDoorWaitArea3" parent="AllScreenDoorWaitArea" instance=ExtResource("6_1spme")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.005, 1.1, 6.5)
[node name="ScreenDoorWaitArea4" parent="AllScreenDoorWaitArea" instance=ExtResource("6_1spme")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4929, 1.1, 6.5)
[node name="AllAreaDetection" type="Node3D" parent="."]
[node name="StationHallAExitAreaDetection" type="Area3D" parent="AllAreaDetection"]
[node name="APassageAreaDetection" type="Area3D" parent="AllAreaDetection"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 5.3, 41)
script = ExtResource("8_tfyg3")
script = ExtResource("7_sgvbf")
[node name="CollisionShape3D" type="CollisionShape3D" parent="AllAreaDetection/StationHallAExitAreaDetection"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="AllAreaDetection/APassageAreaDetection"]
shape = SubResource("BoxShape3D_h5lh5")
[node name="TicketingLfetAreaDetection" type="Area3D" parent="AllAreaDetection"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -7.98678, 5.342, 18.7594)
script = ExtResource("8_52vqq")
[node name="CollisionShape3D" type="CollisionShape3D" parent="AllAreaDetection/TicketingLfetAreaDetection"]
shape = SubResource("BoxShape3D_h5lh5")
[node name="TicketingAreaDetection" type="Area3D" parent="AllAreaDetection"]
@ -290,7 +301,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.102997)
shape = SubResource("BoxShape3D_kqt6b")
[node name="peopleWalkFollow" parent="." instance=ExtResource("9_po51r")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.8, 12, -61)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.132, 12, 15.84)
[connection signal="allClickPlatformSignal" from="platform" to="." method="_on_platform_all_click_platform_signal"]
[connection signal="allScreenDoorLcbStateSignal" from="platform" to="." method="emitScreenDoorLcbStateChangeSignal"]
@ -304,11 +315,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.8, 12, -61)
[connection signal="timeout" from="AllTimer/generatePeopleBEntranceTimer" to="." method="generatePeopleAtBEntrance"]
[connection signal="timeout" from="AllTimer/generatePeopleCEntranceTimer" to="." method="generatePeopleAtCEntrance"]
[connection signal="timeout" from="AllTimer/generatePeopleDEntranceTimer" to="." method="generatePeopleAtDEntrance"]
[connection signal="timeout" from="AllTimer/generatePeopleDownPlatformTimer" to="." method="generatePeopleAtDownPlatform"]
[connection signal="timeout" from="AllTimer/generatePeopleAtBTicketingArea" to="." method="generatePeopleAtBTicketingArea"]
[connection signal="timeout" from="AllTimer/generatePeopleDownPlatformTimer" to="." method="generatePeopleAtDownPlatform"]
[connection signal="ScreenDoorAreaEnter" from="AllScreenDoorWaitArea/ScreenDoorWaitArea1" to="." method="_on_screen_door_wait_area_screen_door_area_enter"]
[connection signal="area_entered" from="AllScreenDoorWaitArea/ScreenDoorWaitArea1" to="." method="_on_screen_door_wait_area_1_area_entered"]
[connection signal="ScreenDoorAreaEnter" from="AllScreenDoorWaitArea/ScreenDoorWaitArea2" to="." method="_on_screen_door_wait_area_screen_door_area_enter"]
[connection signal="ScreenDoorAreaEnter" from="AllScreenDoorWaitArea/ScreenDoorWaitArea3" to="." method="_on_screen_door_wait_area_screen_door_area_enter"]
[connection signal="ScreenDoorAreaEnter" from="AllScreenDoorWaitArea/ScreenDoorWaitArea4" to="." method="_on_screen_door_wait_area_screen_door_area_enter"]
[connection signal="area_entered" from="AllAreaDetection/TicketingAreaDetection" to="AllAreaDetection/TicketingAreaDetection" method="_on_area_entered"]
[connection signal="area_exited" from="AllAreaDetection/TicketingAreaDetection" to="AllAreaDetection/TicketingAreaDetection" method="_on_area_exited"]

View File

@ -0,0 +1,836 @@
extends Node3D
## 实训名称
@export var trainingName: String = "实训"
## 场景描述
@export var trainingDesc: String = "场景描述"
var stepOperation = []
var handleStep = [
{
"stepName": "站厅站务员汇报车站客流情况 步骤一站厅站务员巡站发现站厅A出口有大量乘客涌入车站。",
"stepOperation": ['APassageway','APassage','StationHallAExit','Back','BPassageway','BPassage','StationHallBExit','Back','CPassageway','CPassage','StationHallCExit','Back','DPassageway','DPassage','StationHallDExit','Back','APassageway','StationHallAExit'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "站厅站务员汇报车站客流情况 步骤二:站厅站务员立即询问乘客,了解情况:乘客您好,当前进站人员集中,请问附近有什么活动吗?",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "乘客您好,当前进站人员集中,请问附近有什么活动吗?"
},
{
"stepName": "乘客(机器人)自动回复:附近体育馆举办赛事活动,刚结束。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/fjtygjbsghdgjs.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "站厅站务员汇报车站客流情况 步骤三站厅站务员对讲机汇报行车值班员值班站长值班员值班站长因附近体育馆举办赛事活动大量乘客集中到达车站A出入口。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "值班员值班站长因附近体育馆举办赛事活动大量乘客集中到达车站A出入口。"
},
{
"stepName": "值班站长(机器人):收到,做好乘客进站引导工作。值班员:收到",
"stepOperation": [],
"next": false,
"checkVoice": "",
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/sdzhckjzydgz.mp3",
"stepTip": false,
},
{
"stepName": "站厅站务员汇报车站客流情况 步骤四:站务员到车控室拿取手提广播、电扶梯钥匙、铁马、围挡、隔离带。",
"stepOperation": ['Back','VehicleControlRoom','handheldRadioModel','escalatorKeyModel','PartsArea','hoardingModel','metalBarrierModel','noticeSignsModel','picketlineModel'],
"doAfterFinisnStepOperation":waitTimeNextAfterFinishStepOperation,
"next": false,
"waitTime": 1.5,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "值班员操作ISCS进行广播各位乘客请注意本站客流较大请大家听从工作人员的指引有序进站并看护好随行的老人和孩子谢谢合作。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/gwckqzyklldyxjzxxhz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "组织乘客进站\n步骤一站厅站务员在站厅A出口处切换视口到站厅A出口处,并使用手提广播",
"stepOperation": ['Back','APassageway','StationHallAExit','handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤一站厅站务员在站厅A出口处通过手提广播组织乘客进站各位乘客请注意本站客流较大请排队购票或提前打开乘车二维码有序进站。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "各位乘客请注意,本站客流较大,请排队购票或提前打开乘车二维码有序进站。"
},
{
"stepName": "组织乘客进站\n步骤二站厅站务员在站厅A出口侧的进站闸机处切换视口到站厅A出口侧的进站闸机处,并使用手提广播。",
"stepOperation": ['Back','StationHallB','BInboundGate','handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤二站厅站务员在站厅A出口侧的进站闸机处引导乘客进站请抓紧扫码进站或刷卡进站。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "请抓紧扫码进站或刷卡进站。"
},
{
"stepName": "组织乘客进站\n步骤三站厅站务员发现B端每台TVM前排队乘客超过规定人数场面拥挤切换视口到B端TVM",
"stepOperation": ['BUpperStep','BLowerStep','BGangway','BTVM'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤四:站厅站务员使用手提广播。",
"stepOperation": ['handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤四站厅站务员人工广播引导乘客去A端买票各位乘客请注意本站站厅另一端乘客较少为了节省您的购票时间请到站厅另一端购票。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "各位乘客请注意,本站站厅另一端乘客较少,为了节省您的购票时间,请到站厅另一端购票。"
},
{
"stepName": "组织乘客进站\n步骤五站厅站务员对讲机联控值班站长值班站长B端TVM前排队乘客超过规定人数场面拥挤。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "值班站长B端TVM前排队乘客超过规定人数场面拥挤。"
},
{
"stepName": "值班站长机器人自动回复收到已安排保安将临时售票亭推至B端TVM处。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/sdyanbajlsspttztvm.mp3",
"doAfterFinisnPlay": temporaryTicketOfficeComing,
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "组织乘客进站\n步骤六站厅站务员在B端TVM使用手提广播。",
"stepOperation": ['handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤六站厅站务员在B端TVM使用手提广播引导乘客请需要购买单程票的乘客到自动售票机或临时售票亭排队购票。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "请需要购买单程票的乘客到自动售票机或临时售票亭排队购票。",
"doAfterFinisnCheckVoice": letPeopleWaitTrainAtDownPlatform,
},
{
"stepName": "组织乘客进站\n步骤七:站台巡视,切换视口到下行站台,使用手提广播。",
"stepOperation": ['StaionHallBack','DownPlatform','handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤七:站台站务员不断加强站台巡视,使用手提广播向候车乘客进行安全宣传:乘客您好,为了您的安全,请在黄色安全线内候车,谢谢合作。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "乘客您好,为了您的安全,请在黄色安全线内候车,谢谢合作。",
"notNestStepAfterFinisnCheckVoice": true,
},
{
"stepName": "组织乘客进站\n步骤八:列车进站,乘客上车时,使用手提广播。",
"stepOperation": ['handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "组织乘客进站\n步骤八:列车进站,乘客上车时,站台站务员使用手提广播向乘客宣传:上车时,请小心站台与列车之间的缝隙,在车门即将关闭时,请不要强行上车,以防车门夹伤。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "上车时,请小心站台与列车之间的缝隙,在车门即将关闭时,请不要强行上车,以防车门夹伤。",
"notNestStepAfterFinisnCheckVoice": true,
"doAfterFinisnCheckVoice": showFaultTipDialogAfterPlatformCrowd,
},
{
"stepName": "启动一级客流控制\n步骤一:站台站务员发现站台乘客拥挤,对讲机报告值班员:值班员,站台候车乘客较多,出现拥挤情况。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "值班员,站台候车乘客较多,出现拥挤情况。"
},
{
"stepName": "值班员对讲机回复:收到,做好站台乘客服务工作。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/sdzhztckfwgz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "值班站长机器人对讲机联系站台站务员车站启动一级客流控制将站厅B端扶梯改为上行。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/czqdyjklkzftgwsx.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "启动一级客流控制\n步骤二站台站务员对讲机回复车站启动一级客流控制将站厅B端扶梯改为上行收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "车站启动一级客流控制将站厅B端扶梯改为上行收到。"
},
{
"stepName": "启动一级客流控制\n步骤三站台站务员在站厅B端扶梯上部设置围挡切换视口到站厅B端",
"stepOperation": ['StationHallB','BUpperStep','hoarding'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动一级客流控制\n步骤四:站台站务员引导前往站台的乘客走楼梯:请走步梯前往站台。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "请走步梯前往站台。"
},
{
"stepName": "启动一级客流控制\n步骤五:待扶梯无乘客时,使用扶梯钥匙将扶梯方向改为上行。",
"stepOperation": ['BLowerStep','escalatorKey'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动一级客流控制\n步骤六:待扶梯正常运行后,撤出围挡。",
"stepOperation": ['BUpperStep','hoardingAtEscalatorUp'],
"doAfterFinisnStepOperation":waitTimeNextAfterFinishStepOperation,
"next": false,
"waitTime": 3,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "值班站长(机器人)对讲机联系站厅站务员:在站厅付费区各楼梯处设置警戒线,分批放行乘客前往站台,临时售票亭停止售票。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/zztffqszjjxlsspttzsp.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "启动一级客流控制\n步骤七:站厅站务员对讲机回复:在站厅付费区各楼梯处设置警戒线,分批放行乘客前往站台,临时售票亭停止售票,收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "在站厅付费区各楼梯处设置警戒线,分批放行乘客前往站台,临时售票亭停止售票,收到。"
},
{
"stepName": "启动一级客流控制\n步骤八:站厅站务员在各楼梯处设置警戒线。(B端)",
"stepOperation": ['BGangway','picketline'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动一级客流控制\n步骤八:站厅站务员通知乘客:现在站台客流较多,分批前往站台,请耐心等候。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站台客流较多,分批前往站台,请耐心等候。"
},
{
"stepName": "启动一级客流控制\n步骤九:站厅站务员在各楼梯处设置警戒线。(A端)",
"stepOperation": ['StaionHallBack','StaionHallA','AGangway','picketline'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动一级客流控制\n步骤九:站厅站务员通知乘客:现在站台客流较多,分批前往站台,请耐心等候。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站台客流较多,分批前往站台,请耐心等候。"
},
{
"stepName": "值班员操作ISCS进行广播因本站客流较大乘车等待时间较长请您转乘其他交通工具给您出行造成不便敬请谅解。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/ybzkdjdzcqtgzjqlj.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "值班站长(机器人)对讲机通知站厅站务员:在进站闸机处设置警戒线,分批放行乘客进站。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/zzjzjcszjjjfpfxckjz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "启动二级客流控制\n步骤一:站厅站务员对讲机回复:在进站闸机处设置警戒线,分批放行乘客进站,收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "在进站闸机处设置警戒线,分批放行乘客进站,收到。"
},
{
"stepName": "启动二级客流控制\n步骤二:站厅站务员在未关闭的进站闸机处设置警戒线。(A端)",
"stepOperation": ['AInboundGate','picketline'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动二级客流控制\n步骤二:站务员通知乘客:现在站内客流较多,分批进站,请耐心等候。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站内客流较多,分批进站,请耐心等候。"
},
{
"stepName": "启动二级客流控制\n步骤三:站厅站务员在未关闭的进站闸机处设置警戒线。(B端)",
"stepOperation": ['StaionHallBack','StationHallB','BInboundGate','picketline'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动二级客流控制\n步骤三:站务员通知乘客:现在站内客流较多,分批进站,请耐心等候。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站内客流较多,分批进站,请耐心等候。"
},
{
"stepName": "启动二级客流控制\n步骤四在站厅A出口使用手提广播。",
"stepOperation": ['StaionHallBack','APassageway','StationHallAExit','handheldRadio'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动二级客流控制\n步骤四站厅站务员在站厅A出口使用手提广播建议乘客使用其他交通工具因本站客流较大乘车等待时间较长请转乘其他交通工具给您出行造成不便敬请谅解。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "因本站客流较大,乘车等待时间较长,请转乘其他交通工具,给您出行造成不便,敬请谅解。",
"notNestStepAfterFinisnCheckVoice": true,
"doAfterFinisnCheckVoice": waitTimeNextAfterFinishCheckVoice,
},
{
"stepName": "值班员操作ISCS播放广播各位尊敬的乘客本次开往会展中心站方向的列车将不停站通过请您等候下一趟列车感谢您的谅解与合作。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/gwzjdckbtztggxndljyhz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "值班员操作ISCS播放广播各位尊敬的乘客本次开往体育中心站方向的列车将不停站通过请您等候下一趟列车感谢您的谅解与合作。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/gwzjtcktyzxzbtzgxndljyhz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "值班站长机器人对讲机联系站厅站务员AB口出入口只出不进CD出入口内外设置铁马减缓进站客流。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/abkzcbjcdksztmjhjzkj.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "启动三级客流控制\n步骤一站厅站务员对讲机回复AB出入口只出不进CD出入口内外设置铁马减缓进站客流收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "AB出入口只出不进CD出入口内外设置铁马减缓进站客流收到。"
},
{
"stepName": "启动三级客流控制\n步骤二站厅站务员在A口摆放只出不进的宣传告示牌。(A口)",
"stepOperation": ['Back','APassageway','noticeSigns'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动三级客流控制\n步骤二站务员阻止乘客进站现在站内客流较多该口只出不进请从CD两个出入口进站。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站内客流较多该口只出不进请从CD两个出入口进站。"
},
{
"stepName": "启动三级客流控制\n步骤三站厅站务员在B口摆放只出不进的宣传告示牌。(B口)",
"stepOperation": ['Back','BPassageway','noticeSigns'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动三级客流控制\n步骤三站务员阻止乘客进站现在站内客流较多该口只出不进请从CD两个出入口进站。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现在站内客流较多该口只出不进请从CD两个出入口进站。"
},
{
"stepName": "启动三级客流控制\n步骤四站务员分别在C口D口两个出入口通道和站外处设置铁马。",
"stepOperation": ['Back','CPassageway','metalBarrier','StationHallCExit','metalBarrier','Back','DPassageway','metalBarrier','StationHallDExit','metalBarrier'],
"doAfterFinisnStepOperation":waitTimeNextAfterFinishStepOperation,
"next": false,
"waitTime": 3,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "值班站长(机器人)发现乘客持续增多,对讲机联系站务员:现各出入口均只出不进,阻止乘客进站。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/xcrkjzcbjzzckjz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "启动三级客流控制\n步骤五:站厅站务员对讲机回复:现各出入口均只出不进,阻止乘客进站,收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "现各出入口均只出不进,阻止乘客进站,收到。"
},
{
"stepName": "启动三级客流控制\n步骤六站厅站务员在C口摆放只出不进的宣传告示牌。(C口)",
"stepOperation": ['Back','CPassageway','noticeSigns'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动三级客流控制\n步骤六:站厅站务员阻止乘客进站:由于车站乘客较多,各出入口均只出不进,请选择其他交通方式出行,谢谢合作。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "由于车站乘客较多,各出入口均只出不进,请选择其他交通方式出行,谢谢合作。"
},
{
"stepName": "启动三级客流控制\n步骤七站厅站务员在D口摆放只出不进的宣传告示牌。(D口)",
"stepOperation": ['Back','DPassageway','noticeSigns'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "启动三级客流控制\n步骤七:站厅站务员阻止乘客进站:由于车站乘客较多,各出入口均只出不进,请选择其他交通方式出行,谢谢合作。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "由于车站乘客较多,各出入口均只出不进,请选择其他交通方式出行,谢谢合作。",
},
{
"stepName": "启动三级客流控制\n步骤八:站厅站务员在站台巡视。",
"stepOperation": ['Back','DownPlatform'],
"doAfterFinisnStepOperation":showFaultTipDialogAfterPlatformNotCrowd,
"next": false,
"waitTime": 5,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤一:站台站务员发现站台乘客不拥挤后,对讲机汇报车控室:值班员,目前站台已不拥挤。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "值班员,目前站台已不拥挤。"
},
{
"stepName": "值班员对讲机回复:收到,继续做好站台乘客服务工作。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/sdjxzhztckfwgz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "值班站长(机器人)对讲机通知站厅站务员:车站恢复正常运营,组织乘客正常进出站。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/trainingLargePassengerFlow/czhfzcyyzzckzcjcz.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "取消三级客流控制\n步骤二:站务员对讲机回复:车站恢复正常运营,组织乘客正常进出站,收到。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "车站恢复正常运营,组织乘客正常进出站,收到。",
"doAfterFinisnCheckVoice": allTimerStopAndShowRedStripe,
},
{
"stepName": "取消三级客流控制\n步骤三:站务员撤除站厅付费区楼梯处警戒线、进站闸机处警戒线,取消分批放行的措施。",
"stepOperation": ['StationHallB','BInboundGate','picketlineModelAtGateB','BGangway','picketlineModelAtB','StaionHallBack','StaionHallA','AInboundGate','picketlineModelAtGateA','AGangway','picketlineModelAtA'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤四站务员在站台A端扶梯下部设置围挡。",
"stepOperation": ['StaionHallBack','StationHallB','BLowerStep','hoarding'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤五:站务员引导前往站厅的乘客走楼梯:请走步梯前往站厅。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "请走步梯前往站厅。"
},
{
"stepName": "取消三级客流控制\n步骤六:待扶梯无乘客时,站务员使用扶梯钥匙将扶梯方向改为下行。",
"stepOperation": ['escalatorKey'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤七:待扶梯正常运行后,撤出围挡。",
"stepOperation": ['hoardingAtEscalatorDown'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤八:站务员撤除车站所有出入口宣传告示牌。",
"stepOperation": ['StaionHallBack','APassageway','noticeSignsModelAtAEntrance','Back','BPassageway','noticeSignsModelAtBEntrance','Back','CPassageway','noticeSignsModelAtCEntrance','Back','DPassageway','noticeSignsModelAtDEntrance'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤九站务员撤除C口和D口所有铁马。",
"stepOperation": ['metalBarrierModelAtDEntrance','StationHallDExit','metalBarrierModelAtStationHallDExit','Back','CPassageway','metalBarrierModelAtCEntrance','StationHallCExit','metalBarrierModelAtStationHallCExit','Back'],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": ""
},
{
"stepName": "取消三级客流控制\n步骤十:站务员对讲机汇报值班员,值班站长:值班员,值班站长,车站已恢复正常运营。",
"stepOperation": [],
"next": false,
"play": false,
"playPath": "",
"stepTip": true,
"checkVoice": "值班员,值班站长,车站已恢复正常运营。"
},
{
"stepName": "值班站长(机器人)自动回复:收到。值班员对讲机回复:收到。",
"stepOperation": [],
"next": false,
"play": true,
"playPath": "res://Assets/training_speech/sd.mp3",
"stepTip": false,
"checkVoice": "",
},
{
"stepName": "实训完成!",
"stepOperation": [],
"next": false,
"checkVoice": "",
"play": false,
"playPath": "",
"stepTip": true,
},
]
## 步骤操作执行index
var stepOperationIndex = 0
## 步骤执行index
var handleStepIndex = 0
func _ready():
$TrainingDescDialog.title = trainingName
$TrainingDescDialog.updateSceneDesc(trainingDesc)
$TrainingDescDialog.grab_focus()
stepOperationIndex = 0
handleStepIndex = 0
var voiceCommunication
func _on_training_desc_dialog_start_training() -> void:
voiceCommunication = preload("res://Communication/voice_communication.tscn").instantiate()
add_child(voiceCommunication)
$total.startGeneratePeople()
nextStep()
func nextStep():
if handleStepIndex < handleStep.size():
var step = handleStep[handleStepIndex]
handleStepIndex = handleStepIndex + 1
if step.stepTip == true and $total.trainingMode != TotalScene.Training_Mode.Exam:
$StepTip.updateOperationTip(step.stepName)
if step.stepOperation.size() > 0:
initStepOperation()
if step.next == true:
await get_tree().create_timer(step.waitTime).timeout
nextStep()
if step.checkVoice:
await voiceCommunication.speech_record_check(step.checkVoice)
if !step.has('notNestStepAfterFinisnCheckVoice') :
nextStep()
nextStep()
if !step.has('doAfterFinisnCheckVoice') :
step['doAfterFinisnCheckVoice'].call()
if step.play:
var sound = load(step.playPath)
await voiceCommunication.play_reply(sound)
if step.has('doAfterFinisnPlay') :
step['doAfterFinisnPlay'].call()
nextStep()
func setOperationNodeAndTip():
$total.currenNeedClickNode = stepOperation[stepOperationIndex]
if $total.trainingMode == TotalScene.Training_Mode.Teach:
$TrainTip.setTrainingTip($total.allClickEquipmentInfo[stepOperation[stepOperationIndex]])
func initStepOperation():
stepOperation = handleStep[handleStepIndex-1].stepOperation
stepOperationIndex = 0
setOperationNodeAndTip()
##与站台交互点击信号
func _on_total_current_click_check_signal(isCorrect):
if isCorrect:
stepOperationIndex = stepOperationIndex + 1
$StepJudgment.hideError()
if stepOperationIndex < stepOperation.size():
await get_tree().create_timer(0.05).timeout
setOperationNodeAndTip()
else:
$TrainTip.setTrainingTip('')
if handleStep[handleStepIndex-1].has('doAfterFinisnStepOperation') :
handleStep[handleStepIndex-1]['doAfterFinisnStepOperation'].call(handleStep[handleStepIndex-1])
else :
nextStep()
else:
if $total.trainingMode != TotalScene.Training_Mode.Exam:
$StepJudgment.showError()
func _on_step_tip_click_next_step() -> void:
var step = handleStep[handleStepIndex-1]
if step.checkVoice:
voiceCommunication._reset_record_state()
if !step.has('notNestStepAfterFinisnCheckVoice') :
nextStep()
if step.has('doAfterFinisnCheckVoice') :
step['doAfterFinisnCheckVoice'].call()
##完成某项需要做的其它事
func waitTimeNextAfterFinishStepOperation(currentStep) -> void:
await get_tree().create_timer(currentStep.waitTime).timeout
nextStep()
func waitTimeNextAfterFinishCheckVoice() -> void:
await get_tree().create_timer(3).timeout
nextStep()
func letPeopleWaitTrainAtDownPlatform() -> void:
$total.letPeopleWaitTrainAtDownPlatform()
func temporaryTicketOfficeComing() -> void:
$total.temporaryTicketOfficeComing()
func allTimerStopAndShowRedStripe() -> void:
$total.allTimerStopAndShowRedStripe()
##提示弹框点确定触发下一步
func showFaultTipDialogAfterPlatformCrowd() -> void:
await get_tree().create_timer(15).timeout
$FaultTipDialog.show()
func showFaultTipDialogAfterPlatformNotCrowd(currentStep) -> void:
await get_tree().create_timer(currentStep.waitTime).timeout
$FaultTipDialog.updateSceneDesc('目前站台已不拥挤')
$FaultTipDialog.show()
func _on_fault_tip_dialog_comfirm_signal() -> void:
nextStep()
##车来后触发下一步
func _on_total_train_coming_signal() -> void:
nextStep()
func _on_confirm_dialog_two_cancel() -> void:
get_tree().paused = false
func _on_confirm_dialog_two_confirm() -> void:
get_tree().paused = false
get_tree().reload_current_scene()

View File

@ -0,0 +1,41 @@
[gd_scene load_steps=9 format=3 uid="uid://csg67dg42014b"]
[ext_resource type="Script" path="res://trainings/trainingLargePassengerFlow/trainingLargePassengerFlow.gd" id="1_vwvl8"]
[ext_resource type="PackedScene" uid="uid://dmlksr5k23wwk" path="res://sceen/totalOfLargePassengerFlow.tscn" id="2_hpywa"]
[ext_resource type="PackedScene" uid="uid://qh8b3g6n3k2u" path="res://trainings/training_desc_dialog.tscn" id="3_s6lw0"]
[ext_resource type="PackedScene" uid="uid://ckoxw6kgpjyhd" path="res://trainings/trainTip.tscn" id="4_yhq46"]
[ext_resource type="PackedScene" uid="uid://b41vwoibfy5c6" path="res://trainings/stepJudgment.tscn" id="5_2fafh"]
[ext_resource type="PackedScene" uid="uid://b3whbe3mau53w" path="res://trainings/confirmDialog/confirmDialog.tscn" id="6_31fg0"]
[ext_resource type="PackedScene" uid="uid://yhr1n6e2m2b6" path="res://trainings/stepTip/stepTip.tscn" id="7_4ksgv"]
[ext_resource type="PackedScene" uid="uid://b055j66siytth" path="res://trainings/faultTip/fault_tip_dialog.tscn" id="8_5hr5j"]
[node name="trainingLargePassengerFlow" type="Node3D"]
script = ExtResource("1_vwvl8")
trainingName = "车站大客流应急处置"
trainingDesc = "X 年X 月X 日X 时X 分火车站因附近体育馆举办赛事活动引发大客流A口位于站厅B端进站客流猛增客流初起阶段车站售票能力不足A端每台TVM前排队乘客超过规定人数场面拥挤此时站厅付费区与站台客流正常。车站增加售票能力后站台乘客逐渐增多达到一级客流控制警戒线车站启动一级客流控制车站执行一级客流控制措施后进站客流仍持续增加站厅付费区乘客达到饱和状态车站启动二级客流控制车站执行二级客流控制措施后站台、站厅均达到客流控制警戒线车站执行三级客流控制。"
[node name="total" parent="." instance=ExtResource("2_hpywa")]
[node name="TrainingDescDialog" parent="." instance=ExtResource("3_s6lw0")]
[node name="ConfirmDialog" parent="." instance=ExtResource("6_31fg0")]
visible = false
[node name="StepTip" parent="." instance=ExtResource("7_4ksgv")]
[node name="TrainTip" parent="." instance=ExtResource("4_yhq46")]
[node name="StepJudgment" parent="." instance=ExtResource("5_2fafh")]
[node name="FaultTipDialog" parent="." instance=ExtResource("8_5hr5j")]
visible = false
tipDesc = "站台候车乘客较多,出现拥挤"
[connection signal="currentClickCheckSignal" from="total" to="." method="_on_total_current_click_check_signal"]
[connection signal="trainComingSignal" from="total" to="." method="_on_total_train_coming_signal"]
[connection signal="StartTraining" from="TrainingDescDialog" to="." method="_on_training_desc_dialog_start_training"]
[connection signal="close_requested" from="TrainingDescDialog" to="TrainingDescDialog" method="_on_close_requested"]
[connection signal="two_cancel" from="ConfirmDialog" to="." method="_on_confirm_dialog_two_cancel"]
[connection signal="two_confirm" from="ConfirmDialog" to="." method="_on_confirm_dialog_two_confirm"]
[connection signal="clickNextStep" from="StepTip" to="." method="_on_step_tip_click_next_step"]
[connection signal="comfirmSignal" from="FaultTipDialog" to="." method="_on_fault_tip_dialog_comfirm_signal"]