load jets to a collection; wire up cpu controller pattern
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
class_name BaseController extends Node
|
||||
|
||||
|
||||
@export var jets_collection: JetsCollection
|
||||
|
||||
var controller_message_bus: ControllerMessageBus = null
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,14 @@ func _init() -> void:
|
||||
_connect_signals()
|
||||
_bind_callables()
|
||||
|
||||
func _ready() -> void:
|
||||
var timer = get_tree().create_timer(0.200)
|
||||
await timer.timeout
|
||||
|
||||
controller_message_bus.message.call(
|
||||
GameReadyEvent.new()
|
||||
)
|
||||
|
||||
func _connect_signals() -> void:
|
||||
connect("child_entered_tree", register_controller)
|
||||
connect("child_exiting_tree", unregister_controller)
|
||||
@@ -18,12 +26,6 @@ func _bind_callables() -> void:
|
||||
controller_message_bus.register_controller = Callable(self, "register_controller")
|
||||
controller_message_bus.unregister_controller = Callable(self, "unregister_controller")
|
||||
|
||||
func _ready() -> void:
|
||||
controller_message_bus.message.call(
|
||||
GameReadyEvent.new()
|
||||
)
|
||||
|
||||
|
||||
func register_controller(controller: BaseController) -> void:
|
||||
controller.set_controller_message_bus(controller_message_bus)
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
class_name CPUController extends BaseController
|
||||
|
||||
|
||||
func _controller_message(_event: BaseEvent) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if not jets_collection: return
|
||||
|
||||
for jet: Jet in jets_collection.get_children():
|
||||
if jet.controller.control_mode == Globals.ControlMode.PLAYER_MODE:
|
||||
continue
|
||||
|
||||
set_jet_action(jet)
|
||||
|
||||
func set_jet_action(jet: Jet) -> void:
|
||||
jet.controller.cpu.yaw_left()
|
||||
@@ -0,0 +1 @@
|
||||
uid://u1tiecau7p8g
|
||||
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://gb85fimcn0ya"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://u1tiecau7p8g" path="res://scripts/controllers/cpu_system/cpu_controller.gd" id="1_0c7ho"]
|
||||
|
||||
[node name="cpu_controller" type="Node"]
|
||||
script = ExtResource("1_0c7ho")
|
||||
@@ -22,8 +22,6 @@ func _get_jet_type(faction: int) -> Jet:
|
||||
else:
|
||||
jet = create_neutral_jet()
|
||||
|
||||
get_tree().root.add_child.call_deferred(jet)
|
||||
|
||||
return jet
|
||||
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ func spawn_jet(faction: Globals.Faction, callback: Callable) -> Jet:
|
||||
if not spawner.is_available: continue
|
||||
|
||||
jet = callback.call(faction)
|
||||
jets_collection.add_child.call(jet)
|
||||
|
||||
spawner.align_to_position.call_deferred(jet)
|
||||
|
||||
return jet
|
||||
|
||||
@@ -16,9 +16,6 @@ func _debug_setup() -> void:
|
||||
visible = false
|
||||
return
|
||||
|
||||
var timer = get_tree().create_timer(0.200)
|
||||
await timer.timeout
|
||||
|
||||
visible = true
|
||||
var visual_node: MeshInstance3D = get_node("visual")
|
||||
var visual_node2: MeshInstance3D = get_node("visual_direction")
|
||||
|
||||
@@ -1,40 +1,36 @@
|
||||
class_name JetController extends Node
|
||||
|
||||
|
||||
const CPU_MODE: int = 0
|
||||
const PLAYER_MODE: int = 1
|
||||
|
||||
@export_enum(
|
||||
"CPU:0",
|
||||
"PLAYER:1"
|
||||
) var control_mode: int = PLAYER_MODE
|
||||
) var control_mode: int = Globals.ControlMode.PLAYER_MODE
|
||||
|
||||
@onready var cpu: CPU = $cpu
|
||||
@onready var player: Player = $player
|
||||
|
||||
|
||||
|
||||
func process(delta: float) -> Globals.ControllerCommand:
|
||||
match control_mode:
|
||||
CPU_MODE:
|
||||
Globals.ControlMode.CPU_MODE:
|
||||
return cpu.process(delta)
|
||||
PLAYER_MODE:
|
||||
Globals.ControlMode.PLAYER_MODE:
|
||||
return player.process(delta)
|
||||
_:
|
||||
return Globals.ControllerCommand.NONE
|
||||
|
||||
func physics_process(delta: float) -> Globals.ControllerCommand:
|
||||
if CPU_MODE == control_mode:
|
||||
if Globals.ControlMode.CPU_MODE == control_mode:
|
||||
return cpu.physics_process(delta)
|
||||
elif PLAYER_MODE == control_mode:
|
||||
elif Globals.ControlMode.PLAYER_MODE == control_mode:
|
||||
return player.physics_process(delta)
|
||||
|
||||
return Globals.ControllerCommand.NONE
|
||||
|
||||
func unhandled_input(event: InputEvent) -> Globals.ControllerCommand:
|
||||
if CPU_MODE == control_mode:
|
||||
if Globals.ControlMode.CPU_MODE == control_mode:
|
||||
return cpu.unhandled_input(event)
|
||||
elif PLAYER_MODE == control_mode:
|
||||
elif Globals.ControlMode.PLAYER_MODE == control_mode:
|
||||
return player.unhandled_input(event)
|
||||
|
||||
return Globals.ControllerCommand.NONE
|
||||
|
||||
@@ -1,11 +1,38 @@
|
||||
class_name CPU extends Node
|
||||
|
||||
|
||||
var command: Globals.ControllerCommand = Globals.ControllerCommand.NONE
|
||||
|
||||
|
||||
func process(_delta: float) -> Globals.ControllerCommand:
|
||||
return Globals.ControllerCommand.YAW_LEFT
|
||||
return command
|
||||
|
||||
func physics_process(_delta: float) -> Globals.ControllerCommand:
|
||||
return Globals.ControllerCommand.NONE
|
||||
return command
|
||||
|
||||
func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand:
|
||||
return Globals.ControllerCommand.NONE
|
||||
return command
|
||||
|
||||
func pull_up() -> void:
|
||||
command = Globals.ControllerCommand.PULL_UP
|
||||
|
||||
func push_down() -> void:
|
||||
command = Globals.ControllerCommand.PUSH_DOWN
|
||||
|
||||
func yaw_left() -> void:
|
||||
command = Globals.ControllerCommand.YAW_LEFT
|
||||
|
||||
func yaw_right() -> void:
|
||||
command = Globals.ControllerCommand.YAW_RIGHT
|
||||
|
||||
func roll_left() -> void:
|
||||
command = Globals.ControllerCommand.ROLL_LEFT
|
||||
|
||||
func roll_right() -> void:
|
||||
command = Globals.ControllerCommand.ROLL_RIGHT
|
||||
|
||||
func throttle_up() -> void:
|
||||
command = Globals.ControllerCommand.THROTTLE_UP
|
||||
|
||||
func throttle_down() -> void:
|
||||
command = Globals.ControllerCommand.THROTTLE_DOWN
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
class_name JetsCollection extends Node3D
|
||||
@@ -0,0 +1 @@
|
||||
uid://dx87oh0d3xqa
|
||||
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://d3br5pvjbv7gs"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dx87oh0d3xqa" path="res://scripts/jets_collection.gd" id="1_ugihe"]
|
||||
|
||||
[node name="jets_collection" type="Node3D"]
|
||||
script = ExtResource("1_ugihe")
|
||||
Reference in New Issue
Block a user