diff --git a/base/scripts/weapons/fire_mode/single_fire_mode.gd b/base/scripts/weapons/fire_mode/single_fire_mode.gd new file mode 100644 index 0000000..a046102 --- /dev/null +++ b/base/scripts/weapons/fire_mode/single_fire_mode.gd @@ -0,0 +1,28 @@ +extends BaseFireMode + +## Firemode that fires single time [br] +## Has optional fire delay + +class_name SingleFireMode + +## Delay between shots [br] +## Values equal or less than 0 remove delay completely +@export var fire_delay : float + +## Is fire mode on delay? +var cooldown : bool = false + + +func _on_fire_begin(tree) -> void: + if cooldown: + return + + if _fire() == false or fire_delay <= 0: + return + cooldown = true + tree.create_timer(fire_delay).timeout.connect(on_cooldown_timeout) + + +## Invoked when cooldown has ended +func on_cooldown_timeout() -> void: + cooldown = false diff --git a/base/scripts/weapons/fire_mode/single_fire_mode.gd.uid b/base/scripts/weapons/fire_mode/single_fire_mode.gd.uid new file mode 100644 index 0000000..f0a14e7 --- /dev/null +++ b/base/scripts/weapons/fire_mode/single_fire_mode.gd.uid @@ -0,0 +1 @@ +uid://ckexgw71dd5jc