fuzzyworld

godot-shooter / commit

Fixed issue where teleported bombs were creating explosions in their original location.

bfa99fb9054343f0806e8e2375719cf26bcfe1d3 · Pavel Safronov · 2023-12-01 12:12:21 -0800 · parents a45831a2e547

Fixed issue where teleported bombs were creating explosions in their original location.
We're no longer storing the bomb location as data, but instead the callback gets the entire PowerUp object, which can be used to figure out the position or extract data from.
 items/PowerUp.gd |  4 ++--
 scenes/World.gd  | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/items/PowerUp.gd b/items/PowerUp.gd
index 3d23ef8..8e0d75e 100644
--- a/items/PowerUp.gd
+++ b/items/PowerUp.gd
@@ -4,7 +4,7 @@ class_name PowerUp
 export var label = "+SP"
 export var color = Color.gold
 var data
-signal consumed
+signal consumed(power_up)
 const Utils = preload("res://utils/Utils.gd")
 
 func _ready() -> void:
@@ -17,4 +17,4 @@ func _on_Area2D_body_entered(body: Node) -> void:
 	var player = players[0]
 	if body == player:
 		$AnimationPlayer.play("fade_out")
-		emit_signal("consumed", data)
+		emit_signal("consumed", self)
diff --git a/scenes/World.gd b/scenes/World.gd
index 5173e13..9a7513a 100644
--- a/scenes/World.gd
+++ b/scenes/World.gd
@@ -26,24 +26,25 @@ var is_dragging = false
 
 func enemy_killed(_position: Vector2):
 	player.score += 5
-func health_consumed(_data):
+func health_consumed(_power_up):
 	player.heal(20)
 	player.score += 1
-func gold_consumed(_data):
+func gold_consumed(_power_up):
 	completed_objectives += 1
 	var points = 5 * (completed_objectives+1)
 	player.score += points
 	player.show_message("+%d points" % points)
 	player.health = player.max_health
-func weapon_consumed(data):
+func weapon_consumed(power_up):
+	var data = power_up.data
 	var weapon: Weapon = data
 	var is_same_weapon = player.weapon.name == weapon.name
 	if is_same_weapon && weapon.ammo != INF:
 		player.weapon.ammo += player.weapon.reload_size
 	else:
 		player.weapon = weapon
-func bomb_consumed(data):
-	var pos: Vector2 = data
+func bomb_consumed(power_up):
+	var pos: Vector2 = power_up.global_position
 	var bomb = Bomb.instance()
 	environment_node.call_deferred("add_child",bomb)
 	bomb.position = pos
@@ -67,7 +68,6 @@ func create_bomb() -> PowerUp:
 	bomb.connect("consumed", self, "bomb_consumed")
 	bomb.label = "BOMB"
 	bomb.color = Color.purple
-	bomb.data = pos
 	return bomb
 func create_gold(pos: Vector2 = get_new_environment_position(1 + randf())) -> PowerUp:
 	var gold = PowerUp.instance()