From 566a4b4a0545b08022ddbeb53be60f10096d4989 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 14 Jul 2025 21:31:39 +0500 Subject: [PATCH] Single fire mode --- .../weapons/fire_mode/single_fire_mode.gd | 28 +++++++++++++++++++ .../weapons/fire_mode/single_fire_mode.gd.uid | 1 + 2 files changed, 29 insertions(+) create mode 100644 base/scripts/weapons/fire_mode/single_fire_mode.gd create mode 100644 base/scripts/weapons/fire_mode/single_fire_mode.gd.uid 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