Mystery item implementation

This commit is contained in:
2025-03-26 23:13:01 -07:00
parent 114ff35630
commit 9d3621dd2c
58 changed files with 860 additions and 309 deletions

View File

@@ -2,6 +2,7 @@
using Chickensoft.Introspection;
using Godot;
using System.Linq;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
@@ -48,17 +49,16 @@ public partial class MonsterRoom : DungeonRoom
rng.Randomize();
var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count);
itemSpawnPoints.Shuffle();
var database = ItemDatabase.Initialize();
var database = new ItemDatabase();
foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
{
if (numberOfItemsToSpawn <= 0)
break;
numberOfItemsToSpawn--;
var weights = database.Select(x => x.SpawnRate).ToArray();
var selectedItem = database[rng.RandWeighted(weights)];
var selectedItem = database.PickItem<InventoryItem>();
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
duplicated.Position = new Vector3(spawnPoint.Position.X, -1.5f, spawnPoint.Position.Z);
duplicated.Position = new Vector3(spawnPoint.Position.X, -0.5f, spawnPoint.Position.Z);
AddChild(duplicated);
}
}