Rework game over logic and game initialization
This commit is contained in:
36
Zennysoft.Game.Ma/src/items/ItemReroller.cs
Normal file
36
Zennysoft.Game.Ma/src/items/ItemReroller.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
public class ItemReroller
|
||||
{
|
||||
private readonly ItemDatabase _database;
|
||||
|
||||
public ItemReroller(ItemDatabase database)
|
||||
{
|
||||
_database = database;
|
||||
}
|
||||
|
||||
public T RerollItem<T>(T itemToReroll, IInventory inventory, bool insertIntoInventory = true)
|
||||
where T : InventoryItem
|
||||
{
|
||||
var currentIndex = inventory.Items.IndexOf(itemToReroll);
|
||||
|
||||
if (insertIntoInventory)
|
||||
inventory.Remove(itemToReroll);
|
||||
|
||||
var rolledItem = RerollItemInternal((dynamic)itemToReroll);
|
||||
|
||||
if (insertIntoInventory)
|
||||
inventory.TryInsert(rolledItem, currentIndex);
|
||||
|
||||
return rolledItem;
|
||||
}
|
||||
|
||||
private Weapon RerollItemInternal(Weapon itemToReroll) => _database.PickItem(itemToReroll);
|
||||
private Armor RerollItemInternal(Armor itemToReroll) => _database.PickItem(itemToReroll);
|
||||
private Accessory RerollItemInternal(Accessory itemToReroll) => _database.PickItem(itemToReroll);
|
||||
private ConsumableItem RerollItemInternal(ConsumableItem itemToReroll) => _database.PickItem(itemToReroll);
|
||||
private ThrowableItem RerollItemInternal(ThrowableItem itemToReroll) => _database.PickItem(itemToReroll);
|
||||
private EffectItem RerollItemInternal(EffectItem itemToReroll) => _database.PickItem(itemToReroll);
|
||||
}
|
||||
Reference in New Issue
Block a user