class_name PawnBody extends Node3D @export var projectile_template : PackedScene @onready var anim_player : AnimationPlayer = %AnimationPlayer @onready var ranged_point : Node3D = %RangedPoint #@onready var material : StandardMaterial3D = $Mesh.material @onready var struggle_ui : Sprite3D = %StruggleUI @onready var struggle_bar : ProgressBar = %StruggleBar @onready var anim_tree : AnimationTree = %AnimationTree @onready var anim_machine : AnimationNodeStateMachinePlayback = %AnimationTree.get("parameters/playback") @onready var walk_sound : AudioStreamPlayer3D = $WalkSound @onready var footstep_timer : Timer = $FootstepTimer signal shooting() signal reloading() @rpc("call_local") func play_animation(anim_name : String) -> void: anim_player.play(anim_name) @rpc("call_local") func travel_animation(node_name : String) -> void: anim_machine.travel(node_name) @rpc("call_local") func show_struggle() -> void: struggle_ui.visible = true func set_animation_parameter(parameter : String, value : Variant) -> void: anim_tree.set(parameter, value) func stop_footsteps() -> void: footstep_timer.stop() func play_footsteps(step_time : float = 1) -> void: if footstep_timer.is_stopped(): walk_sound.play() footstep_timer.start(step_time) elif footstep_timer.wait_time != step_time: footstep_timer.wait_time = step_time func _on_struggle_changed(value : float) -> void: if value <= 0: struggle_ui.visible = false else: struggle_bar.value = value func _on_footstep_timer_timeout() -> void: walk_sound.play()