Refactored jet factory; added ControllerCommand enum to remove magic strings

This commit is contained in:
2026-10-20 21:38:30 -05:00
parent 44e973f1f1
commit bf1623d771
11 changed files with 130 additions and 78 deletions
+13 -1
View File
@@ -1,8 +1,20 @@
extends Node extends Node
enum FACTION { enum Faction {
ALLIES, ALLIES,
AXIS, AXIS,
NEUTRAL NEUTRAL
} }
enum ControllerCommand {
NONE,
PULL_UP,
PUSH_DOWN,
YAW_LEFT,
YAW_RIGHT,
ROLL_LEFT,
ROLL_RIGHT,
THROTTLE_UP,
THROTTLE_DOWN
}
+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dd11x17pevytx"
path="res://.godot/imported/pic1.png-2cb452e6176bac2697452b0452b58af8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://images/pic1.png"
dest_files=["res://.godot/imported/pic1.png-2cb452e6176bac2697452b0452b58af8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+1 -1
View File
@@ -27,7 +27,7 @@ func _ready() -> void:
#control_frame.do_action(action, delta, self) #control_frame.do_action(action, delta, self)
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
var action = controller.process(delta) var action: Globals.ControllerCommand = controller.process(delta)
if action: if action:
control_frame.do_action(action, delta, self) control_frame.do_action(action, delta, self)
+30 -36
View File
@@ -3,67 +3,61 @@ class_name JetFactory extends Node
const JET = preload("res://scenes/jet.tscn") const JET = preload("res://scenes/jet.tscn")
var ALLIES_JET: EaglePlus = EaglePlus.new()
var AXIS_JET: SakerFalcon = SakerFalcon.new()
var NEUTRAL_JET: EaglePlus = EaglePlus.new()
func _ready() -> void: func _ready() -> void:
pass pass
func _get_jet_type(faction: int) -> Jet: func _get_jet_type(faction: int) -> Jet:
if faction == Globals.FACTION.ALLIES: var jet: Jet = null
return create_allies_jet()
if faction == Globals.FACTION.AXIS:
return create_axis_jet()
if faction == Globals.FACTION.NEUTRAL:
return create_neutral_jet()
return create_neutral_jet() if faction == Globals.Faction.ALLIES:
jet = create_allies_jet()
elif faction == Globals.Faction.AXIS:
jet = create_axis_jet()
elif faction == Globals.Faction.NEUTRAL:
jet = create_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: func create_player_jet(faction: int = 0) -> Jet:
var jet: Jet = _get_jet_type(faction) var jet: Jet = await _get_jet_type(faction)
get_tree().root.add_child.call_deferred(jet)
await jet.ready
jet.set_as_player() jet.set_as_player()
return jet return jet
func create_cpu_jet(faction: int = 0) -> Jet: func create_cpu_jet(faction: int = 0) -> Jet:
var jet = _get_jet_type(faction) var jet = await _get_jet_type(faction)
get_tree().root.add_child.call_deferred(jet)
await jet.ready
jet.set_as_cpu() jet.set_as_cpu()
return jet return jet
func create_neutral_jet() -> Jet: func create_neutral_jet() -> Jet:
var jet = JET.new() return create_jet_frame(
Globals.Faction.NEUTRAL, EaglePlus.new()
jet.add_child( NEUTRAL_JET.MODEL.instantiate() ) )
jet.faction = Globals.FACTION.NEUTRAL
jet.control_frame = NEUTRAL_JET
return jet
func create_allies_jet() -> Jet: func create_allies_jet() -> Jet:
var jet = JET.instantiate() return create_jet_frame(
Globals.Faction.ALLIES, EaglePlus.new()
jet.add_child( ALLIES_JET.MODEL.instantiate() ) )
jet.faction = Globals.FACTION.ALLIES
jet.control_frame = ALLIES_JET
return jet
func create_axis_jet() -> Jet: func create_axis_jet() -> Jet:
return create_jet_frame(
Globals.Faction.AXIS, SakerFalcon.new()
)
func create_jet_frame(faction: Globals.Faction, frame: BaseJet) -> Jet:
var jet = JET.instantiate() var jet = JET.instantiate()
jet.add_child( AXIS_JET.MODEL.instantiate() ) jet.add_child( frame.MODEL.instantiate() )
jet.faction = Globals.FACTION.AXIS jet.faction = faction
jet.control_frame = AXIS_JET jet.control_frame = frame
return jet return jet
+1 -1
View File
@@ -16,4 +16,4 @@ const MODES: Dictionary = {
func _ready() -> void: func _ready() -> void:
#MODES[mode].instantiate() #MODES[mode].instantiate()
jet_factory.create_player_jet(Globals.FACTION.ALLIES) jet_factory.create_player_jet(Globals.Faction.ALLIES)
+7 -6
View File
@@ -13,26 +13,27 @@ const PLAYER_MODE: int = 1
@onready var player: Player = $player @onready var player: Player = $player
func process(delta: float) -> String:
func process(delta: float) -> Globals.ControllerCommand:
if CPU_MODE == control_mode: if CPU_MODE == control_mode:
return cpu.process(delta) return cpu.process(delta)
elif PLAYER_MODE == control_mode: elif PLAYER_MODE == control_mode:
return player.process(delta) return player.process(delta)
return "" return Globals.ControllerCommand.NONE
func physics_process(delta: float) -> String: func physics_process(delta: float) -> Globals.ControllerCommand:
if CPU_MODE == control_mode: if CPU_MODE == control_mode:
return cpu.physics_process(delta) return cpu.physics_process(delta)
elif PLAYER_MODE == control_mode: elif PLAYER_MODE == control_mode:
return player.physics_process(delta) return player.physics_process(delta)
return "" return Globals.ControllerCommand.NONE
func unhandled_input(event: InputEvent) -> String: func unhandled_input(event: InputEvent) -> Globals.ControllerCommand:
if CPU_MODE == control_mode: if CPU_MODE == control_mode:
return cpu.unhandled_input(event) return cpu.unhandled_input(event)
elif PLAYER_MODE == control_mode: elif PLAYER_MODE == control_mode:
return player.unhandled_input(event) return player.unhandled_input(event)
return "" return Globals.ControllerCommand.NONE
+6 -6
View File
@@ -1,11 +1,11 @@
class_name CPU extends Node class_name CPU extends Node
func process(_delta: float) -> String: func process(_delta: float) -> Globals.ControllerCommand:
return "" return Globals.ControllerCommand.NONE
func physics_process(_delta: float) -> String: func physics_process(_delta: float) -> Globals.ControllerCommand:
return "" return Globals.ControllerCommand.NONE
func unhandled_input(_event: InputEvent) -> String: func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand:
return "" return Globals.ControllerCommand.NONE
+14 -14
View File
@@ -1,28 +1,28 @@
class_name Player extends Node class_name Player extends Node
func process(_delta: float) -> String: func process(_delta: float) -> Globals.ControllerCommand:
if Input.is_action_pressed("pull_up"): if Input.is_action_pressed("pull_up"):
return "pull_up" return Globals.ControllerCommand.PULL_UP
if Input.is_action_pressed("push_down"): if Input.is_action_pressed("push_down"):
return "push_down" return Globals.ControllerCommand.PUSH_DOWN
if Input.is_action_pressed("yaw_left"): if Input.is_action_pressed("yaw_left"):
return "yaw_left" return Globals.ControllerCommand.YAW_LEFT
if Input.is_action_pressed("yaw_right"): if Input.is_action_pressed("yaw_right"):
return "yaw_right" return Globals.ControllerCommand.YAW_RIGHT
if Input.is_action_pressed("roll_left"): if Input.is_action_pressed("roll_left"):
return "roll_left" return Globals.ControllerCommand.ROLL_LEFT
if Input.is_action_pressed("roll_right"): if Input.is_action_pressed("roll_right"):
return "roll_right" return Globals.ControllerCommand.ROLL_RIGHT
if Input.is_action_pressed("throttle_up"): if Input.is_action_pressed("throttle_up"):
return "throttle_up" return Globals.ControllerCommand.THROTTLE_UP
if Input.is_action_pressed("throttle_down"): if Input.is_action_pressed("throttle_down"):
return "throttle_down" return Globals.ControllerCommand.THROTTLE_DOWN
return "" return Globals.ControllerCommand.NONE
func physics_process(_delta: float) -> String: func physics_process(_delta: float) -> Globals.ControllerCommand:
return "" return Globals.ControllerCommand.NONE
func unhandled_input(_event: InputEvent) -> String: func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand:
return "" return Globals.ControllerCommand.NONE
+15 -10
View File
@@ -1,7 +1,7 @@
class_name BaseJet extends Node class_name BaseJet extends Node
var CONFLICT_SIDE = Globals.FACTION.NEUTRAL var CONFLICT_SIDE = Globals.Faction.NEUTRAL
var HEALTH: int = 100 var HEALTH: int = 100
var YAW_SPEED: int = 50 var YAW_SPEED: int = 50
@@ -14,28 +14,28 @@ var speed: float = float(MIN_SPEED)
func do_action( func do_action(
action: String, action: Globals.ControllerCommand,
delta: float, delta: float,
jet: Jet jet: Jet
) -> void: ) -> void:
var change_rate: float = deg_to_rad(1) * delta var change_rate: float = deg_to_rad(1) * delta
match action: match action:
"pull_up": Globals.ControllerCommand.PULL_UP:
pull_up(change_rate, jet) pull_up(change_rate, jet)
"push_down": Globals.ControllerCommand.PUSH_DOWN:
push_down(change_rate, jet) push_down(change_rate, jet)
"yaw_left": Globals.ControllerCommand.YAW_LEFT:
yaw_left(change_rate, jet) yaw_left(change_rate, jet)
"yaw_right": Globals.ControllerCommand.YAW_RIGHT:
yaw_right(change_rate, jet) yaw_right(change_rate, jet)
"roll_left": Globals.ControllerCommand.ROLL_LEFT:
roll_left(change_rate, jet) roll_left(change_rate, jet)
"roll_right": Globals.ControllerCommand.ROLL_RIGHT:
roll_right(change_rate, jet) roll_right(change_rate, jet)
"throttle_up": Globals.ControllerCommand.THROTTLE_UP:
throttle_up(delta) throttle_up(delta)
"throttle_down": Globals.ControllerCommand.THROTTLE_DOWN:
throttle_down(delta) throttle_down(delta)
_: _:
pass pass
@@ -63,3 +63,8 @@ func throttle_up(delta: float) -> void:
func throttle_down(delta: float) -> void: func throttle_down(delta: float) -> void:
speed = move_toward(speed, MIN_SPEED, ACCELERATION * delta) speed = move_toward(speed, MIN_SPEED, ACCELERATION * delta)
#func cpu_fly_at(change_rate: float, jet: Jet):
# jet.rotate_toward(...)
# NOTE: example to consider
# runner_visual.angle = rotate_toward(runner_visual.angle, direction.orthogonal().angle(), 8.0 * delta)
+1 -1
View File
@@ -5,7 +5,7 @@ const MODEL = preload("uid://cfcid44xnsbdt")
func _init() -> void: func _init() -> void:
CONFLICT_SIDE = Globals.FACTION.ALLIES CONFLICT_SIDE = Globals.Faction.ALLIES
HEALTH = 100 HEALTH = 100
YAW_SPEED = 50 YAW_SPEED = 50
ROLL_SPEED = 100 ROLL_SPEED = 100
+1 -1
View File
@@ -5,7 +5,7 @@ const MODEL = preload("uid://d07rxx62esueq")
func _init() -> void: func _init() -> void:
CONFLICT_SIDE = Globals.FACTION.AXIS CONFLICT_SIDE = Globals.Faction.AXIS
HEALTH = 100 HEALTH = 100
YAW_SPEED = 50 YAW_SPEED = 50
ROLL_SPEED = 100 ROLL_SPEED = 100