139 lines
3.0 KiB
C#
139 lines
3.0 KiB
C#
using System;
|
|
|
|
namespace BingoBrain.Core
|
|
{
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public static class IsfvKit
|
|
{
|
|
private static IsfvBehaviour _sIsfvBehaviour;
|
|
|
|
|
|
private static readonly object SynClock = new object();
|
|
|
|
private static IsfvBehaviour MIsfvBehaviour
|
|
{
|
|
get
|
|
{
|
|
if (_sIsfvBehaviour != null)
|
|
{
|
|
return _sIsfvBehaviour;
|
|
}
|
|
|
|
lock (SynClock)
|
|
{
|
|
if (_sIsfvBehaviour != null)
|
|
{
|
|
return _sIsfvBehaviour;
|
|
}
|
|
|
|
|
|
_sIsfvBehaviour = IsfvBehaviour.Instance;
|
|
if (_sIsfvBehaviour != null)
|
|
{
|
|
_sIsfvBehaviour.name = "[ AsyncKit ]";
|
|
}
|
|
}
|
|
|
|
return _sIsfvBehaviour;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Coroutine StartCoroutine(IEnumerator enumerator)
|
|
{
|
|
return MIsfvBehaviour.StartCoroutine(enumerator);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void StopCoroutine(Coroutine methodName)
|
|
{
|
|
MIsfvBehaviour.StopCoroutine(methodName);
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void StopAllCoroutine()
|
|
{
|
|
MIsfvBehaviour.StopAllCoroutines();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void StartAction(string key, IsfvData.DealMethod method, float delayTime, int repeat = 1)
|
|
{
|
|
var temp = new IsfvData { dealMethod = method, DelayTime = delayTime, RepeatCount = repeat };
|
|
MIsfvBehaviour.AddAsyncData(key, temp);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void StopAction(string key)
|
|
{
|
|
MIsfvBehaviour.RemoveAsyncData(key);
|
|
}
|
|
|
|
public static void StopAllAction()
|
|
{
|
|
MIsfvBehaviour.RemoveAllAction();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void StartUpdateAction(string key, IsfvData.DealMethod method, float time)
|
|
{
|
|
var temp = new IsfvData { dealMethod = method, DelayTime = time, RepeatCount = -1 };
|
|
MIsfvBehaviour.AddUpdateAction(key, temp);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void StopUpdateAction(string key)
|
|
{
|
|
MIsfvBehaviour.RemoveUpdateAction(key);
|
|
}
|
|
|
|
public static void DelayedAction(float delayTime, IsfvData.DealMethod method, int repeat = 1,
|
|
string key = null)
|
|
{
|
|
key ??= $"{nameof(DelayedAction)}{DateTime.Now.Millisecond}";
|
|
var temp = new IsfvData
|
|
{
|
|
dealMethod = () =>
|
|
{
|
|
method?.Invoke();
|
|
ClearDelayedAction(key);
|
|
},
|
|
DelayTime = delayTime, RepeatCount = repeat
|
|
};
|
|
MIsfvBehaviour.AddAsyncTempData(key, temp);
|
|
}
|
|
|
|
public static void ClearDelayedAction(string key)
|
|
{
|
|
MIsfvBehaviour.RemoveAsyncTempData(key);
|
|
}
|
|
}
|
|
} |