godot-psd-training/UI/psl/key_switch.gd

52 lines
1.1 KiB
GDScript3
Raw Normal View History

2024-04-19 17:48:20 +08:00
extends VBoxContainer
@export var keySwitchHasKey:bool
@export var lightText:String
@export var keyText:String
##是否允许操作
var allowHandle :bool = true
2024-04-19 17:48:20 +08:00
2024-04-22 15:32:19 +08:00
signal clickKeySwitchSignal(openLight:bool,keySwitch)
2024-04-19 17:48:20 +08:00
signal removeKey(keySwitch)
2024-04-29 11:03:01 +08:00
2024-04-19 17:48:20 +08:00
func _ready() -> void:
$Light/MarginContainer/Label.text=lightText
if keySwitchHasKey:
$Key.visible = true
$Key/MarginContainer/Label.text=keyText
else:
$Key.visible = false
2024-04-22 15:32:19 +08:00
func shouHandleKey() -> void:
$Key/Key.visible = true
$Key/Left_Rotate.visible = true
2024-04-22 15:32:19 +08:00
$Key/Right_Rotate.visible = true
func hideHandleKey() -> void:
$Key/Key.visible = false
$Key/Left_Rotate.visible = false
2024-04-22 15:32:19 +08:00
$Key/Right_Rotate.visible = false
2024-04-29 11:03:01 +08:00
##拔钥匙相关
func _on_key_gui_input(event: InputEvent) -> void:
if event.button_mask == MouseButtonMask.MOUSE_BUTTON_MASK_LEFT:
removeKey.emit(self)
if !allowHandle :
return
2024-04-29 11:03:01 +08:00
hideHandleKey()
func _on_key_mouse_entered() -> void:
$Key/Key.set_default_cursor_shape(Control.CursorShape.CURSOR_POINTING_HAND)
func _on_key_mouse_exited() -> void:
$Key/Key.set_default_cursor_shape(Control.CursorShape.CURSOR_ARROW)