Inventory Menu

This commit is contained in:
Marco 2025-02-25 18:11:57 +01:00
commit 0c0174e0ab
14 changed files with 126 additions and 3 deletions

View file

@ -10,6 +10,7 @@ atlas = ExtResource("1_bpftr")
[resource]
script = ExtResource("1_31o2l")
ItemName = "Ammo 1"
ItemDescription = "Ammunition"
ItemKey = "Ammo1"
Item = 3
Amount = 25
@ -17,5 +18,6 @@ Max = 400
PickupIfMaxed = false
ConsumeOnUse = true
UiType = 2
Selectable = false
InventorySprite = SubResource("AtlasTexture_3y0hf")
HudItemScene = ExtResource("1_qkp4b")

View file

@ -10,6 +10,7 @@ region = Rect2(0, 0, 16, 16)
[resource]
script = ExtResource("1_k8cnp")
ItemName = "Blue Keycard"
ItemDescription = "Keycard that opens blue coded readers"
ItemKey = "KeycardBlue"
Item = 1
Amount = 1
@ -17,4 +18,5 @@ Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
UiType = 1
Selectable = false
InventorySprite = SubResource("AtlasTexture_ebbst")

View file

@ -8,6 +8,7 @@
[resource]
script = ExtResource("3_i0e51")
ItemName = "Cheat Gun"
ItemDescription = "Cheat gun that deals massive damage"
ItemKey = "CheatGun"
Item = 9
WeaponData = ExtResource("2_0na1t")
@ -16,5 +17,6 @@ Max = 1
PickupIfMaxed = true
ConsumeOnUse = false
UiType = 1
Selectable = true
InventorySprite = ExtResource("2_5g5j1")
HudItemScene = ExtResource("1_i6xgq")

View file

@ -10,6 +10,7 @@ region = Rect2(0, 0, 16, 16)
[resource]
script = ExtResource("1_t0s5w")
ItemName = "Green Keycard"
ItemDescription = "Keycard that opens green coded readers"
ItemKey = "KeycardGreen"
Item = 2
Amount = 1
@ -17,4 +18,5 @@ Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
UiType = 1
Selectable = false
InventorySprite = SubResource("AtlasTexture_iasoh")

View file

@ -8,6 +8,7 @@
[resource]
script = ExtResource("3_cjfxs")
ItemName = "Ice Shotgun"
ItemDescription = "A shotgun transformed by Cirno's magic, requires ammunition to shoot"
ItemKey = "IceShotgun"
Item = 9
WeaponData = ExtResource("2_3le6e")
@ -16,5 +17,6 @@ Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
UiType = 1
Selectable = true
InventorySprite = ExtResource("2_4ibag")
HudItemScene = ExtResource("1_13ven")

View file

@ -8,6 +8,7 @@
[resource]
script = ExtResource("2_hy2hk")
ItemName = "Icicle Gun"
ItemDescription = "Cirno's basic gun, never runs out of ammo"
ItemKey = "IcicleGun"
Item = 9
WeaponData = ExtResource("1_itajb")
@ -16,5 +17,6 @@ Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
UiType = 1
Selectable = true
InventorySprite = ExtResource("2_eaoas")
HudItemScene = ExtResource("1_lfbsh")

View file

@ -5,7 +5,8 @@
[resource]
script = ExtResource("1_vw5ht")
ItemName = "Power Pickup"
ItemName = "Power"
ItemDescription = "Restores Health when used"
ItemKey = "PowerPickup"
Item = 4
Amount = 1
@ -13,4 +14,5 @@ Max = 10
PickupIfMaxed = false
ConsumeOnUse = true
UiType = 2
Selectable = true
InventorySprite = ExtResource("1_cang8")

View file

