50 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
} |