Added lever animation

This commit is contained in:
2026-03-17 21:56:31 +03:00
parent 489c89e1ac
commit 8ec34e1285
4 changed files with 86 additions and 14 deletions
+66 -2
View File
@@ -1,5 +1,69 @@
extends AbstractActivatableObject
func activate() -> void:
pass
signal switching
signal switched
enum State {
TurnedLeft,
TurnedRight,
TurningLeft,
TurningRight,
}
const ANIMATION_BY_STATE : Dictionary[State, String] = {
State.TurnedLeft: "turned_left",
State.TurnedRight: "turned_right",
State.TurningLeft: "turning_left",
State.TurningRight: "turning_right",
}
@export var initial_state: State = State.TurnedLeft
var _current_state : State
@onready var animated_sprite : AnimatedSprite2D = $AnimatedSprite2D
func _ready() -> void:
super._ready()
_current_state = initial_state
_update_animation()
func _activate() -> void:
var set_state := func(state: State) -> void:
_current_state = state
_update_animation()
hint_sprite.hide()
switching.emit()
match _current_state:
State.TurnedLeft:
set_state.call(State.TurningRight)
State.TurnedRight:
set_state.call(State.TurningLeft)
func _update_animation() -> void:
var animation := ANIMATION_BY_STATE[_current_state]
animated_sprite.play(animation)
func _on_animation_finished() -> void:
var set_state := func(state: State) -> void:
_current_state = state
_update_animation()
switched.emit()
if _player_in_range:
hint_sprite.show()
match _current_state:
State.TurningLeft:
set_state.call(State.TurnedLeft)
State.TurningRight:
set_state.call(State.TurnedRight)