using System;
using UnityEngine;
using BaseGames.Player.States;
namespace BaseGames.Equipment
{
///
/// 工具使用效果接口(架构 09_ProgressionModule §7)。
///
public interface IToolEffect
{
void Use(PlayerController player);
}
///
/// 带冷却时间的工具接口(可选实现)。
///
public interface IToolCooldown
{
float CooldownDuration { get; }
}
///
/// 典型实现:治疗药水效果。
///
[Serializable]
public class HealToolEffect : IToolEffect
{
public int HealAmount = 4;
public void Use(PlayerController player) => player.Stats.HealHP(HealAmount);
}
///
/// 主动工具数据 SO(架构 09_ProgressionModule §7)。
/// 资产路径: Assets/ScriptableObjects/Equipment/Tools/Tool_{Name}.asset
///
[CreateAssetMenu(menuName = "Equipment/Tool")]
public class ToolSO : ScriptableObject
{
public string toolId;
public string displayNameKey;
public Sprite icon;
[Tooltip("-1 = 无限使用次数")]
public int maxUses = 1;
[SerializeReference]
public IToolEffect effect; // 工具使用效果(多态)
}
}