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

@@ -3,6 +3,7 @@ using Chickensoft.GodotNodeInterfaces;
using Chickensoft.Introspection;
using GameJamDungeon;
using Godot;
using System.Linq;
public interface IDungeonRoom : INode3D
{
@@ -38,6 +39,7 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
DungeonRoomLogic = new DungeonRoomLogic();
DungeonRoomLogic.Set(this as IDungeonRoom);
DungeonRoomLogic.Set(GameRepo);
ItemDatabase.SpawnItems();
SpawnItems();
SpawnEnemies();
}
@@ -55,11 +57,13 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
break;
numberOfItemsToSpawn--;
var item = ItemDatabase.ItemScene[rng.RandWeighted(ItemDatabase.DropRate)];
var instantiatedItem = item.Instantiate<InventoryItem>();
instantiatedItem.Position = spawnPoint.Position;
AddChild(instantiatedItem);
GD.Print(instantiatedItem.Info.Name);
var weights = ItemDatabase.Database.Select(x => x.SpawnRate).ToArray();
var database = ItemDatabase.Database.Select(x => x.Item).ToArray();
var selectedItem = database[rng.RandWeighted(weights)];
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as InventoryItem;
duplicated.Position = spawnPoint.Position;
AddChild(duplicated);
GD.Print(duplicated.Info.Name);
}
}