@ -8,6 +8,7 @@
[resource]
script = ExtResource("1_istlt")
ItemName = "Red Keycard"
ItemDescription = "Keycard that opens red coded readers"
ItemKey = "KeycardRed"
Item = 0
Amount = 1
@ -15,6 +16,7 @@ Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
UiType = 1
Selectable = false
InventorySprite = ExtResource("1_glhfu")
WorldSprite = ExtResource("1_1j6xs")
HudItemScene = ExtResource("1_30txj")

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://dkwi1hu1bixoe"]
[gd_scene load_steps=20 format=3 uid="uid://dkwi1hu1bixoe"]
[ext_resource type="Script" uid="uid://baf6pxbvhqmjk" path="res://Scripts/Hud.cs" id="1_m0hb0"]
[ext_resource type="FontFile" uid="uid://ccm3u37q1hvux" path="res://fonts/Xolonium-Regular.ttf" id="2_0xmx2"]
@ -8,6 +8,8 @@
[ext_resource type="PackedScene" uid="uid://bemu3l6b1e84y" path="res://Scenes/HUD/debug_menu.tscn" id="4_gd1k6"]
[ext_resource type="PackedScene" uid="uid://bwlstkdibs7oc" path="res://Scenes/HUD/BossHud.tscn" id="5_vmict"]
[ext_resource type="FontFile" uid="uid://coek1e2q257pq" path="res://fonts/at01.ttf" id="6_sk1eq"]
[ext_resource type="Theme" uid="uid://dnsadvmunm76k" path="res://Resources/Styles/MainMenuButtons.tres" id="9_sx5r0"]
[ext_resource type="Script" uid="uid://bobo5f4ud60qw" path="res://Scripts/UI/ItemsMenu.cs" id="10_oflr6"]
[sub_resource type="LabelSettings" id="LabelSettings_a7f6n"]
font = ExtResource("2_0xmx2")
@ -180,3 +182,25 @@ offset_left = 106.0
offset_top = 26.0
offset_right = 226.0
offset_bottom = 144.0
[node name="Control" type="Control" parent="."]
layout_mode = 3
anchors_preset = 0
offset_left = 68.0
offset_top = 16.0
offset_right = 291.0
offset_bottom = 146.0
metadata/_edit_group_ = true
[node name="ItemList" type="ItemList" parent="Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("9_sx5r0")
allow_search = false
max_columns = 3
same_column_width = true
script = ExtResource("10_oflr6")

View file

@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://4ejuqujufso5"]
[node name="InventorySelector" type="CanvasLayer"]

View file

@ -6,6 +6,7 @@ namespace Cirno.Scripts.Resources;
public partial class LootItem : Resource
{
[Export] public string ItemName { get; set; }
[Export] public string ItemDescription { get; set; }
[Export] public string ItemKey { get; set; }
[Export] public ItemTypes Item;
[Export] public WeaponResource WeaponData { get; set; }
@ -14,7 +15,7 @@ public partial class LootItem : Resource
[Export] public bool PickupIfMaxed;
[Export] public bool ConsumeOnUse;
[Export] public UiItemType UiType;
[Export] public bool Selectable;
[Export] public Texture2D InventorySprite;
[Export] public SpriteFrames WorldSprite;
[Export] public PackedScene HudItemScene;

72
Scripts/UI/ItemsMenu.cs Normal file
View file

@ -0,0 +1,72 @@
using Godot;
using System;
using Cirno.Scripts;
using Godot.Collections;
public partial class ItemsMenu : ItemList
{
private InventoryManager _inventoryManager;
private Dictionary<long, string> _itemsDic = new();
public override void _Ready()
{
CallDeferred(MethodName.DeferredInitialize);
this.Hide();
}
public override void _Process(double delta)
{
if (Input.IsActionJustPressed("inventory"))
{
if (!Visible)
{
ShowInventory();
}
else
{
HideInventory();
}
}
}
private void DeferredInitialize()
{
_inventoryManager = GameManager.Instance.GetInventoryManager();
ItemSelected += OnItemSelected;
Clear();
ItemActivated += OnItemSelected;
}
private void OnItemSelected(long index)
{
var item = _itemsDic[index];
GD.Print("Item: " + item);
HideInventory();
}
public void HideInventory()
{
this.Hide();
Clear();
_itemsDic.Clear();
}
public void ShowInventory()
{
this.Show();
foreach (var itm in _inventoryManager.Items)
{
var item = itm.Value;
var index = this.AddItem($"{item.Item.ItemName} x{item.Count}", item.Item.InventorySprite,
item.Item.Selectable);
this.SetItemTooltip(index, item.Item.ItemDescription);
_itemsDic.Add(index, item.Item.ItemKey);
}
}
}

View file

@ -0,0 +1 @@
uid://bobo5f4ud60qw

View file

@ -248,6 +248,12 @@ debug_camera_2={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194337,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
inventory={
"deadzone": 0.2,
"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
]
}
[layer_names]