Files
Continentis/Assets/Scripts/MainGame/Commands/Cmd_Function.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

41 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using SoulliesFramework.General;
using UniRx;
using UnityEngine;
using UnityEngine.Events;
namespace Continentis.MainGame.Commands
{
public class Cmd_Function : CommandBase
{
private readonly float functionDuration;
private readonly UnityAction function;
private readonly bool executeAtStart;
public Cmd_Function(float functionDuration, UnityAction function, bool executeAtStart = true)
{
this.functionDuration = functionDuration;
this.function = function;
this.executeAtStart = executeAtStart;
}
protected override IObservable<Unit> OnExecute(CommandContext context)
{
if (functionDuration > 0)
{
if (executeAtStart) //在持续时间开始时执行
{
function?.Invoke();
return Observable.Timer(TimeSpan.FromSeconds(functionDuration)).AsUnitObservable();
}
return Observable.Timer(TimeSpan.FromSeconds(functionDuration))
.Do(_ => function?.Invoke())
.AsUnitObservable(); //在持续时间结束时执行
}
function?.Invoke();
return Observable.Return(Unit.Default); //如果持续时间为0立即完成
}
}
}