Spawn items
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user