using UnityEngine;
namespace BaseGames.Player
{
///
/// 形态切换配置 ScriptableObject。
/// 单一资产,forms[0..2] = Sky / Earth / Death(架构 05 §18)。
/// ⚠️ 只有 1 个 FormConfigSO 资产;FormSO × 3 存于 forms[] 数组中,不分开建立。
///
[CreateAssetMenu(menuName = "BaseGames/Player/FormConfig")]
public class FormConfigSO : ScriptableObject
{
[Header("形态列表 (forms[0]=Sky, forms[1]=Earth, forms[2]=Death)")]
public FormSO[] forms;
[Header("切换冷却")]
[Tooltip("形态切换冷却时长(秒)。CD 内重复按键不生效。推荐 0.5。")]
[Min(0f)]
public float SwitchCooldown = 0.5f;
/// 按形态类型查找对应 FormSO;找不到返回 null。
public FormSO GetFormByType(FormType type)
{
if (forms == null) return null;
foreach (var f in forms)
if (f != null && f.formType == type) return f;
return null;
}
/// 返回指定 FormSO 在 forms 数组中的索引;找不到返回 -1。
public int GetFormIndex(FormSO form)
{
if (forms == null || form == null) return -1;
for (int i = 0; i < forms.Length; i++)
if (forms[i] == form) return i;
return -1;
}
}
}