Spawn items

This commit is contained in:
2024-08-28 21:48:05 -07:00
parent 699a333951
commit ea99e88535
25 changed files with 715 additions and 134 deletions

View File

@@ -23,6 +23,10 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
[Node] public Marker3D PlayerSpawn { get; set; } = default!;
[Node] public Node3D ItemSpawnPoints { get; set; } = default!;
[Node] public ItemDatabase ItemDatabase { get; set; } = default!;
public DungeonRoomLogic.IBinding DungeonRoomBinding { get; set; } = default!;
public void Setup()
@@ -30,6 +34,28 @@ public partial class DungeonRoom : Node3D, IDungeonRoom, IProvide<DungeonRoomLog
DungeonRoomLogic = new DungeonRoomLogic();
DungeonRoomLogic.Set(this as IDungeonRoom);
DungeonRoomLogic.Set(GameRepo);
PopulateRoom();
}
private void PopulateRoom()
{
var itemSpawnPoints = ItemSpawnPoints.GetChildren();
var rng = new RandomNumberGenerator();
rng.Randomize();
var numberOfItemsToSpawn = rng.RandiRange(0, itemSpawnPoints.Count);
itemSpawnPoints.Shuffle();
foreach (Marker3D spawnPoint in itemSpawnPoints)
{
if (numberOfItemsToSpawn <= 0)
break;
numberOfItemsToSpawn--;
var item = ItemDatabase.ItemScene[rng.RandWeighted(ItemDatabase.DropRate)];
var instantiatedItem = item.Instantiate<Weapon>();
instantiatedItem.Position = spawnPoint.Position;
AddChild(instantiatedItem);
GD.Print(instantiatedItem.InventoryInfo.Name);
}
}
public void OnResolved()