Move inventory screen to UI folder

This commit is contained in:
2025-06-28 14:23:52 -07:00
parent cf03c75ada
commit bdc3bdf61d
19 changed files with 16 additions and 14 deletions

View File

@@ -0,0 +1,97 @@
using Chickensoft.AutoInject;
using Chickensoft.GodotNodeInterfaces;
using Chickensoft.Introspection;
using Godot;
using Zennysoft.Game.Abstractions;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
public interface IItemSlot : IHBoxContainer
{
public InventoryItem Item { get; set; }
public void SetItemStyle();
public void SetSelectedItemStyle();
public void SetEquippedItemStyle();
public void SetEquippedSelectedItemStyle();
}
[Meta(typeof(IAutoNode))]
public partial class ItemSlot : HBoxContainer, IItemSlot
{
public override void _Notification(int what) => this.Notify(what);
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
//[Node] public Label EquipBonus { get; set; } = default!;
[Node] public TextureRect ItemTexture { get; set; } = default!;
[Node] public Label ItemName { get; set; } = default!;
[Node] public Label ItemCount { get; set; } = default!;
private static LabelSettings ItemFont => GD.Load<LabelSettings>("res://src/ui/label_settings/MainTextRegular.tres");
private static LabelSettings SelectedItemFont => GD.Load<LabelSettings>("res://src/ui/label_settings/MainTextFontItalicized.tres");
private static LabelSettings EquippedItemFont => GD.Load<LabelSettings>("res://src/ui/label_settings/MainTextFontEquipped.tres");
private static LabelSettings SelectedEquippedItemFont => GD.Load<LabelSettings>("res://src/ui/label_settings/MainTextFontSelectedEquipped.tres");
public void OnReady()
{
ItemName.Text = Item.ItemName;
ItemTexture.Texture = Item.GetTexture();
Player.EquippedWeapon.Sync += EquipableItem_Sync;
Player.EquippedArmor.Sync += EquipableItem_Sync;
Player.EquippedAccessory.Sync += EquipableItem_Sync;
if (Item is IStackable stackableItem)
{
ItemCount.Text = $"{stackableItem.Count:D2}";
ItemCount.Visible = true;
}
}
private void EquipableItem_Sync(EquipableItem obj)
{
if (Item is EquipableItem equipableItem && equipableItem == obj)
{
SetEquippedSelectedItemStyle();
}
if (Item is EquipableItem unequippedItem && unequippedItem != obj)
{
SetItemStyle();
}
}
public void SetItemStyle()
{
ItemName.LabelSettings = ItemFont;
}
public void SetSelectedItemStyle()
{
if (Item is EquipableItem equipableItem && equipableItem.IsEquipped)
{
ItemName.LabelSettings = SelectedEquippedItemFont;
}
else
{
ItemName.LabelSettings = SelectedItemFont;
}
}
public void SetEquippedItemStyle()
{
ItemName.LabelSettings = EquippedItemFont;
}
public void SetEquippedSelectedItemStyle()
{
ItemName.LabelSettings = SelectedEquippedItemFont;
}
public InventoryItem Item { get; set; } = default!;
}