Item spawning

This commit is contained in:
2024-09-08 14:19:30 -07:00
parent 29a6d1072c
commit a47d1306b9
417 changed files with 17412 additions and 1019 deletions

View File

@@ -1,12 +1,52 @@
using Godot;
using Godot.Collections;
using System.Collections.Generic;
namespace GameJamDungeon
{
public partial class ItemDatabase : Node
{
[Export]
public PackedScene[] ItemScene;
public PackedScene WeaponScene { get; set; }
[Export]
public float[] DropRate;
public PackedScene ArmorScene { get; set; }
[Export]
public PackedScene AccessoryScene { get; set; }
public List<(IInventoryItem Item, float SpawnRate)> Database { get; private set; }
public void SpawnItems()
{
Database = new List<(IInventoryItem, float SpawnRates)>();
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/");
foreach (var armor in armorResources)
{
var armorInfo = GD.Load<ArmorInfo>($"res://src/items/armor/resources/{armor}");
var armorScene = ArmorScene.Instantiate<Armor>();
armorScene.ArmorInfo = armorInfo;
Database.Add(new(armorScene, 0.75f));
}
foreach (var weapon in weaponResources)
{
var weaponInfo = GD.Load<WeaponInfo>($"res://src/items/weapons/resources/{weapon}");
var weaponScene = WeaponScene.Instantiate<Weapon>();
weaponScene.WeaponInfo = weaponInfo;
Database.Add(new(weaponScene, 0.75f));
}
foreach (var accessory in accessoryResources)
{
var accessoryInfo = GD.Load<AccessoryInfo>($"res://src/items/accessory/resources/{accessory}");
var accessoryScene = AccessoryScene.Instantiate<Accessory>();
accessoryScene.AccessoryInfo = accessoryInfo;
Database.Add(new(accessoryScene, 0.75f));
}
}
}
}