From bf1623d771175a05cd0df8fe72672e1657010822 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Tue, 20 Oct 2026 21:38:30 -0500 Subject: [PATCH] Refactored jet factory; added ControllerCommand enum to remove magic strings --- autoloads/globals.gd | 14 +++++- images/pic1.png.import | 40 ++++++++++++++++ scenes/jet.gd | 2 +- scripts/factories/jet_factory.gd | 68 +++++++++++++--------------- scripts/game_modes/game_mode.gd | 2 +- scripts/jet_controls/controller.gd | 13 +++--- scripts/jet_controls/cpu.gd | 12 ++--- scripts/jet_controls/player.gd | 28 ++++++------ scripts/jet_variants/base_jet.gd | 25 ++++++---- scripts/jet_variants/eagle_plus.gd | 2 +- scripts/jet_variants/saker_falcon.gd | 2 +- 11 files changed, 130 insertions(+), 78 deletions(-) create mode 100644 images/pic1.png.import diff --git a/autoloads/globals.gd b/autoloads/globals.gd index 852c09b..33603b8 100644 --- a/autoloads/globals.gd +++ b/autoloads/globals.gd @@ -1,8 +1,20 @@ extends Node -enum FACTION { +enum Faction { ALLIES, AXIS, NEUTRAL } + +enum ControllerCommand { + NONE, + PULL_UP, + PUSH_DOWN, + YAW_LEFT, + YAW_RIGHT, + ROLL_LEFT, + ROLL_RIGHT, + THROTTLE_UP, + THROTTLE_DOWN +} diff --git a/images/pic1.png.import b/images/pic1.png.import new file mode 100644 index 0000000..0072a31 --- /dev/null +++ b/images/pic1.png.import @@ -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 diff --git a/scenes/jet.gd b/scenes/jet.gd index 40abafc..2badf04 100644 --- a/scenes/jet.gd +++ b/scenes/jet.gd @@ -27,7 +27,7 @@ func _ready() -> void: #control_frame.do_action(action, delta, self) func _physics_process(delta: float) -> void: - var action = controller.process(delta) + var action: Globals.ControllerCommand = controller.process(delta) if action: control_frame.do_action(action, delta, self) diff --git a/scripts/factories/jet_factory.gd b/scripts/factories/jet_factory.gd index 409c7a5..04bd701 100644 --- a/scripts/factories/jet_factory.gd +++ b/scripts/factories/jet_factory.gd @@ -1,69 +1,63 @@ class_name JetFactory extends Node -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() +const JET = preload("res://scenes/jet.tscn") func _ready() -> void: pass func _get_jet_type(faction: int) -> Jet: - if faction == Globals.FACTION.ALLIES: - return create_allies_jet() - if faction == Globals.FACTION.AXIS: - return create_axis_jet() - if faction == Globals.FACTION.NEUTRAL: - return create_neutral_jet() + var jet: Jet = null - 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: - var jet: Jet = _get_jet_type(faction) - - get_tree().root.add_child.call_deferred(jet) - await jet.ready + var jet: Jet = await _get_jet_type(faction) jet.set_as_player() return jet func create_cpu_jet(faction: int = 0) -> Jet: - var jet = _get_jet_type(faction) - - get_tree().root.add_child.call_deferred(jet) - await jet.ready + var jet = await _get_jet_type(faction) jet.set_as_cpu() return jet func create_neutral_jet() -> Jet: - var jet = JET.new() - - jet.add_child( NEUTRAL_JET.MODEL.instantiate() ) - jet.faction = Globals.FACTION.NEUTRAL - jet.control_frame = NEUTRAL_JET - - return jet + return create_jet_frame( + Globals.Faction.NEUTRAL, EaglePlus.new() + ) func create_allies_jet() -> Jet: - var jet = JET.instantiate() - - jet.add_child( ALLIES_JET.MODEL.instantiate() ) - jet.faction = Globals.FACTION.ALLIES - jet.control_frame = ALLIES_JET - - return jet + return create_jet_frame( + Globals.Faction.ALLIES, EaglePlus.new() + ) 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() - jet.add_child( AXIS_JET.MODEL.instantiate() ) - jet.faction = Globals.FACTION.AXIS - jet.control_frame = AXIS_JET + jet.add_child( frame.MODEL.instantiate() ) + jet.faction = faction + jet.control_frame = frame return jet diff --git a/scripts/game_modes/game_mode.gd b/scripts/game_modes/game_mode.gd index c3b1fc2..3778708 100644 --- a/scripts/game_modes/game_mode.gd +++ b/scripts/game_modes/game_mode.gd @@ -16,4 +16,4 @@ const MODES: Dictionary = { func _ready() -> void: #MODES[mode].instantiate() - jet_factory.create_player_jet(Globals.FACTION.ALLIES) + jet_factory.create_player_jet(Globals.Faction.ALLIES) diff --git a/scripts/jet_controls/controller.gd b/scripts/jet_controls/controller.gd index a613dbf..ea742d9 100644 --- a/scripts/jet_controls/controller.gd +++ b/scripts/jet_controls/controller.gd @@ -13,26 +13,27 @@ const PLAYER_MODE: int = 1 @onready var player: Player = $player -func process(delta: float) -> String: + +func process(delta: float) -> Globals.ControllerCommand: if CPU_MODE == control_mode: return cpu.process(delta) elif PLAYER_MODE == control_mode: 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: return cpu.physics_process(delta) elif PLAYER_MODE == control_mode: 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: return cpu.unhandled_input(event) elif PLAYER_MODE == control_mode: return player.unhandled_input(event) - return "" + return Globals.ControllerCommand.NONE diff --git a/scripts/jet_controls/cpu.gd b/scripts/jet_controls/cpu.gd index 2d00f66..d64744c 100644 --- a/scripts/jet_controls/cpu.gd +++ b/scripts/jet_controls/cpu.gd @@ -1,11 +1,11 @@ class_name CPU extends Node -func process(_delta: float) -> String: - return "" +func process(_delta: float) -> Globals.ControllerCommand: + return Globals.ControllerCommand.NONE -func physics_process(_delta: float) -> String: - return "" +func physics_process(_delta: float) -> Globals.ControllerCommand: + return Globals.ControllerCommand.NONE -func unhandled_input(_event: InputEvent) -> String: - return "" +func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand: + return Globals.ControllerCommand.NONE diff --git a/scripts/jet_controls/player.gd b/scripts/jet_controls/player.gd index 0d4f49e..ba45231 100644 --- a/scripts/jet_controls/player.gd +++ b/scripts/jet_controls/player.gd @@ -1,28 +1,28 @@ class_name Player extends Node -func process(_delta: float) -> String: +func process(_delta: float) -> Globals.ControllerCommand: if Input.is_action_pressed("pull_up"): - return "pull_up" + return Globals.ControllerCommand.PULL_UP if Input.is_action_pressed("push_down"): - return "push_down" + return Globals.ControllerCommand.PUSH_DOWN if Input.is_action_pressed("yaw_left"): - return "yaw_left" + return Globals.ControllerCommand.YAW_LEFT if Input.is_action_pressed("yaw_right"): - return "yaw_right" + return Globals.ControllerCommand.YAW_RIGHT if Input.is_action_pressed("roll_left"): - return "roll_left" + return Globals.ControllerCommand.ROLL_LEFT if Input.is_action_pressed("roll_right"): - return "roll_right" + return Globals.ControllerCommand.ROLL_RIGHT if Input.is_action_pressed("throttle_up"): - return "throttle_up" + return Globals.ControllerCommand.THROTTLE_UP 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: - return "" +func physics_process(_delta: float) -> Globals.ControllerCommand: + return Globals.ControllerCommand.NONE -func unhandled_input(_event: InputEvent) -> String: - return "" +func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand: + return Globals.ControllerCommand.NONE diff --git a/scripts/jet_variants/base_jet.gd b/scripts/jet_variants/base_jet.gd index 4363a2c..0a453ce 100644 --- a/scripts/jet_variants/base_jet.gd +++ b/scripts/jet_variants/base_jet.gd @@ -1,7 +1,7 @@ class_name BaseJet extends Node -var CONFLICT_SIDE = Globals.FACTION.NEUTRAL +var CONFLICT_SIDE = Globals.Faction.NEUTRAL var HEALTH: int = 100 var YAW_SPEED: int = 50 @@ -14,28 +14,28 @@ var speed: float = float(MIN_SPEED) func do_action( - action: String, + action: Globals.ControllerCommand, delta: float, jet: Jet ) -> void: var change_rate: float = deg_to_rad(1) * delta match action: - "pull_up": + Globals.ControllerCommand.PULL_UP: pull_up(change_rate, jet) - "push_down": + Globals.ControllerCommand.PUSH_DOWN: push_down(change_rate, jet) - "yaw_left": + Globals.ControllerCommand.YAW_LEFT: yaw_left(change_rate, jet) - "yaw_right": + Globals.ControllerCommand.YAW_RIGHT: yaw_right(change_rate, jet) - "roll_left": + Globals.ControllerCommand.ROLL_LEFT: roll_left(change_rate, jet) - "roll_right": + Globals.ControllerCommand.ROLL_RIGHT: roll_right(change_rate, jet) - "throttle_up": + Globals.ControllerCommand.THROTTLE_UP: throttle_up(delta) - "throttle_down": + Globals.ControllerCommand.THROTTLE_DOWN: throttle_down(delta) _: pass @@ -63,3 +63,8 @@ func throttle_up(delta: float) -> void: func throttle_down(delta: float) -> void: 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) diff --git a/scripts/jet_variants/eagle_plus.gd b/scripts/jet_variants/eagle_plus.gd index 2ccae68..88b0955 100644 --- a/scripts/jet_variants/eagle_plus.gd +++ b/scripts/jet_variants/eagle_plus.gd @@ -5,7 +5,7 @@ const MODEL = preload("uid://cfcid44xnsbdt") func _init() -> void: - CONFLICT_SIDE = Globals.FACTION.ALLIES + CONFLICT_SIDE = Globals.Faction.ALLIES HEALTH = 100 YAW_SPEED = 50 ROLL_SPEED = 100 diff --git a/scripts/jet_variants/saker_falcon.gd b/scripts/jet_variants/saker_falcon.gd index e3c2e7a..cd5864f 100644 --- a/scripts/jet_variants/saker_falcon.gd +++ b/scripts/jet_variants/saker_falcon.gd @@ -5,7 +5,7 @@ const MODEL = preload("uid://d07rxx62esueq") func _init() -> void: - CONFLICT_SIDE = Globals.FACTION.AXIS + CONFLICT_SIDE = Globals.Faction.AXIS HEALTH = 100 YAW_SPEED = 50 ROLL_SPEED = 100