Item spawning
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user