using System.Collections.Generic; using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.GraphDesigner.Runtime; using Opsive.GraphDesigner.Runtime.Variables; using Opsive.Shared.Utility; using UnityEngine; namespace Cielonos.MainGame.Characters.AI { [Description("重置一个计时器。")] [NodeIcon("Assets/Sprites/Icon/Aim01.png")] [Category("Cielonos")] public class ResetCooldownTimer : AutomataActionBase { [Tooltip("指定要重置的计时器和持续时间(如果不指定持续时间则使用计时器默认值)。")] public List timerPairs; public override TaskStatus OnUpdate() { foreach (TimerPair pair in timerPairs) { if (self.selfTimeSm.coolDownTimers.TryGetValue(pair.name.Value, out var timer)) { if (pair.isPermanent) { timer.originalDuration = pair.duration.Value; timer.Reset(); } else { timer.Reset(pair.duration.Value); } } else { Debug.LogWarning($"计时器 '{pair.name.Value}' 不存在,无法重置。"); } } return TaskStatus.Success; } public struct TimerPair { public SharedVariable name; public SharedVariable duration; public bool isPermanent; } } }