godot-shooter / commit
A few behavioral changes:
scenes/World.gd | 37 +++++++++++++++++++++++-------------- weapons/Weapons.gd | 2 +- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/scenes/World.gd b/scenes/World.gd index a48fceb..5173e13 100644 --- a/scenes/World.gd +++ b/scenes/World.gd @@ -10,6 +10,7 @@ const Settings = preload("res://utils/Settings.gd") onready var player: Player = $Player onready var update_timer = $UpdateTimer onready var navigation_polygon_instance: NavigationPolygonInstance = $NavigationPolygonInstance +onready var environment_node = $Environment var generators = [ ConstantItemGenerator.new("create_enemy", self, "enemies", 5), @@ -26,13 +27,14 @@ var is_dragging = false func enemy_killed(_position: Vector2): player.score += 5 func health_consumed(_data): - player.heal(10) + player.heal(20) player.score += 1 func gold_consumed(_data): 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): var weapon: Weapon = data var is_same_weapon = player.weapon.name == weapon.name @@ -43,7 +45,7 @@ func weapon_consumed(data): func bomb_consumed(data): var pos: Vector2 = data var bomb = Bomb.instance() - $Environment.call_deferred("add_child",bomb) + environment_node.call_deferred("add_child",bomb) bomb.position = pos func create_enemy() -> Enemy: @@ -106,7 +108,7 @@ func get_new_environment_position(dist_ratio: float = 1.0) -> Vector2: var potential_pos: Vector2 while true: # find the positions of the closest Environment items - var items = $Environment.get_children() + var items = environment_node.get_children() potential_pos = get_new_item_pos(dist_ratio) var closest_pos = 10000 for i in items: @@ -166,13 +168,13 @@ func _process(_delta: float) -> void: # if all objectives are complete, show the game finished menu var all_done = completed_objectives == max_objectives if all_done: - get_tree().paused = true var score = player.score player.add_high_score(score) var final_message = "You won with %s points!" % score var _err = ($Player/UI/GameFinishedMenu.find_node("Button") as Button).connect("pressed", self, "restart") $Player/UI/GameFinishedMenu.find_node("Label").text = final_message $Player/UI/GameFinishedMenu.show() + get_tree().paused = true return run_generators() @@ -220,10 +222,11 @@ func restart() -> void: func _on_Player_debug() -> void: # player.score += 1 # player.kill() +# player.score = 123 # completed_objectives = max_objectives # player.debug() - weapon_consumed(Weapons.create_rocket_gun()) - pass # Replace with function body. +# weapon_consumed(Weapons.create_rocket_gun()) + pass func _on_Player_destination_set() -> void: $Destination.visible = player.is_destination_set @@ -231,15 +234,21 @@ func _on_Player_destination_set() -> void: pass func _on_UpdateTimer_timeout() -> void: - var enemies = get_tree().get_nodes_in_group("enemies") - var filteredEnemies = Utils.filter(funcref(self,"filter_invalid_enemies"), enemies) - for e in filteredEnemies: - var enemy: Enemy = e - enemy.set_target($Player.position) - var diff = enemy.global_position - player.global_position + var env_items = environment_node.get_children() + for ei in env_items: + var item = ei as Node2D + var enemy := item as Enemy + if enemy: + # if item is enemy, have them target the player + enemy.set_target($Player.position) + + var diff = item.global_position - player.global_position var dist = diff.length() var is_too_far = dist > item_replacement_distance if is_too_far: var new_pos = get_new_environment_position(1 + randf()) - Utils.log("moving distant enemy from", enemy.position, "to", new_pos) - enemy.teleport(new_pos) + Utils.log("moving distant item from", item.global_position, "to", new_pos) + if enemy: + enemy.teleport(new_pos) + else: + item.global_position = new_pos diff --git a/weapons/Weapons.gd b/weapons/Weapons.gd index c7a72cf..1ac4893 100644 --- a/weapons/Weapons.gd +++ b/weapons/Weapons.gd @@ -29,7 +29,7 @@ static func create_basic_gun() -> Weapon: static func create_basic_enemy_gun() -> Weapon: var weapon = Weapon.new() weapon.particle = preload("res://weapons/Bullet.tscn") - weapon.shooting_range = 400 + weapon.shooting_range = 300 weapon.particle_lifetime_secs = .75 weapon.particle_speed = Constants.SPEED * 5 weapon.cooldown_seconds = 1