using Godot; using TheLegendOfGustav.Entities.Actions; using TheLegendOfGustav.Entities.Actors; using TheLegendOfGustav.Map; namespace TheLegendOfGustav.Entities.Items; /// /// Classe para itens consumíveis. /// Itens consumíveis são itens de uso limitado. /// public abstract partial class ConsumableItem(Vector2I initialPosition, MapData map, ConsumableItemDefinition definition) : Entity(initialPosition, map, definition) { /// /// Gera uma ação onde o ator consome o item. /// /// /// public Action GetAction(Player consumer) { return new ItemAction(consumer, this); } /// /// Ativa a função deste item. /// Este método é chamado pela ação gerada por ele mesmo. /// Este método permite definir condições para a sua ativação. /// /// Ação gerada pelo item. /// Se a ação foi realizada ou não. public abstract bool Activate(ItemAction action); public void ConsumedBy(Player consumer) { Inventory inventory = consumer.Inventory; inventory.RemoveItem(this); QueueFree(); } }