feat(character): add animation state API (set/get_animation_state)

This commit is contained in:
Steven Wroblewski
2026-05-08 22:02:59 +02:00
parent 15ac8666f8
commit 9be67c8dfe
2 changed files with 45 additions and 0 deletions
+16
View File
@@ -12,6 +12,7 @@ signal state_changed(new_state: CharacterData.State)
@export var data: CharacterData
var _is_held: bool = false
var _current_anim: String = "idle"
const _STATE_COLORS: Dictionary = {
CharacterData.State.HEALTHY: Color(0.6, 0.8, 1.0),
@@ -40,6 +41,19 @@ func set_state(new_state: CharacterData.State) -> void:
state_changed.emit(new_state)
func set_animation_state(anim: String) -> void:
_current_anim = anim
var sprite: AnimatedSprite2D = get_node_or_null("AnimatedSprite2D") as AnimatedSprite2D
if sprite == null or sprite.sprite_frames == null:
return
if sprite.sprite_frames.has_animation(anim):
sprite.play(anim)
func get_animation_state() -> String:
return _current_anim
func _update_visual_state() -> void:
if data == null:
return
@@ -58,11 +72,13 @@ func _update_visual_state() -> void:
func _on_drag_picked_up(_pos: Vector2) -> void:
_is_held = true
set_animation_state("held")
character_picked_up.emit(self)
func _on_drag_released(pos: Vector2) -> void:
_is_held = false
set_animation_state("idle")
if data == null or data.id.is_empty():
return
GameState.set_character_position(character_id, global_position)