25 lines
807 B
C#
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);
|
|
}
|
|
} |