using System; using BriarQueen.Framework.Coordinators.Events; using BriarQueen.Framework.Managers.Player; using BriarQueen.Framework.Managers.Player.Data; using Cysharp.Threading.Tasks; namespace BriarQueen.Framework.Managers.Interaction.Data { /// /// Inventory-safe per-item logic. Serialized INSIDE ItemDataSo via SerializeReference. /// No scene objects required. /// [Serializable] public abstract class BaseInteraction { /// /// Called when player uses 'self' on 'other' from the inventory UI. /// Return true if the interaction was handled (success OR "can't" message shown). /// Return false if this interaction doesn't apply, so caller may try other routes/fallback. /// public abstract UniTask TryUseWith( ItemDataSo self, ItemDataSo other, PlayerManager playerManager, EventCoordinator eventCoordinator); } /// /// Default "does nothing" interaction. /// [Serializable] public sealed class NoOpItemInteraction : BaseInteraction { public override UniTask TryUseWith( ItemDataSo self, ItemDataSo other, PlayerManager playerManager, EventCoordinator eventCoordinator) { return UniTask.FromResult(false); } } }