42 lines
1.3 KiB
C#
42 lines
1.3 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 ModifyCooldownTimer : 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))
|
|
{
|
|
timer.currentTime += pair.modifier.Value;
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"计时器 '{pair.name.Value}' 不存在,无法修改。");
|
|
}
|
|
}
|
|
return TaskStatus.Success;
|
|
}
|
|
|
|
|
|
public struct TimerPair
|
|
{
|
|
public SharedVariable<string> name;
|
|
public SharedVariable<float> modifier;
|
|
}
|
|
}
|
|
}
|