extends SubStateMachine class_name WeaponSubStateMachine @export var animation_prefix: StringName @export var droppable: PackedScene @export var self_scene: PackedScene @export var visibility_target: StringName @export var max_ammo: int @onready var ammo: int = max_ammo @onready var remaining_ammo: int = max_ammo * 3 @export var can_be_previous: bool = true var slot: StringName signal request_return var system: WeaponSystem var animation_player: AnimationPlayer var player_camera: PlayerCamera var player: Player func _ready() -> void: for child in get_children(): if child is WeaponState: states[child.name] = child child.machine = self child.transition.connect(on_transition_required) child.return_to_previous.connect(request_return.emit) func enter() -> void: super() player.weapon_models[visibility_target].show() func exit() -> void: super() player.weapon_models[visibility_target].hide() @rpc("authority","call_local","reliable") func use_begin() -> void: current_state.use_begin() @rpc("authority","call_local","reliable") func use_end() -> void: current_state.use_end() func alternate_state() -> void: current_state.alternate_state() # Need to clarify naming; Switch mode like firemode. For different states use # alternate_state func switch_mode() -> void: current_state.switch_mode()