diff --git a/game/entities/player.gd b/game/entities/player.gd index 2f2b920..ebcf40d 100644 --- a/game/entities/player.gd +++ b/game/entities/player.gd @@ -6,7 +6,15 @@ var position : Vector2: $Ship.position = value get: return $Ship.position - + + +func _input(event: InputEvent) -> void: + var weapons : Array = $Ship.weapons + var weapon_actions := { 0: "shoot_weapon_1", 1: "shoot_weapon_2" } + for index : int in weapon_actions: + if event.is_action_pressed(weapon_actions[index]) and weapons.size() > index: + $Ship.shoot(weapons[index]) + func _process(delta: float) -> void: var input_direction := Input.get_vector("move_left", "move_right", "move_up", "move_down") diff --git a/game/entities/ship.gd b/game/entities/ship.gd index dd2ec19..c92cd1a 100644 --- a/game/entities/ship.gd +++ b/game/entities/ship.gd @@ -15,13 +15,27 @@ extends CharacterBody2D @export var deceleration : int @export var max_speed : int -#var _velocity : Vector2 +@onready var weapons : Array: + set(value): + pass + get: + return weapons func _ready() -> void: var texture := PlaceholderTexture2D.new() texture.size = size $Sprite2D.texture = texture + + var weapons_by_offset := { + 8: preload("res://game/entities/weapon.tscn").instantiate(), + -8: preload("res://game/entities/weapon.tscn").instantiate(), + } + for offset : int in weapons_by_offset: + var weapon : Node2D = weapons_by_offset[offset] + weapon.position = Vector2(0, offset) + add_child(weapon) + weapons.append(weapon) func _physics_process(_delta: float) -> void: @@ -29,7 +43,6 @@ func _physics_process(_delta: float) -> void: if was_collided: var normal := get_wall_normal() velocity -= normal.abs() * velocity - print(was_collided, get_wall_normal(), velocity) func accelerate(direction: Vector2, delta: float) -> void: @@ -50,3 +63,8 @@ func _get_new_speed(accel: float, decel: float, current_speed: float) -> float: return current_speed + (decel if current_speed < 0 else -decel) else: return current_speed + accel + + +func shoot(weapon: Node) -> void: + if weapon in weapons: + weapon.shoot() diff --git a/game/entities/weapon.gd b/game/entities/weapon.gd new file mode 100644 index 0000000..dc1371c --- /dev/null +++ b/game/entities/weapon.gd @@ -0,0 +1,11 @@ +extends Node2D + + +func _ready() -> void: + var texture := PlaceholderTexture2D.new() + texture.size = Vector2(10, 7) + $Sprite2D.texture = texture + + +func shoot() -> void: + print("shoot") diff --git a/game/entities/weapon.gd.uid b/game/entities/weapon.gd.uid new file mode 100644 index 0000000..0b6400a --- /dev/null +++ b/game/entities/weapon.gd.uid @@ -0,0 +1 @@ +uid://dpqxs8hlql2o0 diff --git a/game/entities/weapon.tscn b/game/entities/weapon.tscn new file mode 100644 index 0000000..96b144f --- /dev/null +++ b/game/entities/weapon.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dwm4iejnbuhxo"] + +[ext_resource type="Script" uid="uid://dpqxs8hlql2o0" path="res://game/entities/weapon.gd" id="1_4oq3a"] + +[node name="Weapon" type="Node2D"] +script = ExtResource("1_4oq3a") + +[node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/menu/credits.tscn b/menu/credits.tscn index 149bd3c..b1186b2 100644 --- a/menu/credits.tscn +++ b/menu/credits.tscn @@ -14,6 +14,7 @@ anchors_preset = 0 script = ExtResource("1_wp78b") [node name="VBoxContainer" type="VBoxContainer" parent="."] +top_level = true layout_mode = 0 offset_left = 100.0 offset_top = 100.0 diff --git a/menu/main_menu.tscn b/menu/main_menu.tscn index 6fcecc3..e0afb47 100644 --- a/menu/main_menu.tscn +++ b/menu/main_menu.tscn @@ -8,6 +8,7 @@ anchors_preset = 0 script = ExtResource("1_chmv6") [node name="VBoxContainer" type="VBoxContainer" parent="."] +top_level = true layout_mode = 0 offset_left = 100.0 offset_top = 100.0 diff --git a/menu/options.tscn b/menu/options.tscn index c662b23..b958344 100644 --- a/menu/options.tscn +++ b/menu/options.tscn @@ -14,6 +14,7 @@ anchors_preset = 0 script = ExtResource("1_61pji") [node name="VBoxContainer" type="VBoxContainer" parent="."] +top_level = true layout_mode = 0 offset_left = 100.0 offset_top = 100.0 diff --git a/menu/pause_menu.tscn b/menu/pause_menu.tscn index 78940af..6f50ddb 100644 --- a/menu/pause_menu.tscn +++ b/menu/pause_menu.tscn @@ -18,6 +18,7 @@ anchors_preset = 0 script = ExtResource("1_inj1j") [node name="VBoxContainer" type="VBoxContainer" parent="."] +top_level = true layout_mode = 0 offset_left = 100.0 offset_top = 100.0