fuzzyworld

godot-shooter / commit

Changed how we're generating items, made it possible to set the starting positions for items.

7929daa82fa1b0cec9ff9a2124b450a2a4f4290f · Pavel Safronov · 2023-11-30 15:05:09 -0800 · parents afb9a0a511b7

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)