blank weapon fire system

This commit is contained in:
Alexey 2025-07-18 18:41:44 +03:00
commit 16b1d0f701
11 changed files with 92 additions and 51 deletions

View file

@ -2,6 +2,8 @@ extends Node3D
class_name Weapon
signal fired()
@onready var barrel = $"Barrel"
@export var uses_hands: Array[CommandQueue.Side]
@ -10,6 +12,7 @@ var ammo: int = max_ammo
@export var ammo_consumption: int = 1
@export var fire_mode: BaseFireMode
## Weapon animation library. Should contain "static", "fire", "reload" animations
@export var animation_library: AnimationLibrary
@ -17,17 +20,23 @@ var is_firing: bool = false
func _ready() -> void:
fire_mode.barrel = barrel
fire_mode.tree = get_tree()
barrel.fired.connect(on_barrel_fired)
## Begin to fire
func request_fire() -> void:
fire_mode.on_fire_begin(get_tree())
is_firing = true
fire_mode._on_fire_begin()
func _process(_dt) -> void:
if is_firing:
fire_mode._process(get_tree())
fire_mode._process()
## End fire
func end_fire() -> void:
fire_mode.on_fire_end(get_tree())
is_firing = false
if is_firing:
fire_mode._on_fire_end()
is_firing = false
func on_barrel_fired() -> void:
is_firing = true
fired.emit()