Box item implementation

This commit is contained in:
2026-02-04 01:49:17 -08:00
parent affa5e1f79
commit 52dc8fb9e4
24 changed files with 464 additions and 203 deletions

View File

@@ -18,12 +18,31 @@ public class ItemDatabase
public T PickItem<T>(T itemToExclude = null)
where T : InventoryItem
{
var itemsToSelectFrom = Items;
return PickItemInternal(itemsToSelectFrom, itemToExclude);
}
public T PickRareItem<T>(T itemToExclude = null)
where T : InventoryItem
{
var getRareItems = Items.Where(x => x.SpawnRate < 0.1f);
return PickItemInternal(getRareItems, itemToExclude);
}
public T PickBasicItem<T>(T itemToExclude = null)
where T : InventoryItem
{
var getBasicItems = Items.Where(x => x.SpawnRate > 0.5f);
return PickItemInternal(getBasicItems, itemToExclude);
}
private T PickItemInternal<T>(IEnumerable<InventoryItem> itemsToSelectFrom, T itemToExclude = null)
where T : InventoryItem
{
var rng = new RandomNumberGenerator();
rng.Randomize();
var itemsToSelectFrom = Items;
if (itemToExclude is not null)
itemsToSelectFrom = [.. itemsToSelectFrom.OfType<T>().Where(x => x.ItemName != itemToExclude.ItemName)];