godot-shooter / commit
Changed how we're generating items, made it possible to set the starting positions for items.
items/ConstantItemGenerator.gd | 4 +++- items/LevelItemGenerator.gd | 6 ++++-- scenes/World.gd | 26 ++++++++++++++++++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/items/ConstantItemGenerator.gd b/items/ConstantItemGenerator.gd index 24790a6..09bd10a 100644 --- a/items/ConstantItemGenerator.gd +++ b/items/ConstantItemGenerator.gd @@ -14,6 +14,7 @@ func _init(creator, instance, group, sim_count = 1) -> void: group_name = group simultaneous_count = sim_count +# runs the generator, returns is_done, a boolean func run(node: Node) -> bool: var items = node.get_tree().get_nodes_in_group(group_name) var should_add = items.size() < simultaneous_count @@ -22,4 +23,5 @@ func run(node: Node) -> bool: item.add_to_group(group_name) node.add_child(item) generated_count += 1 - return false + var is_done = not should_add + return is_done diff --git a/items/LevelItemGenerator.gd b/items/LevelItemGenerator.gd index f0b8782..94639de 100644 --- a/items/LevelItemGenerator.gd +++ b/items/LevelItemGenerator.gd @@ -16,6 +16,7 @@ func _init(count, creator, instance, group, sim_count = 1) -> void: instance_object = instance simultaneous_count = sim_count +# runs the generator, returns is_done, a boolean func run(node: Node) -> bool: var items = node.get_tree().get_nodes_in_group(group_name) var generated_enough = generated_count == item_count @@ -23,11 +24,12 @@ func run(node: Node) -> bool: if finished: return true if generated_enough: - return false + return true var should_add = items.size() < simultaneous_count if should_add: var item: Node = funcref(instance_object, creator_name).call_func() item.add_to_group(group_name) node.add_child(item) generated_count += 1 - return false + var is_done = not should_add + return is_done diff --git a/scenes/World.gd b/scenes/World.gd index a353690..d4d5ff1 100644 --- a/scenes/World.gd +++ b/scenes/World.gd @@ -12,7 +12,7 @@ onready var update_timer = $UpdateTimer onready var navigation_polygon_instance: NavigationPolygonInstance = $NavigationPolygonInstance var generators = [ - ConstantItemGenerator.new("create_enemy", self, "enemies", 1), + ConstantItemGenerator.new("create_enemy", self, "enemies", 2), ConstantItemGenerator.new("create_health", self, "health", 10), ConstantItemGenerator.new("create_weapon", self, "weapon", 10), ConstantItemGenerator.new("create_bomb", self, "bombs", 10), @@ -122,6 +122,24 @@ func get_new_environment_position(dist_ratio: float = 1.0) -> Vector2: break return potential_pos +func _ready() -> void: + run_generators() + var enemies = get_tree().get_nodes_in_group("enemies") + var enemy1: Enemy = enemies[0] + enemy1.position = Vector2(-100, 300) + var enemy2: Enemy = enemies[1] + enemy2.position = Vector2(100, 300) + pass + +func run_generators() -> void: + for g in generators: + var generator = g + while true: + var is_done = generator.run($Environment) + if is_done: + break + pass + func _input(_event: InputEvent) -> void: if player.dead: return @@ -157,10 +175,7 @@ func _process(_delta: float) -> void: $Player/UI/GameFinishedMenu.show() return - # run all item generators - for g in generators: - var generator = g - var _is_done = generator.run($Environment) + run_generators() # position the destination $Destination.visible = player.is_destination_set @@ -236,7 +251,6 @@ func _on_Player_destination_set() -> void: $Destination.global_position = player.destination 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)