diff --git a/game/entities/player.gd b/game/entities/player.gd index 64ff4a8..80c898f 100644 --- a/game/entities/player.gd +++ b/game/entities/player.gd @@ -1,18 +1,21 @@ extends Node +@onready var ship := $Ship + + var position : Vector2: set(value): - $Ship.position = value + ship.position = value get: - return $Ship.position + return ship.position func _physics_process(delta: float) -> void: var input_direction := Input.get_vector("move_left", "move_right", "move_up", "move_down") - $Ship.accelerate(input_direction, delta) + ship.accelerate(input_direction, delta) - var weapons : Array[Weapon] = $Ship.weapons + var weapons : Array[Weapon] = ship.weapons var weapon_actions := { 0: ["shoot_weapon_1", "reload_weapon_1"], 1: ["shoot_weapon_2", "reload_weapon_2"] @@ -21,7 +24,7 @@ func _physics_process(delta: float) -> void: if index >= weapons.size(): break if Input.is_action_pressed(weapon_actions[index][0], true): - $Ship.shoot(weapons[index]) + ship.shoot(weapons[index]) if Input.is_action_pressed(weapon_actions[index][1], true): - $Ship.reload(weapons[index]) + ship.reload(weapons[index]) diff --git a/game/entities/ship.gd b/game/entities/ship.gd index d4432d5..d2ae0cb 100644 --- a/game/entities/ship.gd +++ b/game/entities/ship.gd @@ -1,17 +1,18 @@ extends CharacterBody2D -const Weapon = preload("res://game/entities/weapons/weapon.tscn") +@onready var sprite := $Sprite2D +@onready var colision := $CollisionShape2D @export var size : Vector2: set(value): size = value - if $Sprite2D.texture: - $Sprite2D.texture.size = value - $CollisionShape2D.shape.radius = 0.9 * minf(size.x, size.y)/2 - $CollisionShape2D.shape.height = 0.9 * maxf(size.x, size.y) - $CollisionShape2D.rotation = 0.0 if size.x < size.y else PI/2 + if sprite.texture: + sprite.texture.size = value + colision.shape.radius = 0.9 * minf(size.x, size.y)/2 + colision.shape.height = 0.9 * maxf(size.x, size.y) + colision.rotation = 0.0 if size.x < size.y else PI/2 get: return size @@ -29,11 +30,12 @@ const Weapon = preload("res://game/entities/weapons/weapon.tscn") func _ready() -> void: var texture := PlaceholderTexture2D.new() texture.size = size - $Sprite2D.texture = texture + sprite.texture = texture + const WEAPON = preload("res://game/entities/weapons/weapon.tscn") var weapons_by_offset := { - 8: Weapon.instantiate(), - -8: Weapon.instantiate(), + 8: WEAPON.instantiate(), + -8: WEAPON.instantiate(), } for offset : int in weapons_by_offset: var weapon : Node2D = weapons_by_offset[offset] diff --git a/game/entities/weapons/projectiles/gatling_projectile.gd b/game/entities/weapons/projectiles/gatling_projectile.gd new file mode 100644 index 0000000..746a375 --- /dev/null +++ b/game/entities/weapons/projectiles/gatling_projectile.gd @@ -0,0 +1,7 @@ +extends CharacterBody2D + + +func _ready() -> void: + var texture := PlaceholderTexture2D.new() + texture.size = Vector2(4, 4) + $Sprite2D.texture = texture diff --git a/game/entities/weapons/projectiles/gatling_projectile.gd.uid b/game/entities/weapons/projectiles/gatling_projectile.gd.uid new file mode 100644 index 0000000..ee14482 --- /dev/null +++ b/game/entities/weapons/projectiles/gatling_projectile.gd.uid @@ -0,0 +1 @@ +uid://rtsf1n0djorp diff --git a/game/entities/weapons/projectiles/gatling_projectile.tscn b/game/entities/weapons/projectiles/gatling_projectile.tscn index 00370a4..b92d60b 100644 --- a/game/entities/weapons/projectiles/gatling_projectile.tscn +++ b/game/entities/weapons/projectiles/gatling_projectile.tscn @@ -1,10 +1,18 @@ -[gd_scene load_steps=2 format=3 uid="uid://cnoiv8hdgossf"] +[gd_scene load_steps=4 format=3 uid="uid://cnoiv8hdgossf"] -[ext_resource type="Script" uid="uid://ctmjb3nkxrepu" path="res://game/entities/weapons/projectiles/projectile.gd" id="1_2ltai"] +[ext_resource type="Script" uid="uid://rtsf1n0djorp" path="res://game/entities/weapons/projectiles/gatling_projectile.gd" id="1_xq7oi"] +[ext_resource type="PackedScene" uid="uid://bohp8yx6cldgc" path="res://game/entities/weapons/projectiles/projectile_mover.tscn" id="2_jnl7n"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_5a440"] +radius = 4.0 [node name="GatlingProjectile" type="CharacterBody2D"] -script = ExtResource("1_2ltai") -damage = 6 -speed = 600 -direction = Vector2(1, 0) +script = ExtResource("1_xq7oi") metadata/_custom_type_script = "uid://ctmjb3nkxrepu" + +[node name="Sprite2D" type="Sprite2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_5a440") + +[node name="ProjectileMover" parent="." instance=ExtResource("2_jnl7n")] diff --git a/game/entities/weapons/projectiles/projectile.gd b/game/entities/weapons/projectiles/projectile_mover.gd similarity index 88% rename from game/entities/weapons/projectiles/projectile.gd rename to game/entities/weapons/projectiles/projectile_mover.gd index 9cba38e..fd52fb8 100644 --- a/game/entities/weapons/projectiles/projectile.gd +++ b/game/entities/weapons/projectiles/projectile_mover.gd @@ -1,7 +1,7 @@ -class_name ProjectileMover extends Node +signal velocity_updated(new_velocity: Vector2) signal destroyed @@ -19,7 +19,11 @@ var velocity : Vector2: get: return _velocity -var _velocity : Vector2 +var _velocity : Vector2: + set(value): + _velocity = value + velocity_updated.emit(_velocity) + var _traveled_distance: float var _livetime: float diff --git a/game/entities/weapons/projectiles/projectile.gd.uid b/game/entities/weapons/projectiles/projectile_mover.gd.uid similarity index 100% rename from game/entities/weapons/projectiles/projectile.gd.uid rename to game/entities/weapons/projectiles/projectile_mover.gd.uid diff --git a/game/entities/weapons/projectiles/projectile_mover.tscn b/game/entities/weapons/projectiles/projectile_mover.tscn new file mode 100644 index 0000000..e4e548e --- /dev/null +++ b/game/entities/weapons/projectiles/projectile_mover.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bohp8yx6cldgc"] + +[ext_resource type="Script" uid="uid://ctmjb3nkxrepu" path="res://game/entities/weapons/projectiles/projectile_mover.gd" id="1_4tgfk"] + +[node name="ProjectileMover" type="Node"] +script = ExtResource("1_4tgfk") diff --git a/game/entities/weapons/weapon.gd b/game/entities/weapons/weapon.gd index 5352041..361bf9e 100644 --- a/game/entities/weapons/weapon.gd +++ b/game/entities/weapons/weapon.gd @@ -5,10 +5,13 @@ extends Node2D @export var damage : int @export var bullet_per_shot : int @export var sector_angle : int -@export var Projectile : AbstractProjectile +#@export var Projectile : AbstractProjectile @export var reloaders : Array[AbstractReloader] +@onready var sprite := $Sprite2D + + func _init() -> void: #TEST var firerate_reloader := preload("res://game/entities/weapons/reloaders/firerate_reloader.gd").new() @@ -33,7 +36,7 @@ func _init() -> void: func _ready() -> void: var texture := PlaceholderTexture2D.new() texture.size = Vector2(10, 7) - $Sprite2D.texture = texture + sprite.texture = texture func shoot() -> void: diff --git a/menu/main_menu.gd b/menu/main_menu.gd index 04fa7af..b04d10d 100644 --- a/menu/main_menu.gd +++ b/menu/main_menu.gd @@ -7,13 +7,16 @@ signal quit_game signal show_options +@onready var continue_button := $%ContinueButton + + func _ready() -> void: _init_focus() _setup_neighbors() func _init_focus() -> void: - if $%ContinueButton.disabled: + if continue_button.disabled: $%StartButton.grab_focus() else: $%ContinueButton.grab_focus() diff --git a/menu/options.gd b/menu/options.gd index 413a424..8d25c7b 100644 --- a/menu/options.gd +++ b/menu/options.gd @@ -5,6 +5,12 @@ signal show_credits signal show_main_menu +@onready var fullscreen_button := $%FullscreenCheckButton +@onready var window_factor_button := $%WindowFactorOptionButton +@onready var credits_button := $%CreditsButton +@onready var back_button := $%BackButton + + func _ready() -> void: _load_current_settings() _init_focus() @@ -12,30 +18,30 @@ func _ready() -> void: func _init_focus() -> void: - $%FullscreenCheckButton.grab_focus() + fullscreen_button.grab_focus() func _setup_neighbors() -> void: - $%CreditsButton.focus_neighbor_left = $%BackButton.get_path() - $%BackButton.focus_neighbor_right = $%CreditsButton.get_path() + credits_button.focus_neighbor_left = back_button.get_path() + back_button.focus_neighbor_right = credits_button.get_path() func _load_current_settings() -> void: - $%FullscreenCheckButton.button_pressed = SettingsManager.fullscreen - $%WindowFactorOptionButton.selected = SettingsManager.window_factor + fullscreen_button.button_pressed = SettingsManager.fullscreen + window_factor_button.selected = SettingsManager.window_factor _update_window_factor_disabled() func _update_window_factor_disabled() -> void: - $%WindowFactorOptionButton.disabled = SettingsManager.fullscreen + window_factor_button.disabled = SettingsManager.fullscreen -func _on_fullscreen_check_button_toggled(toggled: bool) -> void: +func _on_fullscreen_button_toggled(toggled: bool) -> void: SettingsManager.fullscreen = toggled _update_window_factor_disabled() -func _on_window_factor_option_button_item_selected(index: int) -> void: +func _on_window_factor_button_item_selected(index: int) -> void: if not SettingsManager.fullscreen: SettingsManager.window_factor = index diff --git a/menu/pause_menu.gd b/menu/pause_menu.gd index 6bb48a4..8ed749d 100644 --- a/menu/pause_menu.gd +++ b/menu/pause_menu.gd @@ -1,6 +1,10 @@ extends Node +@onready var continue_button := $%ContinueButton +@onready var main_menu_button := $%MainMenuButton + + signal continue_game signal show_main_menu @@ -11,12 +15,12 @@ func _ready() -> void: func _init_focus() -> void: - $%ContinueButton.grab_focus() + continue_button.grab_focus() func _setup_neighbors() -> void: - $%ContinueButton.focus_neighbor_top = $%MainMenuButton.get_path() - $%MainMenuButton.focus_neighbor_bottom = $%ContinueButton.get_path() + continue_button.focus_neighbor_top = main_menu_button.get_path() + main_menu_button.focus_neighbor_bottom = continue_button.get_path() func _on_continue_button_pressed() -> void: