using System;
using System.Collections.Generic;
namespace Continentis.MainGame
{
///
/// 标记一个类为属性常量集合容器。
/// Mod 制作者可以在自己的 Mod 常量类打上这个标签,
/// 这样编辑器工具就能自动收集它们并放入下拉菜单中。
///
[AttributeUsage(AttributeTargets.Class)]
public class GameAttributeCollectionAttribute : Attribute
{
}
///
/// 游戏通用属性名称常量。
/// 请始终使用此类中的常量而非裸字符串访问属性,以避免 typo 错误。
///
[GameAttributeCollection]
public static class GameAttributes
{
// ── 生命值 ──────────────────────────────────
public const string Health = "Health";
public const string MaximumHealth = "MaximumHealth";
// ── 资源 ────────────────────────────────────
public const string Stamina = "Stamina";
public const string MaximumStamina = "MaximumStamina";
public const string StaminaRecoverPerAction = "StaminaRecoverPerAction";
public const string Mana = "Mana";
public const string MaximumMana = "MaximumMana";
public const string ManaRecoverPerAction = "ManaRecoverPerAction";
// ── 防御 ────────────────────────────────────
public const string Block = "Block";
public const string Shield = "Shield";
public const string Dodge = "Dodge";
public const string BlockGainOffset = "BlockGainOffset";
public const string BlockGainMultiplier = "BlockGainMultiplier";
public const string DodgeGainOffset = "DodgeGainOffset";
public const string DodgeGainMultiplier = "DodgeGainMultiplier";
public const string ShieldGainOffset = "ShieldGainOffset";
public const string ShieldGainMultiplier = "ShieldGainMultiplier";
public const string KeepBlockOnActionStart = "KeepBlockOnActionStart";
public const string KeepDodgeOnActionStart = "KeepDodgeOnActionStart";
// ── 速度与行动 ──────────────────────────────
public const string Speed = "Speed";
public const string DrawCardAmountPerAction = "DrawCardAmountPerAction";
public const string DeckCapacity = "DeckCapacity";
// ── 伤害调整(通用)──────────────────────────
public const string PhysicsDamageDealtOffset = "PhysicsDamageDealtOffset";
public const string MagicDamageDealtOffset = "MagicDamageDealtOffset";
public const string FinalDamageDealtMultiplier = "FinalDamageDealtMultiplier";
public const string FinalDamageGainMultiplier = "FinalDamageGainMultiplier";
public const string MagicDamageDealtMultiplier = "MagicDamageDealtMultiplier";
public const string MagicDamageGainMultiplier = "MagicDamageGainMultiplier";
// ── 核心属性(角色创建时)──────────────────────
public const string Strength = "Strength";
public const string Agility = "Agility";
public const string Intelligence = "Intelligence";
public const string Physique = "Physique";
public const string Perception = "Perception";
public const string Charisma = "Charisma";
public const string Level = "Level";
// ── 感知与闪避检测 ──────────────────────────
public const string Awareness = "Awareness";
public const string DodgeCheckStartDamageMultiplier = "DodgeCheckStartDamageMultiplier";
#if UNITY_EDITOR
///
/// 提供给 Odin Inspector [ValueDropdown] 使用的方法。
/// 从所有 Mod 的 EditorBaseCollection 资产中聚合角色属性(Core + General),
/// 覆盖旧的反射扫描方式,天然支持多 Mod 叠加,无需关心程序集加载顺序。
///
public static IEnumerable> GetAllAvailableAttributes()
{
return Continentis.MainGame.Base.EditorBaseCollection.GetCharacterAttributesDropdown(null);
}
#endif
}
}