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

@@ -69,7 +69,6 @@ public partial class Game : Node3D, IGame
public QuestData QuestData { get; private set; }
private EffectService _effectService;
private ItemReroller _itemReroller;
private IInstantiator _instantiator;
private IPlayer _player;
@@ -88,7 +87,6 @@ public partial class Game : Node3D, IGame
QuestData = new QuestData();
RescuedItems = new RescuedItemDatabase();
ItemDatabase = ItemDatabase.Instance;
_itemReroller = new ItemReroller(ItemDatabase);
GameChunk = new SaveChunk<GameData>(
(chunk) =>
@@ -212,10 +210,13 @@ public partial class Game : Node3D, IGame
public async Task UseItem(InventoryItem item)
{
if (item.ItemTag == ItemTag.MysteryItem)
item = _itemReroller.RerollItem(item, _player.Inventory);
_effectService.RerollItem(item);
switch (item)
{
case BoxItem boxItem:
EnactBoxItemEffects(boxItem);
break;
case ConsumableItem consumableItem:
EnactConsumableItemEffects(consumableItem);
break;
@@ -428,6 +429,16 @@ public partial class Game : Node3D, IGame
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
private void EnactBoxItemEffects(BoxItem boxItem)
{
switch (boxItem.ItemTag)
{
case ItemTag.DamagesPlayer:
_effectService.DamagesPlayer(boxItem.Stats.DamageToPlayer);
break;
}
}
private void EnactConsumableItemEffects(ConsumableItem consumableItem)
{
if (_player.HealthComponent.AtFullHealth && consumableItem.RaiseHPAmount > 0)
@@ -519,7 +530,7 @@ public partial class Game : Node3D, IGame
_effectService.ChangeAffinity(throwableItem);
break;
case ThrowableItemTag.WarpToExitIfFound:
_effectService.WarpToExit(_player);
_effectService.WarpToExit();
GameRepo.CloseInventory();
break;
}