76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
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<IInventoryItem>();
|
|
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<ArmorStats>($"res://src/items/armor/resources/{armor}");
|
|
var armorScene = ArmorScene.Instantiate<Armor>();
|
|
armorScene.ArmorStats = armorInfo;
|
|
database.Add(armorScene);
|
|
}
|
|
|
|
foreach (var weapon in weaponResources)
|
|
{
|
|
var weaponInfo = GD.Load<WeaponStats>($"res://src/items/weapons/resources/{weapon}");
|
|
var weaponScene = WeaponScene.Instantiate<Weapon>();
|
|
weaponScene.WeaponStats = weaponInfo;
|
|
database.Add(weaponScene);
|
|
}
|
|
|
|
foreach (var accessory in accessoryResources)
|
|
{
|
|
var accessoryInfo = GD.Load<AccessoryStats>($"res://src/items/accessory/resources/{accessory}");
|
|
var accessoryScene = AccessoryScene.Instantiate<Accessory>();
|
|
accessoryScene.AccessoryStats = accessoryInfo;
|
|
database.Add(accessoryScene);
|
|
}
|
|
|
|
foreach (var throwable in throwableResources)
|
|
{
|
|
var throwableItemInfo = GD.Load<ThrowableItemStats>($"res://src/items/throwable/resources/{throwable}");
|
|
var throwableItemScene = ThrowableItemScene.Instantiate<ThrowableItem>();
|
|
throwableItemScene.ThrowableItemInfo = throwableItemInfo;
|
|
database.Add(throwableItemScene);
|
|
}
|
|
|
|
foreach (var consumable in consumableResources)
|
|
{
|
|
var consumableItemInfo = GD.Load<ConsumableItemStats>($"res://src/items/consumable/resources/{consumable}");
|
|
var consumableItemScene = ConsumableItemScene.Instantiate<ConsumableItem>();
|
|
consumableItemScene.ConsumableItemInfo = consumableItemInfo;
|
|
database.Add(consumableItemScene);
|
|
}
|
|
|
|
return database.ToArray();
|
|
}
|
|
}
|
|
}
|