initial shit
This commit is contained in:
45
Objects/Scripts/ISwitch.gd
Normal file
45
Objects/Scripts/ISwitch.gd
Normal file
@@ -0,0 +1,45 @@
|
||||
extends Node
|
||||
|
||||
signal turnedOn
|
||||
signal turnedOff
|
||||
signal switchUpdated
|
||||
|
||||
@export var isOn = false
|
||||
@export var isLoopingUpdate : bool = false
|
||||
@onready var ButtonAnimation = $AnimationPlayer.get_animation("interact")
|
||||
|
||||
func _ready() -> void:
|
||||
ButtonAnimation.loop_mode = Animation.LOOP_NONE
|
||||
# FIX: Look at the saved state before forcing the animation closed!
|
||||
if isOn:
|
||||
$AnimationPlayer.play("interact")
|
||||
# Advance to the end immediately so it doesn't play the visual transition on load
|
||||
$AnimationPlayer.advance(ButtonAnimation.length)
|
||||
else:
|
||||
$AnimationPlayer.play_backwards("interact")
|
||||
|
||||
func _press():
|
||||
if not isOn:
|
||||
isOn = true
|
||||
$AnimationPlayer.play("interact")
|
||||
$Sound.play()
|
||||
emit_signal("turnedOn")
|
||||
emit_signal("switchUpdated")
|
||||
|
||||
func _release():
|
||||
if isOn:
|
||||
isOn = false
|
||||
$AnimationPlayer.play_backwards("interact")
|
||||
$Sound.play()
|
||||
emit_signal("turnedOff")
|
||||
emit_signal("switchUpdated")
|
||||
|
||||
func _interact_press(is_alt_click: bool = false) -> void:
|
||||
if isOn:
|
||||
_release()
|
||||
else:
|
||||
_press()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if isLoopingUpdate:
|
||||
emit_signal("switchUpdated")
|
||||
Reference in New Issue
Block a user