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);
}
}
}