fuzzyworld

godot-shooter / commit

Slight reworking of the spawning code.

c106156531f0aa57c5084cd2c40acec767ab7879 · Pavel Safronov · 2023-11-06 22:40:59 -0800 · parents e2c013d8d9a8

Slight reworking of the spawning code.
 World.gd | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/World.gd b/World.gd
index ed3ce68..39d2be9 100644
--- a/World.gd
+++ b/World.gd
@@ -21,22 +21,19 @@ func create_enemy():
 	enemy.add_to_group("enemies")
 	enemy.connect("enemy_killed", self, "enemy_killed")
 	enemy.connect("tree_exiting", self, "create_enemy")
-	$Environment.add_child(enemy)
-	Utils.log("adding enemy at", enemy.global_position)
+	$Environment.call_deferred("add_child", enemy)
 
 func create_health():
 	var health = Health.instance()
 	health.position = get_new_item_pos()
 	health.connect("tree_exiting", self, "create_health")
-	$Environment.add_child(health)
-	Utils.log("adding health at", health.global_position)
+	$Environment.call_deferred("add_child", health)
 
 func create_speed():
 	var speed = Speed.instance()
 	speed.position = get_new_item_pos()
 	speed.connect("tree_exiting", self, "create_speed")
-	$Environment.add_child(speed)
-	Utils.log("adding speed at", speed.global_position)
+	$Environment.call_deferred("add_child", speed)
 
 func _ready() -> void:
 	Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
@@ -48,21 +45,20 @@ func _ready() -> void:
 			var function = funcref(self, creator)
 			function.call_func()
 
-func get_new_item_pos() -> Vector2:
+func get_new_item_pos(dist_ratio: float = 1.0) -> Vector2:
 	var pos_angle = randi() % 360
 	var unit_vector = Vector2.UP.rotated(pos_angle)
 	var screen_radius = get_viewport().get_visible_rect().size.length() / 2 + 10
-	var enemy_spawn_dist = screen_radius
+	var enemy_spawn_dist = screen_radius * dist_ratio
 	var pos = unit_vector * enemy_spawn_dist + $Player.global_position
 	return pos
 
 func _input(event: InputEvent) -> void:
 	if $Player.dead:
 		return
-	var size = Vector2(
-		ProjectSettings.get("display/window/size/width"),
-		ProjectSettings.get("display/window/size/height"))
-	var mid = Vector2(size.x / 2.0, size.y / 2.0)
+	var width = ProjectSettings.get("display/window/size/width")
+	var height = ProjectSettings.get("display/window/size/height")
+	var mid = Vector2(width / 2.0, height / 2.0)
 	if event is InputEventScreenTouch && event.pressed:
 		var result = event.position + $Player.position - mid
 		set_destination(result)