Files
Cielonos/Assets/Scripts/MainGame/Characters/Automata/AI/Actions/ResetCooldownTimer.cs
SoulliesOfficial f26f9fd374 爆更
2026-03-20 12:07:44 -04:00

50 lines
1.6 KiB
C#

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<TimerPair> 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<string> name;
public SharedVariable<float> duration;
public bool isPermanent;
}
}
}