Refactored jet factory; added ControllerCommand enum to remove magic strings
This commit is contained in:
+13
-1
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user