using Godot; using System.Collections.Generic; namespace GameJamDungeon; public partial class ItemDatabase : Node { [Export] public PackedScene WeaponScene { get; set; } [Export] public PackedScene ArmorScene { get; set; } [Export] public PackedScene AccessoryScene { get; set; } [Export] public PackedScene ThrowableItemScene { get; set; } [Export] public PackedScene ConsumableItemScene { get; set; } public IInventoryItem[] Initialize() { var database = new List(); var armorResources = DirAccess.GetFilesAt("res://src/items/armor/resources/"); var weaponResources = DirAccess.GetFilesAt("res://src/items/weapons/resources/"); var accessoryResources = DirAccess.GetFilesAt("res://src/items/accessory/resources/"); var throwableResources = DirAccess.GetFilesAt("res://src/items/throwable/resources/"); var consumableResources = DirAccess.GetFilesAt("res://src/items/consumable/resources/"); foreach (var armor in armorResources) { var armorInfo = GD.Load($"res://src/items/armor/resources/{armor}"); var armorScene = ArmorScene.Instantiate(); armorScene.SetItemStats(armorInfo); database.Add(armorScene); } foreach (var weapon in weaponResources) { var weaponInfo = GD.Load($"res://src/items/weapons/resources/{weapon}"); var weaponScene = WeaponScene.Instantiate(); weaponScene.SetItemStats(weaponInfo); database.Add(weaponScene); } foreach (var accessory in accessoryResources) { var accessoryInfo = GD.Load($"res://src/items/accessory/resources/{accessory}"); var accessoryScene = AccessoryScene.Instantiate(); accessoryScene.SetItemStats(accessoryInfo); database.Add(accessoryScene); } foreach (var throwable in throwableResources) { var throwableItemInfo = GD.Load($"res://src/items/throwable/resources/{throwable}"); var throwableItemScene = ThrowableItemScene.Instantiate(); throwableItemScene.SetItemStats(throwableItemInfo); database.Add(throwableItemScene); } foreach (var consumable in consumableResources) { var consumableItemInfo = GD.Load($"res://src/items/consumable/resources/{consumable}"); var consumableItemScene = ConsumableItemScene.Instantiate(); consumableItemScene.SetItemStats(consumableItemInfo); database.Add(consumableItemScene); } return database.ToArray(); } }