From 8175e1469da1a33842e542d6bddc9a701744c911 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 7 Dec 2025 09:54:50 +0000 Subject: [PATCH] Added shield and score UI; player collision signal connected to enemy --- resources/bar_background.png | Bin 0 -> 599 bytes resources/bar_background.png.import | 40 +++++++++++++ resources/bar_foreground.png | Bin 0 -> 629 bytes resources/bar_foreground.png.import | 40 +++++++++++++ scenes/EnemyBullet.gd | 17 ++++++ scenes/EnemyBullet.gd.uid | 1 + scenes/EnemyBullet.tscn | 22 ++++++++ scenes/enemy.gd | 32 ++++++----- scenes/main.gd | 1 + scenes/main.tscn | 11 +++- scenes/player.gd | 19 +++++++ scenes/score_counter.gd | 20 +++++++ scenes/score_counter.gd.uid | 1 + scenes/score_counter.tscn | 84 ++++++++++++++++++++++++++++ scenes/ui.gd | 12 ++++ scenes/ui.gd.uid | 1 + scenes/ui.tscn | 35 ++++++++++++ 17 files changed, 321 insertions(+), 15 deletions(-) create mode 100644 resources/bar_background.png create mode 100644 resources/bar_background.png.import create mode 100644 resources/bar_foreground.png create mode 100644 resources/bar_foreground.png.import create mode 100644 scenes/EnemyBullet.gd create mode 100644 scenes/EnemyBullet.gd.uid create mode 100644 scenes/EnemyBullet.tscn create mode 100644 scenes/score_counter.gd create mode 100644 scenes/score_counter.gd.uid create mode 100644 scenes/score_counter.tscn create mode 100644 scenes/ui.gd create mode 100644 scenes/ui.gd.uid create mode 100644 scenes/ui.tscn diff --git a/resources/bar_background.png b/resources/bar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..ab575400f4de550facd75473935548f7238eefe7 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-5sS%!O zzP=1vKsE;h6Qd9VGmymygbeMO3@l(a1A`inW?*1mz=)7tzyy~SSip>6gA}TD#J>R= z5}6qiQ4-E(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT z`K2YcN=hJ$-~i&zlFT%OO?kyoZvj2150cS0)HBeBn+?=z0}{3JFUm{>+6*$^&d>&| z5=9JZkBvUaawNwFep@7-AuqoFE~WaItare@|8g z+l2dvO(si;C~zNaYmiuy)wYuTWolF5iKXtm2?+^NH6O&7Ee#njF<;_l+pvW}NJZ>` gu+Ywn<`rKU8B7ZLbMJS&RshA3r>mdKI;Vst0Kl`MQ2+n{ literal 0 HcmV?d00001 diff --git a/resources/bar_background.png.import b/resources/bar_background.png.import new file mode 100644 index 0000000..4903644 --- /dev/null +++ b/resources/bar_background.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkv6xa8ir2j27" +path="res://.godot/imported/bar_background.png-35ce8beb14ccfaf777d8509da9ea057d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bar_background.png" +dest_files=["res://.godot/imported/bar_background.png-35ce8beb14ccfaf777d8509da9ea057d.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/resources/bar_foreground.png b/resources/bar_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed11be6f23b3b94993039d75c6f6e8f5b3f9223 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-5sS%!O zzP=1vKsE;h6Qd9VGmymygbeMO3@l(a1A`inW?*1mz=)7tzyy~SSip>6gA}TD#J>R= z5}6qiQ4-E(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT z`K2YcN=hJ$-~i&zlFT%OO?kyoZvj2150cS0)HBeBn+?=z0}{3JFUm{>+6*$^&d>&| z5=9JZkBvUaawNwS6TY(KmJ;1?PwfrL{F5d1rP{ zKC6F_b$W8s<`XGAdl)qm8{U{F)gJNiG|{uG;7;OK 0: diff --git a/scenes/score_counter.gd b/scenes/score_counter.gd new file mode 100644 index 0000000..ac10812 --- /dev/null +++ b/scenes/score_counter.gd @@ -0,0 +1,20 @@ +extends HBoxContainer + +var digit_coords = { + 1: Vector2(0, 0), + 2: Vector2(8, 0), + 3: Vector2(16, 0), + 4: Vector2(24, 0), + 5: Vector2(32, 0), + 6: Vector2(0, 8), + 7: Vector2(8, 8), + 8: Vector2(16, 8), + 9: Vector2(24, 8), + 0: Vector2(32, 8) +} + +func display_digits(n): + var s = "%08d" % n + for i in 8: + get_child(i).texture.region = Rect2(digit_coords[int(s[i])], + Vector2(8, 8)) diff --git a/scenes/score_counter.gd.uid b/scenes/score_counter.gd.uid new file mode 100644 index 0000000..0a6c45a --- /dev/null +++ b/scenes/score_counter.gd.uid @@ -0,0 +1 @@ +uid://dgcss5ggpd777 diff --git a/scenes/score_counter.tscn b/scenes/score_counter.tscn new file mode 100644 index 0000000..d659007 --- /dev/null +++ b/scenes/score_counter.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=11 format=3 uid="uid://b3rcs8xlsvm02"] + +[ext_resource type="Script" uid="uid://dgcss5ggpd777" path="res://scenes/score_counter.gd" id="1_ep32e"] +[ext_resource type="Texture2D" uid="uid://ddh7mk2ekhq3u" path="res://resources/Mini Pixel Pack 3/UI objects/Number_font (8 x 8).png" id="2_f43bp"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_ep32e"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f43bp"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kry78"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lqfp5"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2qpgf"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vbwnf"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3wgod"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_quku1"] +atlas = ExtResource("2_f43bp") +region = Rect2(32, 8, 8, 8) + +[node name="ScoreCounter" type="HBoxContainer"] +anchors_preset = 10 +anchor_right = 1.0 +grow_horizontal = 2 +size_flags_horizontal = 8 +theme_override_constants/separation = 0 +script = ExtResource("1_ep32e") + +[node name="Digit0" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_ep32e") +stretch_mode = 5 + +[node name="Digit1" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_f43bp") +stretch_mode = 5 + +[node name="Digit2" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_kry78") +stretch_mode = 5 + +[node name="Digit3" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_lqfp5") +stretch_mode = 5 + +[node name="Digit4" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_2qpgf") +stretch_mode = 5 + +[node name="Digit5" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_vbwnf") +stretch_mode = 5 + +[node name="Digit6" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_3wgod") +stretch_mode = 5 + +[node name="Digit7" type="TextureRect" parent="."] +layout_mode = 2 +texture = SubResource("AtlasTexture_quku1") +stretch_mode = 5 diff --git a/scenes/ui.gd b/scenes/ui.gd new file mode 100644 index 0000000..2d683c9 --- /dev/null +++ b/scenes/ui.gd @@ -0,0 +1,12 @@ +extends MarginContainer + +@onready var shield_bar = $HBoxContainer/ShieldBar +@onready var score_counter = $HBoxContainer/ScoreCounter + +func update_score(value): + score_counter.display_digits(value) + + +func update_shield(max_value, value): + shield_bar.max_value = max_value + shield_bar.value = value diff --git a/scenes/ui.gd.uid b/scenes/ui.gd.uid new file mode 100644 index 0000000..76270c1 --- /dev/null +++ b/scenes/ui.gd.uid @@ -0,0 +1 @@ +uid://dv6s1gx40k0v1 diff --git a/scenes/ui.tscn b/scenes/ui.tscn new file mode 100644 index 0000000..ffc2ba4 --- /dev/null +++ b/scenes/ui.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3 uid="uid://k0yw686ys6ug"] + +[ext_resource type="Script" uid="uid://dv6s1gx40k0v1" path="res://scenes/ui.gd" id="1_gdt2y"] +[ext_resource type="Texture2D" uid="uid://dkv6xa8ir2j27" path="res://resources/bar_background.png" id="1_x4jx1"] +[ext_resource type="Texture2D" uid="uid://cs0do05fosv40" path="res://resources/bar_foreground.png" id="2_yev5y"] +[ext_resource type="PackedScene" uid="uid://b3rcs8xlsvm02" path="res://scenes/score_counter.tscn" id="4_wm3ai"] + +[node name="UI" type="MarginContainer"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 10.0 +grow_horizontal = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 +script = ExtResource("1_gdt2y") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="ShieldBar" type="TextureProgressBar" parent="HBoxContainer"] +custom_minimum_size = Vector2(80, 16) +layout_mode = 2 +value = 100.0 +nine_patch_stretch = true +stretch_margin_left = 3 +stretch_margin_top = 3 +stretch_margin_right = 3 +stretch_margin_bottom = 3 +texture_under = ExtResource("1_x4jx1") +texture_progress = ExtResource("2_yev5y") + +[node name="ScoreCounter" parent="HBoxContainer" instance=ExtResource("4_wm3ai")] +layout_mode = 2