godot-psd-training/UI/ShortcutTool/shortcutTool.gd

131 lines
4.7 KiB
GDScript

extends Node2D
##场景中需要布置的快捷工具对应的实体
@export var shortcutToolModel2: ShortcutToolModel2
@export var ElevatorAtB: Elevator
@export var ElevatorAtA: Elevator
##是否允许操作
var allowHandle :bool = true
##所有ShortTool点击操作汇总
signal AllClickShortcutTool(equipmentName:String,equipmentInfo)
#电扶梯钥匙
func _on_escalator_key_pressed() -> void:
AllClickShortcutTool.emit('escalatorKey',self)
if !allowHandle :
return
var currentCamera :LargePassengerFlowScene.Camera_name = $"..".getCurrentCamera()
if currentCamera == LargePassengerFlowScene.Camera_name.BLowerStep or currentCamera == LargePassengerFlowScene.Camera_name.ALowerStep:
ElevatorAtB.useKeyChangeExerciseType()
ElevatorAtA.useKeyChangeExerciseType()
#手提广播
func _on_handheld_radio_pressed() -> void:
AllClickShortcutTool.emit('handheldRadio',self)
if !allowHandle :
return
#围挡(扶梯处)
func _on_hoarding_pressed() -> void:
AllClickShortcutTool.emit('hoarding',self)
if !allowHandle :
return
showSetShortcutToolEntity()
#警戒线(进站闸机处)
func _on_picketline_pressed() -> void:
AllClickShortcutTool.emit('picketline',self)
if !allowHandle :
return
showSetShortcutToolEntity()
#铁马
func _on_metal_barrier_pressed() -> void:
AllClickShortcutTool.emit('metalBarrier',self)
if !allowHandle :
return
showSetMetalBarrier()
#警示牌
func _on_notice_signs_pressed() -> void:
AllClickShortcutTool.emit('noticeSigns',self)
if !allowHandle :
return
showSetShortcutToolEntity()
##显示对应布置的工具
func showSetShortcutToolEntity()-> void:
var currentCamera :LargePassengerFlowScene.Camera_name = $"..".getCurrentCamera()
var camera_to_node_path := {
LargePassengerFlowScene.Camera_name.BUpperStep: 'hoardingAtEscalatorUp',
LargePassengerFlowScene.Camera_name.ALowerStep: 'hoardingAtEscalatorDown',
LargePassengerFlowScene.Camera_name.BGangway: 'picketlineModelAtB',
LargePassengerFlowScene.Camera_name.AGangway: 'picketlineModelAtA',
LargePassengerFlowScene.Camera_name.BInboundGate: 'picketlineModelAtGateB',
LargePassengerFlowScene.Camera_name.AInboundGate: 'picketlineModelAtGateA',
LargePassengerFlowScene.Camera_name.AEntrance: 'noticeSignsModelAtAEntrance',
LargePassengerFlowScene.Camera_name.BEntrance: 'noticeSignsModelAtBEntrance',
LargePassengerFlowScene.Camera_name.CEntrance: 'noticeSignsModelAtCEntrance',
LargePassengerFlowScene.Camera_name.DEntrance: 'noticeSignsModelAtDEntrance',
}
for camera in camera_to_node_path.keys():
if currentCamera == camera:
var node_path = camera_to_node_path[camera]
var entity = shortcutToolModel2.get_node(node_path)
entity.position.y += 30
entity.visible = true
if node_path in ['picketlineModelAtB','picketlineModelAtA','picketlineModelAtGateB','picketlineModelAtGateA']:
entity.get_node('Timer').start()
break
##显示对应布置的工具(铁马单独处理)
func showSetMetalBarrier()-> void:
var currentCamera :LargePassengerFlowScene.Camera_name = $"..".getCurrentCamera()
var camera_to_node_path := {
LargePassengerFlowScene.Camera_name.DEntrance: 'metalBarrierModelAtDEntrance',
LargePassengerFlowScene.Camera_name.StationHallDExit: 'metalBarrierModelAtStationHallDExit',
LargePassengerFlowScene.Camera_name.CEntrance: 'metalBarrierModelAtCEntrance',
LargePassengerFlowScene.Camera_name.StationHallCExit: 'metalBarrierModelAtStationHallCExit',
}
for camera in camera_to_node_path.keys():
if currentCamera == camera:
var node_path = camera_to_node_path[camera]
var entity = shortcutToolModel2.get_node(node_path)
entity.position.y += 30
entity.visible = true
break
##点击快捷工具对应的实物触发
func clickShortcutToolEntity(shortcutToolName:String,equipmentInfo: Variant) -> void:
if !equipmentInfo.allowHandle :
return
if shortcutToolName == 'escalatorKeyModel':
$MarginContainer/HBoxContainer/escalatorKey.show()
$MarginContainer/HBoxContainer/escalatorKeyT.hide()
elif shortcutToolName == 'handheldRadioModel':
$MarginContainer/HBoxContainer/handheldRadio.show()
$MarginContainer/HBoxContainer/handheldRadioT.hide()
elif shortcutToolName == 'hoardingModel':
$MarginContainer/HBoxContainer/hoarding.show()
$MarginContainer/HBoxContainer/hoardingT.hide()
elif shortcutToolName == 'picketlineModel':
$MarginContainer/HBoxContainer/picketline.show()
$MarginContainer/HBoxContainer/picketlineT.hide()
elif shortcutToolName == 'metalBarrierModel':
$MarginContainer/HBoxContainer/metalBarrier.show()
$MarginContainer/HBoxContainer/metalBarrierT.hide()
elif shortcutToolName == 'noticeSignsModel':
$MarginContainer/HBoxContainer/noticeSigns.show()
$MarginContainer/HBoxContainer/noticeSignsT.hide()