Added spawn controller; added collision shape to jet; added yaw left to cpu default to test spawnning

This commit is contained in:
2026-10-21 01:42:31 -05:00
parent bf1623d771
commit d70d4de95e
11 changed files with 138 additions and 10 deletions
@@ -0,0 +1,40 @@
class_name SpawnController extends Node
@export var jet_factory: JetFactory
func _ready() -> void:
spawn_sides()
func spawn_sides() -> void:
spawn_allies_jet()
spawn_axis_jet()
func spawn_neutral_jet():
var _jet = spawn_jet(
Globals.Faction.NEUTRAL, jet_factory.create_cpu_jet
)
func spawn_allies_jet():
var _jet = spawn_jet(
Globals.Faction.ALLIES, jet_factory.create_cpu_jet
)
func spawn_axis_jet():
var _jet = spawn_jet(
Globals.Faction.AXIS, jet_factory.create_cpu_jet
)
func spawn_jet(faction: Globals.Faction, callback: Callable) -> Jet:
var jet: Jet = null
for spawner: Spawner in get_children():
if not spawner.faction == faction: continue
if not spawner.is_available: continue
jet = callback.call(faction)
spawner.align_to_position.call_deferred(jet)
return jet
@@ -0,0 +1 @@
uid://bd8ae65orh663
@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cuqllmpojcml5"]
[ext_resource type="Script" uid="uid://bd8ae65orh663" path="res://scripts/controllers/spawn_system/spawn_controller.gd" id="1_xcv1c"]
[node name="spawn_controller" type="Node3D"]
script = ExtResource("1_xcv1c")
@@ -0,0 +1,36 @@
class_name Spawner extends Area3D
@export var faction: Globals.Faction = Globals.Faction.NEUTRAL
var is_available: bool = true
var delay_timer: Timer = null
func _ready() -> void:
pass
func _on_area_body_entered(_body: Jet) -> void:
if delay_timer:
delay_timer.stop()
delay_timer = null
func _on_area_body_exited(_body: Jet) -> void:
delay_timer = Timer.new()
delay_timer.one_shot = true
delay_timer.timeout.connect(can_spawn)
func set_can_spawn(availablity: bool = true) -> void:
is_available = availablity
func can_spawn() -> void:
is_available = true
func cannot_spawn() -> void:
is_available = false
func align_to_position(jet: Jet) -> void:
jet.global_position = global_position
jet.rotation = rotation
@@ -0,0 +1 @@
uid://2xevacik8ja4
@@ -0,0 +1,20 @@
[gd_scene load_steps=3 format=3 uid="uid://bgrku2wvaadgg"]
[ext_resource type="Script" uid="uid://2xevacik8ja4" path="res://scripts/controllers/spawn_system/spawner.gd" id="1_yd0ab"]
[sub_resource type="BoxShape3D" id="BoxShape3D_7k17k"]
size = Vector3(20, 10, 25)
[node name="spawner" type="Area3D"]
script = ExtResource("1_yd0ab")
[node name="detector" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.9008179, 0)
shape = SubResource("BoxShape3D_7k17k")
[node name="ray" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.3711385e-08, -0.99999994, 0, 0.99999994, -4.3711385e-08, 0, 0, -12.65)
top_level = true
enabled = false
hit_back_faces = false
collide_with_bodies = false
+7 -5
View File
@@ -12,29 +12,31 @@ func _get_jet_type(faction: int) -> Jet:
if faction == Globals.Faction.ALLIES:
jet = create_allies_jet()
jet.name = Globals.Faction.keys()[Globals.Faction.ALLIES] + "_JET"
elif faction == Globals.Faction.AXIS:
jet = create_axis_jet()
jet.name = Globals.Faction.keys()[Globals.Faction.AXIS] + "_JET"
elif faction == Globals.Faction.NEUTRAL:
jet = create_neutral_jet()
jet.name = Globals.Faction.keys()[Globals.Faction.NEUTRAL] + "_JET"
else:
jet = create_neutral_jet()
get_tree().root.add_child.call_deferred(jet)
await jet.ready
return jet
func create_player_jet(faction: int = 0) -> Jet:
var jet: Jet = await _get_jet_type(faction)
var jet: Jet = _get_jet_type(faction)
jet.set_as_player()
jet.set_as_player.call_deferred()
return jet
func create_cpu_jet(faction: int = 0) -> Jet:
var jet = await _get_jet_type(faction)
var jet = _get_jet_type(faction)
jet.set_as_cpu()
jet.set_as_cpu.call_deferred()
return jet
+1 -1
View File
@@ -16,4 +16,4 @@ const MODES: Dictionary = {
func _ready() -> void:
#MODES[mode].instantiate()
jet_factory.create_player_jet(Globals.Faction.ALLIES)
pass
+1 -1
View File
@@ -2,7 +2,7 @@ class_name CPU extends Node
func process(_delta: float) -> Globals.ControllerCommand:
return Globals.ControllerCommand.NONE
return Globals.ControllerCommand.YAW_LEFT
func physics_process(_delta: float) -> Globals.ControllerCommand:
return Globals.ControllerCommand.NONE