Chelimbalo/weapons/gun/reload_state.gd

23 lines
759 B
GDScript

extends WeaponState
@export var emptyable: bool
func _enter() -> void:
machine.play(with_morphems("reload"))
machine.animation_player.animation_finished.connect(on_animation_finished)
func _exit() -> void:
machine.animation_player.animation_finished.disconnect(on_animation_finished)
func on_animation_finished(animation):
if animation == machine.animation_prefix + with_morphems("reload"):
if machine.remaining_ammo > machine.max_ammo:
machine.remaining_ammo -= machine.max_ammo-machine.ammo
machine.ammo = machine.max_ammo
else:
machine.ammo = machine.remaining_ammo
machine.remaining_ammo = 0
transition.emit("Idle")
func with_morphems(animation):
return ((animation+"_empty") if emptyable and machine.ammo == 0 else animation)