create BunchSpawner

This commit is contained in:
2024-10-07 07:00:33 +10:00
parent 48672da2bf
commit 969442d799
6 changed files with 51 additions and 25 deletions

View File

@@ -0,0 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://bk3ers4qaleu2"]
[ext_resource type="Script" path="res://scripts/bunch_spawner.gd" id="1_kccg7"]
[node name="BunchSpawner" type="Marker3D"]
gizmo_extents = 1.0
script = ExtResource("1_kccg7")

File diff suppressed because one or more lines are too long

27
scripts/bunch_spawner.gd Normal file
View File

@@ -0,0 +1,27 @@
extends Marker3D
enum WhatToSpawn {
APHID
}
@export var what: WhatToSpawn = WhatToSpawn.APHID
@export var amount: int = 5
var aphid := preload("res://scenes/units/aphid.tscn")
@onready var aphids_holder: Node = $/root/World/Units/Aphids
func _ready() -> void:
assert(aphids_holder != null, "aphids_holder missing!")
for i in amount:
match what:
WhatToSpawn.APHID:
_spawn(aphid, global_position, aphids_holder)
func _spawn(scene: PackedScene, where: Vector3, holder: Node) -> void:
var new_node := scene.instantiate() as Node3D
if new_node is Unit:
(new_node as Unit).spawn_pos = where
holder.add_child(new_node)
new_node.global_position = where

View File

@@ -9,13 +9,12 @@ var honeydew_scene := preload("res://scenes/items/honeydew.tscn")
func _ready() -> void:
assert(items_holder != null, "items_holder missing!")
spawn_a_bunch(Vector3.ZERO, 125, 3)
func spawn_honeydew(pos: Vector3) -> Honeydew:
var honeydew := honeydew_scene.instantiate() as Honeydew
items_holder.add_child(honeydew)
honeydew.global_position = pos
items_holder.add_child(honeydew)
return honeydew

View File

@@ -5,7 +5,6 @@ signal moving_started
signal moving_ended
var anthill: Anthill
var spawn_pos: Vector3
var hovered_rect: bool = false
var selected: bool = false
@@ -30,9 +29,6 @@ func _ready() -> void:
assert(camera != null, "camera missing!")
assert(selection_sprite != null, "selection_sprite missing!")
nav_agent.navigation_finished.connect(_on_nav_agent_navigation_finished)
if spawn_pos != null and spawn_pos != Vector3.ZERO:
global_position = spawn_pos
super._ready()

View File

@@ -11,6 +11,7 @@ var max_wander_interval: float = 5
var is_on_screen: bool = false
var wandering_timer: float = 0
var wandering_center: Vector3 = Vector3.ZERO
var spawn_pos: Vector3
@onready var nav_agent: NavigationAgent3D = $NavigationAgent3D
@onready var ui_origin: Node3D = $UiOrigin
@@ -27,6 +28,9 @@ func _ready() -> void:
assert(ui_origin != null, "ui_origin missing!")
super._ready()
if spawn_pos != null and spawn_pos != Vector3.ZERO:
global_position = spawn_pos
wandering_center = global_position
nav_agent.max_speed = MOVE_SPEED
nav_agent.velocity_computed.connect(_on_nav_agent_velocity_computed)