diff --git a/scenes/Ships/player_ship.tscn b/scenes/Ships/player_ship.tscn index 340dcf5..2660164 100644 --- a/scenes/Ships/player_ship.tscn +++ b/scenes/Ships/player_ship.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://dok3i8u5t1ka4"] +[gd_scene load_steps=11 format=3 uid="uid://dok3i8u5t1ka4"] [ext_resource type="PackedScene" uid="uid://bjkshql8ut6hk" path="res://scenes/Ships/ship.tscn" id="1_6x7bu"] [ext_resource type="Script" path="res://scripts/Ship/player_ship.gd" id="2_oqdd7"] @@ -58,6 +58,25 @@ func _process(_delta): text = unformatted_text.format([ship.shield.capacity, ship.shield.max_capacity]) " +[sub_resource type="GDScript" id="GDScript_rrgab"] +resource_name = "ammunition_counter" +script/source = "extends Label + +## Text with placeholder +@onready var unformatted_text: String = text +## Shortcut to get_parent().get_parent() +@onready var ship: PlayerShip = get_parent().get_parent() + +func _process(_delta): + var format = [ + ship.hull.ammunition[\"Laser Energy\"], + ship.hull.max_ammunition[\"Laser Energy\"], + ship.hull.ammunition[\"Rockets\"], + ship.hull.max_ammunition[\"Rockets\"] + ] + text = unformatted_text.format(format) +" + [node name="PlayerShip" instance=ExtResource("1_6x7bu")] script = ExtResource("2_oqdd7") @@ -66,6 +85,8 @@ script = ExtResource("3_0e84a") [node name="Weapon" parent="Weapons" index="0" instance=ExtResource("4_fy1be")] action_id = "primary" +ammo_type = "Laser Energy" +ammo_consumption = 1.0 [node name="ColorableGUI" type="CanvasLayer" parent="." index="5"] @@ -101,6 +122,17 @@ offset_bottom = 661.0 text = "Shield: {0} / {1} units" script = SubResource("GDScript_q1sx2") +[node name="Ammunition" type="Label" parent="ColorableGUI" index="4"] +offset_left = 1060.0 +offset_top = 638.0 +offset_right = 1273.0 +offset_bottom = 713.0 +text = "Ammunition: +Laser Energy: {0} / {1} +Rockets: {2} / {3}" +horizontal_alignment = 2 +script = SubResource("GDScript_rrgab") + [node name="NonColorableGUI" type="CanvasLayer" parent="." index="6"] [node name="Camera" type="Camera2D" parent="." index="7"] diff --git a/scenes/Star Systems/sta2BF8.tmp b/scenes/Star Systems/sta2BF8.tmp new file mode 100644 index 0000000..9c130e0 --- /dev/null +++ b/scenes/Star Systems/sta2BF8.tmp @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://crneq2enhxsw5"] + +[ext_resource type="PackedScene" uid="uid://bsnrcw64qr2hr" path="res://scenes/Star Systems/star_system_template.tscn" id="1_2ai1l"] +[ext_resource type="PackedScene" uid="uid://dok3i8u5t1ka4" path="res://scenes/Ships/player_ship.tscn" id="7_jyplv"] + +[node name="StarSystem" instance=ExtResource("1_2ai1l")] +width = 16384 +height = 16384 + +[node name="Stars" parent="." index="0"] +scroll_offset = Vector2(681.667, 317.783) +stars_amount = 4000 + +[node name="Nebula" parent="Background" index="0" node_paths=PackedStringArray("tracked_node")] +tracked_node = NodePath("../../PlayerShip") +color_background = Color(0.276474, 0.0962249, 0.200656, 1) + +[node name="PlayerShip" parent="." index="4" instance=ExtResource("7_jyplv")] +process_mode = 0 +position = Vector2(19, 10) diff --git a/scenes/Star Systems/staBCB.tmp b/scenes/Star Systems/staBCB.tmp new file mode 100644 index 0000000..9c130e0 --- /dev/null +++ b/scenes/Star Systems/staBCB.tmp @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://crneq2enhxsw5"] + +[ext_resource type="PackedScene" uid="uid://bsnrcw64qr2hr" path="res://scenes/Star Systems/star_system_template.tscn" id="1_2ai1l"] +[ext_resource type="PackedScene" uid="uid://dok3i8u5t1ka4" path="res://scenes/Ships/player_ship.tscn" id="7_jyplv"] + +[node name="StarSystem" instance=ExtResource("1_2ai1l")] +width = 16384 +height = 16384 + +[node name="Stars" parent="." index="0"] +scroll_offset = Vector2(681.667, 317.783) +stars_amount = 4000 + +[node name="Nebula" parent="Background" index="0" node_paths=PackedStringArray("tracked_node")] +tracked_node = NodePath("../../PlayerShip") +color_background = Color(0.276474, 0.0962249, 0.200656, 1) + +[node name="PlayerShip" parent="." index="4" instance=ExtResource("7_jyplv")] +process_mode = 0 +position = Vector2(19, 10) diff --git a/scenes/Star Systems/star_system_debug.tscn b/scenes/Star Systems/star_system_debug.tscn index 9c130e0..e031ca5 100644 --- a/scenes/Star Systems/star_system_debug.tscn +++ b/scenes/Star Systems/star_system_debug.tscn @@ -15,6 +15,6 @@ stars_amount = 4000 tracked_node = NodePath("../../PlayerShip") color_background = Color(0.276474, 0.0962249, 0.200656, 1) -[node name="PlayerShip" parent="." index="4" instance=ExtResource("7_jyplv")] +[node name="PlayerShip" parent="." index="3" instance=ExtResource("7_jyplv")] process_mode = 0 position = Vector2(19, 10) diff --git a/scenes/Star Systems/star_system_template.tscn b/scenes/Star Systems/star_system_template.tscn index 60de158..ba7a659 100644 --- a/scenes/Star Systems/star_system_template.tscn +++ b/scenes/Star Systems/star_system_template.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://bsnrcw64qr2hr"] +[gd_scene load_steps=8 format=3 uid="uid://bsnrcw64qr2hr"] [ext_resource type="Script" path="res://scripts/star_system.gd" id="1_xx8w2"] [ext_resource type="PackedScene" uid="uid://dpggye27ln436" path="res://scenes/Star Systems/Required Scenes/star_generator.tscn" id="2_iqrn0"] @@ -7,9 +7,23 @@ [ext_resource type="Script" path="res://scripts/nebula.gd" id="5_la84n"] [ext_resource type="PackedScene" uid="uid://c7is7y341f6wa" path="res://scenes/Star Systems/Required Scenes/pause_controller.tscn" id="6_61vq5"] +[sub_resource type="GDScript" id="GDScript_4yoh5"] +resource_name = "version_label" +script/source = "extends Label + +func _ready(): + text = \"cosmic {version}\".format({\"version\" : Game.gameversion}) + if OS.has_feature(\"editor\"): + text += \" uncompiled\\ndebug/prerelease version\" + else: + if Game.beta: + text += \" beta\\nclosed beta\" +" + [node name="StarSystem" type="Node"] process_mode = 3 script = ExtResource("1_xx8w2") +pause_controller_scene = ExtResource("6_61vq5") [node name="Stars" parent="." instance=ExtResource("2_iqrn0")] @@ -32,5 +46,12 @@ grow_vertical = 2 script = ExtResource("5_la84n") color_background = Color(0.36, 0.18612, 0.1116, 1) -[node name="PauseController" parent="." instance=ExtResource("6_61vq5")] -visible = false +[node name="Version" type="Label" parent="Background"] +z_index = 50 +z_as_relative = false +offset_top = 6.0 +offset_right = 1280.0 +offset_bottom = 29.0 +text = "GammaCosmicRays version Ifre 1.0" +horizontal_alignment = 1 +script = SubResource("GDScript_4yoh5") diff --git a/scenes/projectiles/Laser.tscn b/scenes/projectiles/Laser.tscn index 728f41a..aaddd25 100644 --- a/scenes/projectiles/Laser.tscn +++ b/scenes/projectiles/Laser.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://scripts/objects/projectile.gd" id="1_6nacn"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_mo2if"] -size = Vector2(1, 8) +size = Vector2(4, 32) [node name="Laser" type="Node2D" node_paths=PackedStringArray("collider")] script = ExtResource("1_6nacn") @@ -11,14 +11,17 @@ speed = 600.0 collider = NodePath("Collision") [node name="LaserBody" type="Line2D" parent="."] -points = PackedVector2Array(0, 0, 8, 0) -width = 1.0 +points = PackedVector2Array(2, 0, 30, 0) +width = 4.0 +begin_cap_mode = 2 +end_cap_mode = 2 +round_precision = 4 [node name="Collision" type="Area2D" parent="."] collision_layer = 4 collision_mask = 3 [node name="CollisionShape2D" type="CollisionShape2D" parent="Collision"] -position = Vector2(4, 0) +position = Vector2(16, -4.34399e-05) rotation = -1.5708 shape = SubResource("RectangleShape2D_mo2if") diff --git a/scripts/Ship/hull.gd b/scripts/Ship/hull.gd index 37428db..ffad431 100644 --- a/scripts/Ship/hull.gd +++ b/scripts/Ship/hull.gd @@ -18,7 +18,7 @@ class_name Hull "Rockets": 10, } ## Current ammunition. Change this with set_ammunition -@onready var ammunition: Dictionary = max_ammunition +@onready var ammunition: Dictionary = max_ammunition.duplicate() ## Current HP of the hull. If it reaches zero, it emits parent's destroyed signal @onready var hp: float = max_hp: @@ -35,9 +35,8 @@ var scalar_velocity: float = 0.0 func add_ammunition(which: String, value: float) -> bool: if ammunition[which] + value < 0: return false - ammunition[which] += value; - if ammunition[which] > max_ammunition[which]: - ammunition[which] = max_ammunition[which] + ammunition[which] = snapped(ammunition[which] + value, 0.01) + ammunition[which] = min(ammunition[which], max_ammunition[which]) return true ## Update ship's position and rotation diff --git a/scripts/Ship/player_ship.gd b/scripts/Ship/player_ship.gd index 6fb237d..5f20f64 100644 --- a/scripts/Ship/player_ship.gd +++ b/scripts/Ship/player_ship.gd @@ -4,6 +4,8 @@ class_name PlayerShip ## Player camera reference @onready var camera = $Camera +## Player colorable GUI reference +@onready var colorable_gui = $ColorableGUI ## Currency variable var money: float = 1000.0 diff --git a/scripts/Ship/shield.gd b/scripts/Ship/shield.gd index e91a6e3..3f476e9 100644 --- a/scripts/Ship/shield.gd +++ b/scripts/Ship/shield.gd @@ -28,7 +28,7 @@ class_name Shield ## Indicates if shield will charge var can_recharge_shield: bool = false ## Indicates if laser will charge -var can_recharge_laser: bool = true +var can_recharge_laser: bool = false func _ready() -> void: shield_recharge_timer.timeout.connect(shield_timer_out) diff --git a/scripts/Ship/weapon.gd b/scripts/Ship/weapon.gd index 430f94a..42300aa 100644 --- a/scripts/Ship/weapon.gd +++ b/scripts/Ship/weapon.gd @@ -39,6 +39,7 @@ func _process(_delta) -> void: shoot_timer.start() if ammo_type == "Laser Energy": ship.shield.laser_recharge_timer.start() + ship.shield.can_recharge_laser = false func shoot() -> void: for spawner in spawner_points: diff --git a/scripts/star_system.gd b/scripts/star_system.gd index 5b5db4e..960b638 100644 --- a/scripts/star_system.gd +++ b/scripts/star_system.gd @@ -7,21 +7,32 @@ class_name StarSystem ## Height of the system. Limits stars generation and camera bounds @export var height: int = 8192 -## Pause controller node reference -@onready var pause_controller = $PauseController +## Pause controller packed scene +@export var pause_controller_scene: PackedScene ## Player ship reference. May be null. var player_ship: PlayerShip +## Pause controller reference +var pause_controller: Control func _ready(): player_ship = get_node_or_null("PlayerShip") - # adjust player ship camera if player ship exists + pause_controller = pause_controller_scene.instantiate() + if player_ship != null: + # adjust player ship camera if player ship exists player_ship.camera.limit_left = -width / 2 player_ship.camera.limit_right = width / 2 player_ship.camera.limit_top = -height / 2 player_ship.camera.limit_bottom = height / 2 + # add pause controller child to the gui + player_ship.colorable_gui.add_child(pause_controller) + else: + # or add it to root node lol + add_child(pause_controller) + + pause_controller.visible = false ## Pause the game. Remember to unpause it when switching scenes! func pause(): @@ -36,3 +47,6 @@ func unpause(): func _process(_delta): if Input.is_action_just_released("pause"): unpause() if get_tree().paused else pause() + + if player_ship != null: + pause_controller.position = player_ship.global_position