fuzzyworld

godot-shooter / commit

Remove barrel from the player class, change how the bullets are added to the scene.

f295bf46cd2d9403162714e731f1c363c2e7f64e · Pavel Safronov · 2023-11-29 15:25:40 -0800 · parents e9f81b98bcdc

Remove barrel from the player class, change how the bullets are added to the scene.
 actors/Player.gd   |  2 +-
 actors/Player.tscn |  6 ------
 weapons/Weapon.gd  | 14 +++++++++-----
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/actors/Player.gd b/actors/Player.gd
index e342128..edb8921 100644
--- a/actors/Player.gd
+++ b/actors/Player.gd
@@ -208,7 +208,7 @@ func turn_towards(dest: Vector2, _delta: float):
 func shoot_at(pos: Vector2):
 	if weapon.ammo != INF && weapon.ammo <= 0:
 		weapon = create_default_weapon()
-	weapon.try_shoot(owner, $Barrel, pos)
+	weapon.try_shoot(self, pos)
 
 func set_objective(objective: String) -> void:
 	hud.objective = objective
diff --git a/actors/Player.tscn b/actors/Player.tscn
index 90948e7..0652a01 100644
--- a/actors/Player.tscn
+++ b/actors/Player.tscn
@@ -372,12 +372,6 @@ text = "Replay!"
 [node name="Camera2D" type="Camera2D" parent="."]
 current = true
 
-[node name="Barrel" type="Position2D" parent="."]
-rotation = -3.14044
-__meta__ = {
-"_gizmo_extents_": 14.2
-}
-
 [connection signal="debug_signal" from="UI/HUD" to="." method="_on_HUD_debug_signal"]
 [connection signal="paused" from="UI/HUD" to="." method="_on_HUD_paused"]
 [connection signal="position_set" from="UI/HUD" to="." method="_on_HUD_position_set"]
diff --git a/weapons/Weapon.gd b/weapons/Weapon.gd
index a026fae..c7aa55a 100644
--- a/weapons/Weapon.gd
+++ b/weapons/Weapon.gd
@@ -9,11 +9,15 @@ var damage_amount = 1
 var ammo = INF
 var name = "Laser"
 var reload_size = 1
-var last_shoot_time: float = 0
+var last_shoot_time: float
 
 const Utils = preload("res://utils/Utils.gd")
 
-func try_shoot(owner: Node2D, barrel: Node2D, target: Vector2) -> void:
+func _init() -> void:
+	var now = Time.get_unix_time_from_system()
+	last_shoot_time = now
+
+func try_shoot(shooter: Node2D, target: Vector2) -> void:
 	var has_ammo = ammo == INF or ammo > 0
 	if not has_ammo:
 		return
@@ -28,8 +32,8 @@ func try_shoot(owner: Node2D, barrel: Node2D, target: Vector2) -> void:
 		ammo = ammo - 1
 
 	var particle_instance = particle.instance()
-	owner.add_child(particle_instance)
-	particle_instance.transform = barrel.global_transform
+	shooter.owner.add_child(particle_instance)
+	particle_instance.transform = shooter.global_transform
 	particle_instance.damage_amount = self.damage_amount
-	particle_instance.global_rotation = barrel.global_position.angle_to_point(target) + PI / 2.0
+	particle_instance.global_rotation = shooter.global_position.angle_to_point(target) + PI / 2.0
 	last_shoot_time = now