From 5110cace0738045bafefe1146224fd7d222abc02 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 31 Jan 2025 10:06:27 +0100 Subject: [PATCH 1/6] Multicolored keycards --- Resources/Items/Blue_Keycard.tres | 9 +++++ Resources/Items/Green_Keycard.tres | 9 +++++ Scenes/Items/Blue_Keycard.tscn | 33 +++++++++++++++++ Scenes/Items/Green_Keycard.tscn | 31 ++++++++++++++++ Scenes/Items/Red_Keycard.tscn | 41 +++++++++++++++++++++ Scenes/Red_Keycard.tscn | 21 ----------- Scenes/test.tscn | 5 ++- Scripts/Interactables/ItemPickup.cs | 26 +++++++++++++ Sprites/Items/BlueKeycard_Small.aseprite | 3 ++ Sprites/Items/BlueKeycard_Small.png | 3 ++ Sprites/Items/BlueKeycard_Small.png.import | 34 +++++++++++++++++ Sprites/Items/GreenKeycard_Small.aseprite | 3 ++ Sprites/Items/GreenKeycard_Small.png | 3 ++ Sprites/Items/GreenKeycard_Small.png.import | 34 +++++++++++++++++ Sprites/Items/RedKeycard_Small.aseprite | 3 ++ Sprites/Items/RedKeycard_Small.png | 3 ++ Sprites/Items/RedKeycard_Small.png.import | 34 +++++++++++++++++ 17 files changed, 273 insertions(+), 22 deletions(-) create mode 100644 Resources/Items/Blue_Keycard.tres create mode 100644 Resources/Items/Green_Keycard.tres create mode 100644 Scenes/Items/Blue_Keycard.tscn create mode 100644 Scenes/Items/Green_Keycard.tscn create mode 100644 Scenes/Items/Red_Keycard.tscn delete mode 100644 Scenes/Red_Keycard.tscn create mode 100644 Scripts/Interactables/ItemPickup.cs create mode 100644 Sprites/Items/BlueKeycard_Small.aseprite create mode 100644 Sprites/Items/BlueKeycard_Small.png create mode 100644 Sprites/Items/BlueKeycard_Small.png.import create mode 100644 Sprites/Items/GreenKeycard_Small.aseprite create mode 100644 Sprites/Items/GreenKeycard_Small.png create mode 100644 Sprites/Items/GreenKeycard_Small.png.import create mode 100644 Sprites/Items/RedKeycard_Small.aseprite create mode 100644 Sprites/Items/RedKeycard_Small.png create mode 100644 Sprites/Items/RedKeycard_Small.png.import diff --git a/Resources/Items/Blue_Keycard.tres b/Resources/Items/Blue_Keycard.tres new file mode 100644 index 00000000..e930115a --- /dev/null +++ b/Resources/Items/Blue_Keycard.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cj5aa7btaw6q0"] + +[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_k8cnp"] + +[resource] +script = ExtResource("1_k8cnp") +Item = 1 +Amount = 1 +Max = 1 diff --git a/Resources/Items/Green_Keycard.tres b/Resources/Items/Green_Keycard.tres new file mode 100644 index 00000000..2da9e079 --- /dev/null +++ b/Resources/Items/Green_Keycard.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cspcgkr0tane2"] + +[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_t0s5w"] + +[resource] +script = ExtResource("1_t0s5w") +Item = 2 +Amount = 1 +Max = 1 diff --git a/Scenes/Items/Blue_Keycard.tscn b/Scenes/Items/Blue_Keycard.tscn new file mode 100644 index 00000000..96ee1d16 --- /dev/null +++ b/Scenes/Items/Blue_Keycard.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=7 format=3 uid="uid://d0yes7huiyisw"] + +[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_8f4hq"] +[ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="2_woclw"] +[ext_resource type="Texture2D" uid="uid://bvybqletsvqgk" path="res://Sprites/Items/BlueKeycard_Small.png" id="3_k20dr"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kprwo"] +atlas = ExtResource("3_k20dr") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kems3"] +atlas = ExtResource("3_k20dr") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_gbw5v"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_kprwo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kems3") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[node name="BlueKeycard" instance=ExtResource("1_8f4hq")] +LootTable = [ExtResource("2_woclw")] + +[node name="AnimatedSprite2D" parent="." index="1"] +sprite_frames = SubResource("SpriteFrames_gbw5v") diff --git a/Scenes/Items/Green_Keycard.tscn b/Scenes/Items/Green_Keycard.tscn new file mode 100644 index 00000000..57147ee4 --- /dev/null +++ b/Scenes/Items/Green_Keycard.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=6 format=3 uid="uid://r25rq6ijgm6m"] + +[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_o26qb"] +[ext_resource type="Texture2D" uid="uid://bvkjnc3ggp7ba" path="res://Sprites/Items/GreenKeycard_Small.png" id="2_lts72"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_3c71u"] +atlas = ExtResource("2_lts72") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tdlc7"] +atlas = ExtResource("2_lts72") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_y8q6b"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_3c71u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tdlc7") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[node name="GreenKeyCard" instance=ExtResource("1_o26qb")] + +[node name="AnimatedSprite2D" parent="." index="1"] +sprite_frames = SubResource("SpriteFrames_y8q6b") diff --git a/Scenes/Items/Red_Keycard.tscn b/Scenes/Items/Red_Keycard.tscn new file mode 100644 index 00000000..cde5c9a6 --- /dev/null +++ b/Scenes/Items/Red_Keycard.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=8 format=3 uid="uid://dxs3ks2ucaxl4"] + +[ext_resource type="Script" path="res://Scripts/Interactables/ItemPickup.cs" id="1_cvvxn"] +[ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="4_84krq"] +[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="4_k5oc1"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_6vv2s"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_o0au0"] +atlas = ExtResource("4_k5oc1") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fx6tu"] +atlas = ExtResource("4_k5oc1") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_vi6i0"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_o0au0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fx6tu") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[node name="RedKeyCard" type="Area2D" groups=["Interactable"]] +collision_layer = 4 +collision_mask = 2 +script = ExtResource("1_cvvxn") +LootTable = [ExtResource("4_84krq")] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_6vv2s") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_vi6i0") diff --git a/Scenes/Red_Keycard.tscn b/Scenes/Red_Keycard.tscn deleted file mode 100644 index 135fa094..00000000 --- a/Scenes/Red_Keycard.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"] - -[ext_resource type="Script" path="res://Scenes/Interactable.cs" id="1_8ev2v"] -[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="2_onmup"] -[ext_resource type="Script" path="res://Scripts/Pickupper.cs" id="3_t6rqq"] - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_x0adl"] - -[node name="ControlPad" type="Area2D" groups=["Interactable"]] -collision_layer = 4 -collision_mask = 2 -script = ExtResource("1_8ev2v") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("RectangleShape2D_x0adl") - -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("2_onmup") - -[node name="Pickupper" type="Node2D" parent="."] -script = ExtResource("3_t6rqq") diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 3f70aa13..d5538061 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -22,7 +22,7 @@ [ext_resource type="Script" path="res://Scripts/InventoryManager.cs" id="18_dvo37"] [ext_resource type="PackedScene" uid="uid://v8s3kubgb2qg" path="res://Scenes/Enemy.tscn" id="18_ixcwn"] [ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="18_t6ass"] -[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Red_Keycard.tscn" id="19_8fb73"] +[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="19_8fb73"] [ext_resource type="PackedScene" uid="uid://dkwi1hu1bixoe" path="res://Scenes/HUD/HUD.tscn" id="22_krk0o"] [ext_resource type="Script" path="res://Scenes/CameraTarget.gd" id="24_0c2yt"] [ext_resource type="PackedScene" uid="uid://djf0y08ix66fn" path="res://Scenes/Interactable/Chest.tscn" id="25_4b2ed"] @@ -444,3 +444,6 @@ script = ExtResource("24_0c2yt") [node name="PlayerStartPosition" type="Marker2D" parent="."] position = Vector2(-790, -161) + +[node name="RedKeyCard2" parent="." instance=ExtResource("19_8fb73")] +position = Vector2(-824, -152) diff --git a/Scripts/Interactables/ItemPickup.cs b/Scripts/Interactables/ItemPickup.cs new file mode 100644 index 00000000..b958a858 --- /dev/null +++ b/Scripts/Interactables/ItemPickup.cs @@ -0,0 +1,26 @@ +using Cirno.Scripts.Resources; +using Godot; +using Godot.Collections; + +namespace Cirno.Scripts.Interactables; + +public partial class ItemPickup : Interactable +{ + [Export] public Array LootTable = new Array(); + + public override bool Activate() + { + GD.Print("Attempting to Pickup Item"); + + if (!MeetsRequirements()) return false; + foreach (var item in LootTable) + { + _inventoryManager.AddItem(item.Item, item.Amount); + } + + // Delet This + QueueFree(); + + return true; + } +} \ No newline at end of file diff --git a/Sprites/Items/BlueKeycard_Small.aseprite b/Sprites/Items/BlueKeycard_Small.aseprite new file mode 100644 index 00000000..ef16343d --- /dev/null +++ b/Sprites/Items/BlueKeycard_Small.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd1d4ff5766ae3e342ce9cd6f7c2065c7a9de954e21280a7265d3507403877a4 +size 742 diff --git a/Sprites/Items/BlueKeycard_Small.png b/Sprites/Items/BlueKeycard_Small.png new file mode 100644 index 00000000..314ced8e --- /dev/null +++ b/Sprites/Items/BlueKeycard_Small.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49f00becbe15e113ed829d4f5d3359b07ef5e5b4e889e176b7a0f23fcf2e7cae +size 181 diff --git a/Sprites/Items/BlueKeycard_Small.png.import b/Sprites/Items/BlueKeycard_Small.png.import new file mode 100644 index 00000000..accabfa7 --- /dev/null +++ b/Sprites/Items/BlueKeycard_Small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvybqletsvqgk" +path="res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Items/BlueKeycard_Small.png" +dest_files=["res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/Sprites/Items/GreenKeycard_Small.aseprite b/Sprites/Items/GreenKeycard_Small.aseprite new file mode 100644 index 00000000..a2fc23fc --- /dev/null +++ b/Sprites/Items/GreenKeycard_Small.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d74cbc7aa5064781b9290a6c46c87c99f4d8401f946631d2dc353eca7c4310a +size 745 diff --git a/Sprites/Items/GreenKeycard_Small.png b/Sprites/Items/GreenKeycard_Small.png new file mode 100644 index 00000000..ae5065dc --- /dev/null +++ b/Sprites/Items/GreenKeycard_Small.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1afb2d02e94775fb27f4e6d932b6b855c79f20d9fde26e5b8aa32a6d0cd8448f +size 185 diff --git a/Sprites/Items/GreenKeycard_Small.png.import b/Sprites/Items/GreenKeycard_Small.png.import new file mode 100644 index 00000000..6121903d --- /dev/null +++ b/Sprites/Items/GreenKeycard_Small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvkjnc3ggp7ba" +path="res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Items/GreenKeycard_Small.png" +dest_files=["res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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/Sprites/Items/RedKeycard_Small.aseprite b/Sprites/Items/RedKeycard_Small.aseprite new file mode 100644 index 00000000..814b6743 --- /dev/null +++ b/Sprites/Items/RedKeycard_Small.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2efb90e5b31f357fdd64d8d8b000444f1d99d734d01c9df5bbe2b1df4143829 +size 746 diff --git a/Sprites/Items/RedKeycard_Small.png b/Sprites/Items/RedKeycard_Small.png new file mode 100644 index 00000000..9df8209b --- /dev/null +++ b/Sprites/Items/RedKeycard_Small.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2905b828de32dd58fe4531e9815c4ab0ace407f6818bce7471fd1015b764c4fe +size 184 diff --git a/Sprites/Items/RedKeycard_Small.png.import b/Sprites/Items/RedKeycard_Small.png.import new file mode 100644 index 00000000..4ba60498 --- /dev/null +++ b/Sprites/Items/RedKeycard_Small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bad6gbl2gity3" +path="res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Items/RedKeycard_Small.png" +dest_files=["res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 From 13c4489017e497d7047de72247672c409528149b Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 31 Jan 2025 13:03:38 +0100 Subject: [PATCH 2/6] Item HUD management --- Resources/Items/Ammo1.tres | 14 +++++++ Resources/Items/Ammo1.tscn | 11 ++++++ Resources/Items/Red_Keycard.tres | 8 +++- Resources/Sprites/Ammo_Inventory_Sprite.tres | 18 +++++++++ .../Sprites/Red_Keycard_Inventory_Sprite.tres | 18 +++++++++ .../Red_Keycard_Inventory_Texture.tres | 7 ++++ .../Sprites/Red_Keycard_Overworld_Sprite.tres | 25 ++++++++++++ Scenes/HUD/HUD.tscn | 38 ++++++++++++------- Scenes/Items/Ammo1.tscn | 11 ++++++ Scenes/Items/Red_Keycard.tscn | 28 ++------------ Scripts/GameManager.cs | 5 ++- Scripts/Hud.cs | 21 +++++++++- Scripts/InventoryManager.cs | 10 ++++- Scripts/Resources/LootItem.cs | 5 +++ Sprites/Items/Ammo1.aseprite | 3 ++ Sprites/Items/Ammo1.png | 3 ++ Sprites/Items/Ammo1.png.import | 34 +++++++++++++++++ 17 files changed, 215 insertions(+), 44 deletions(-) create mode 100644 Resources/Items/Ammo1.tres create mode 100644 Resources/Items/Ammo1.tscn create mode 100644 Resources/Sprites/Ammo_Inventory_Sprite.tres create mode 100644 Resources/Sprites/Red_Keycard_Inventory_Sprite.tres create mode 100644 Resources/Sprites/Red_Keycard_Inventory_Texture.tres create mode 100644 Resources/Sprites/Red_Keycard_Overworld_Sprite.tres create mode 100644 Scenes/Items/Ammo1.tscn create mode 100644 Sprites/Items/Ammo1.aseprite create mode 100644 Sprites/Items/Ammo1.png create mode 100644 Sprites/Items/Ammo1.png.import diff --git a/Resources/Items/Ammo1.tres b/Resources/Items/Ammo1.tres new file mode 100644 index 00000000..97a34e1d --- /dev/null +++ b/Resources/Items/Ammo1.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="LootItem" load_steps=3 format=3 uid="uid://ct1fa2huvy34n"] + +[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_31o2l"] +[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="1_fubhk"] + +[resource] +script = ExtResource("1_31o2l") +Item = 3 +Amount = 100 +Max = 800 +PickupIfMaxed = false +ConsumeOnUse = false +InventorySprite = ExtResource("1_fubhk") +WorldSprite = ExtResource("1_fubhk") diff --git a/Resources/Items/Ammo1.tscn b/Resources/Items/Ammo1.tscn new file mode 100644 index 00000000..401314f7 --- /dev/null +++ b/Resources/Items/Ammo1.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=4 format=3 uid="uid://j1pbuvw2kduo"] + +[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_v0ux4"] +[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_2eoli"] +[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="2_8g7mw"] + +[node name="Ammo1" instance=ExtResource("1_v0ux4")] +LootTable = [ExtResource("2_2eoli")] + +[node name="AnimatedSprite2D" parent="." index="1"] +sprite_frames = ExtResource("2_8g7mw") diff --git a/Resources/Items/Red_Keycard.tres b/Resources/Items/Red_Keycard.tres index 4c7b06cc..cc8a2170 100644 --- a/Resources/Items/Red_Keycard.tres +++ b/Resources/Items/Red_Keycard.tres @@ -1,5 +1,7 @@ -[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://dibquna7fww7t"] +[gd_resource type="Resource" script_class="LootItem" load_steps=4 format=3 uid="uid://dibquna7fww7t"] +[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="1_1j6xs"] +[ext_resource type="Texture2D" uid="uid://bao53hesxreoh" path="res://Resources/Sprites/Red_Keycard_Inventory_Texture.tres" id="1_glhfu"] [ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_istlt"] [resource] @@ -7,3 +9,7 @@ script = ExtResource("1_istlt") Item = 0 Amount = 1 Max = 1 +PickupIfMaxed = false +ConsumeOnUse = false +InventorySprite = ExtResource("1_glhfu") +WorldSprite = ExtResource("1_1j6xs") diff --git a/Resources/Sprites/Ammo_Inventory_Sprite.tres b/Resources/Sprites/Ammo_Inventory_Sprite.tres new file mode 100644 index 00000000..47d410b1 --- /dev/null +++ b/Resources/Sprites/Ammo_Inventory_Sprite.tres @@ -0,0 +1,18 @@ +[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://pmwatoyt2ase"] + +[ext_resource type="Texture2D" uid="uid://c5g0qg6u2gm6f" path="res://Sprites/Items/Ammo1.png" id="1_opgo2"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_0k673"] +atlas = ExtResource("1_opgo2") +region = Rect2(0, 0, 16, 16) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_0k673") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/Resources/Sprites/Red_Keycard_Inventory_Sprite.tres b/Resources/Sprites/Red_Keycard_Inventory_Sprite.tres new file mode 100644 index 00000000..b8df39d2 --- /dev/null +++ b/Resources/Sprites/Red_Keycard_Inventory_Sprite.tres @@ -0,0 +1,18 @@ +[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://bnvusxrrd2351"] + +[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="1_l8v2c"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_us62y"] +atlas = ExtResource("1_l8v2c") +region = Rect2(0, 0, 16, 16) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_us62y") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/Resources/Sprites/Red_Keycard_Inventory_Texture.tres b/Resources/Sprites/Red_Keycard_Inventory_Texture.tres new file mode 100644 index 00000000..952fa7d6 --- /dev/null +++ b/Resources/Sprites/Red_Keycard_Inventory_Texture.tres @@ -0,0 +1,7 @@ +[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bao53hesxreoh"] + +[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_eer7d"] + +[resource] +atlas = ExtResource("1_eer7d") +region = Rect2(0, 0, 16.0056, 16) diff --git a/Resources/Sprites/Red_Keycard_Overworld_Sprite.tres b/Resources/Sprites/Red_Keycard_Overworld_Sprite.tres new file mode 100644 index 00000000..e78c3fa9 --- /dev/null +++ b/Resources/Sprites/Red_Keycard_Overworld_Sprite.tres @@ -0,0 +1,25 @@ +[gd_resource type="SpriteFrames" load_steps=4 format=3 uid="uid://cikw4v6n0folb"] + +[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_shn5c"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_o0au0"] +atlas = ExtResource("1_shn5c") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fx6tu"] +atlas = ExtResource("1_shn5c") +region = Rect2(16, 0, 16, 16) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_o0au0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fx6tu") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/Scenes/HUD/HUD.tscn b/Scenes/HUD/HUD.tscn index e4bb5ff9..936e832b 100644 --- a/Scenes/HUD/HUD.tscn +++ b/Scenes/HUD/HUD.tscn @@ -26,21 +26,10 @@ animations = [{ "speed": 5.0 }] -[node name="HUD" type="CanvasLayer"] +[node name="HUD" type="CanvasLayer" node_paths=PackedStringArray("_healthLabel", "_itemsContainer")] script = ExtResource("1_m0hb0") - -[node name="HealthLabel" type="Label" parent="."] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_left = 1.0 -offset_top = -160.0 -offset_right = 306.0 -offset_bottom = -82.0 -grow_vertical = 0 -theme_override_fonts/font = ExtResource("2_0xmx2") -theme_override_font_sizes/font_size = 12 -text = "100/100" +_healthLabel = NodePath("VBoxContainer/HealthLabel") +_itemsContainer = NodePath("VBoxContainer/ItemsContainer") [node name="GameOver" type="Label" parent="."] visible = false @@ -69,3 +58,24 @@ position = Vector2(67, 47) sprite_frames = SubResource("SpriteFrames_78fwv") frame = 1 frame_progress = 0.8514 + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HealthLabel" type="Label" parent="VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_0xmx2") +theme_override_font_sizes/font_size = 12 +text = "100/100" + +[node name="ItemsContainer" type="VBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/ItemsContainer"] +layout_mode = 2 diff --git a/Scenes/Items/Ammo1.tscn b/Scenes/Items/Ammo1.tscn new file mode 100644 index 00000000..cc67d3f5 --- /dev/null +++ b/Scenes/Items/Ammo1.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=4 format=3 uid="uid://cmr6fclttrpkb"] + +[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_i3l7m"] +[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_j10i4"] +[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="3_6n103"] + +[node name="Ammo1" instance=ExtResource("1_i3l7m")] +LootTable = [ExtResource("2_j10i4")] + +[node name="AnimatedSprite2D" parent="." index="1"] +sprite_frames = ExtResource("3_6n103") diff --git a/Scenes/Items/Red_Keycard.tscn b/Scenes/Items/Red_Keycard.tscn index cde5c9a6..5281b84f 100644 --- a/Scenes/Items/Red_Keycard.tscn +++ b/Scenes/Items/Red_Keycard.tscn @@ -1,33 +1,11 @@ -[gd_scene load_steps=8 format=3 uid="uid://dxs3ks2ucaxl4"] +[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"] [ext_resource type="Script" path="res://Scripts/Interactables/ItemPickup.cs" id="1_cvvxn"] +[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="3_htu4x"] [ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="4_84krq"] -[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="4_k5oc1"] [sub_resource type="CircleShape2D" id="CircleShape2D_6vv2s"] -[sub_resource type="AtlasTexture" id="AtlasTexture_o0au0"] -atlas = ExtResource("4_k5oc1") -region = Rect2(0, 0, 16, 16) - -[sub_resource type="AtlasTexture" id="AtlasTexture_fx6tu"] -atlas = ExtResource("4_k5oc1") -region = Rect2(16, 0, 16, 16) - -[sub_resource type="SpriteFrames" id="SpriteFrames_vi6i0"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_o0au0") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_fx6tu") -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] - [node name="RedKeyCard" type="Area2D" groups=["Interactable"]] collision_layer = 4 collision_mask = 2 @@ -38,4 +16,4 @@ LootTable = [ExtResource("4_84krq")] shape = SubResource("CircleShape2D_6vv2s") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] -sprite_frames = SubResource("SpriteFrames_vi6i0") +sprite_frames = ExtResource("3_htu4x") diff --git a/Scripts/GameManager.cs b/Scripts/GameManager.cs index bb5fd5b6..55d35fd3 100644 --- a/Scripts/GameManager.cs +++ b/Scripts/GameManager.cs @@ -41,7 +41,10 @@ public partial class GameManager : Node2D _player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth); _player.InteractableAreaEntered += (interactable) => _hud.UpdateInteractable(interactable); - + + Inventory.ItemAdded += (item) => _hud.AddInventoryItem(item); + Inventory.ItemRemoved += (item) => _hud.RemoveInventoryItem(item); + //_player.Connect(nameof(_player.HealthChanged), _hud, nameof(_hud.UpdateHealth)); } diff --git a/Scripts/Hud.cs b/Scripts/Hud.cs index ffc66362..d7afaa0c 100644 --- a/Scripts/Hud.cs +++ b/Scripts/Hud.cs @@ -1,12 +1,13 @@ using Godot; using System; +using Cirno.Scripts.Resources; public partial class Hud : CanvasLayer { [Signal] public delegate void StartGameEventHandler(); - private Label _healthLabel; + //private Label _healthLabel; [Export] public PackedScene SelectorScene { get; set; } @@ -14,10 +15,13 @@ public partial class Hud : CanvasLayer [Export] private Node2D _selector; + [Export] private Label _healthLabel; + [Export] private Container _itemsContainer; + public override void _Ready() { // Assuming the HUD has a Label node named "HealthLabel" - _healthLabel = GetNode