using System; using Cielonos.MainGame.Buffs.Character; using Cielonos.MainGame.Characters; using Sirenix.OdinInspector; using SLSUtilities.FunctionalAnimation; using UnityEngine; namespace Cielonos.MainGame.Base.FunctionalAnimation.Payloads { /// /// FuncAnim Payload:在动画事件触发时,为当前的动画执行者施加指定的 CharacterBuff。 /// 完全兼容 ICharacterBuffFactory 的 Odin 多态编辑架构。 /// [Serializable] [EventColor(0.2f, 0.9f, 0.4f)] public class ApplyBuff : FuncAnimPayloadBase { public override string NameForInspector => "Apply Buff"; [Tooltip("选择要施加的 Buff 类型并配置其参数。")] [SerializeReference] public ICharacterBuffFactory buffFactory; public override void Invoke() { if (buffFactory == null) { Debug.LogWarning("[ApplyBuffPayload] 未配置 Buff 工厂,无法施加 Buff。"); return; } if (Executor is CharacterBase characterBase) { // 创建并施加 Buff (发起者和承受者都是自身) buffFactory.Create().Apply(characterBase, characterBase); } else { Debug.LogWarning("[ApplyBuffPayload] 动画执行者不是 CharacterBase,无法施加 CharacterBuff。"); } } } }