Files
brick-framework/GameCore/Combat/Effects/ConsumeAmmoCost.cs

25 lines
807 B
C#

using GameCore.Combat.Interfaces;
using GameCore.Events;
using GameCore.Inventory;
namespace GameCore.Combat.Effects;
public class ConsumeAmmoCost(string ammoId, int amount) : ICostEffect
{
public void Execute(EffectContext context)
{
var inventory = context.World.GetComponent<InventoryComponent>(context.Owner);
if (inventory == null) return;
inventory.RemoveItem(ammoId, amount);
var newQuantity = inventory.GetItemCount(ammoId);
context.World.PublishEvent(new InventoryItemChangedEvent(context.Owner, ammoId, newQuantity));
}
public bool CanAfford(EffectContext context)
{
var inventory = context.World.GetComponent<InventoryComponent>(context.Owner);
return inventory != null && inventory.HasItem(ammoId, amount);
}
}