Chelimbalo/scripts/weapon_system/weapon_substate_machine.gd
2025-11-27 14:55:33 +05:00

46 lines
1.1 KiB
GDScript

extends SubStateMachine
class_name WeaponSubStateMachine
@export var animation_prefix: StringName
@export var visibility_mesh: Node3D
@export var max_ammo: int
@onready var ammo: int = max_ammo
@export var can_be_previous: bool = true
signal request_return
var system: WeaponSystem
var animation_player: AnimationPlayer
var player_camera: PlayerCamera
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()
visibility_mesh.visible = true
func exit() -> void:
super()
visibility_mesh.visible = false
@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()