godot-shooter / commit
Added power ups for each weapon type.
PowerUp.gd | 3 ++- World.gd | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/PowerUp.gd b/PowerUp.gd index 93e98f1..10cb2b7 100644 --- a/PowerUp.gd +++ b/PowerUp.gd @@ -3,6 +3,7 @@ class_name PowerUp export var label = "+SP" export var color = Color.gold +var data: Object signal consumed const Utils = preload("res://Utils.gd") @@ -16,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") + emit_signal("consumed", data) diff --git a/World.gd b/World.gd index 1b29624..2c207a9 100644 --- a/World.gd +++ b/World.gd @@ -26,24 +26,22 @@ var is_dragging = false func enemy_killed(_position: Vector2): $UI/HUD.score += 1 $UI/HUD.show_message("Enemy killed!", 1) -func health_consumed(): +func health_consumed(_data): $Player.heal(10) -func shield_consumed(): +func shield_consumed(_data): Utils.log("consuming a shield and sending a message") $Player.enable_shield() -func gold_consumed(): +func gold_consumed(_data): completed_objectives += 1 $UI/HUD.score += 5 -func weapon_consumed(): - var is_current_weapon_base = $Player.weapon.ammo == INF - if is_current_weapon_base: - if randi() % 2 == 0: - $Player.weapon = Weapons.create_gattling_gun() - else: - $Player.weapon = Weapons.create_rocket_gun() - else: +func weapon_consumed(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 create_enemy() -> Enemy: var enemy = Enemy.instance() enemy.position = get_new_environment_position() @@ -64,11 +62,22 @@ func create_gold(pos: Vector2 = get_new_environment_position(1 + randf())) -> Po gold.color = Color.gold return gold func create_weapon() -> PowerUp: - var weapon = PowerUp.instance() + var weapon: PowerUp = PowerUp.instance() weapon.position = get_new_environment_position(randf() + .5) - weapon.connect("consumed", self, "weapon_consumed") - weapon.label = "WPN" - weapon.color = Color.red + var _err = weapon.connect("consumed", self, "weapon_consumed") + var r = randf() + if r < .4: + weapon.data = Weapons.create_rocket_gun() + weapon.label = "ROC" + weapon.color = Color.red + elif r < .8: + weapon.data = Weapons.create_gattling_gun() + weapon.label = "SMG" + weapon.color = Color.orange + else: + weapon.data = Weapons.create_basic_gun() + weapon.label = "LZR" + weapon.color = Color.pink return weapon func create_shield() -> PowerUp: var shield = PowerUp.instance() @@ -224,5 +233,5 @@ func restart() -> void: var _err = get_tree().reload_current_scene() func _on_HUD_debug_signal() -> void: - completed_objectives = 5 +# completed_objectives = 5 pass # Replace with function body.