extends WeaponState

@export var emptyable: bool

func enter() -> void:
	machine.animation_player.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 == with_morphems("reload"):
		if machine.remaining_ammo > machine.max_ammo:
			machine.ammo = machine.max_ammo
			machine.remaining_ammo -= machine.max_ammo
		else:
			machine.ammo = machine.remaining_ammo
			machine.remaining_ammo = 0
		transition.emit("Idle")

func with_morphems(animation):
	return machine.animation_prefix + ((animation+"_empty") if emptyable and machine.ammo == 0 else animation)
