GeWuYou f24ec656e6 refactor(coroutine): 将协程相关接口从Game模块迁移到Core模块
- 重命名命名空间从GFramework.Game.Abstractions.coroutine到GFramework.Core.Abstractions.coroutine
- 更新ICoroutineContext.cs、ICoroutineHandle.cs、ICoroutineScheduler.cs、
  ICoroutineScope.cs、ICoroutineSystem.cs、IYieldInstruction.cs的命名空间
- 更新测试覆盖率计划文档,添加协程模块测试计划
- 新增协程模块测试计划,包含15个源文件,计划91个测试用例
- 添加CoroutineHandleTests.cs等7个协程相关测试文件的计划
2026-01-21 09:21:08 +08:00

33 lines
876 B
C#

using GFramework.Core.Abstractions.coroutine;
namespace GFramework.Core.coroutine;
/// <summary>
/// 等待条件为假时继续执行的协程等待指令
/// </summary>
/// <param name="predicate">用于判断是否继续等待的布尔函数委托</param>
public class WaitWhile(Func<bool> predicate) : IYieldInstruction
{
/// <summary>
/// 获取当前等待指令是否已完成
/// </summary>
public bool IsDone { get; private set; }
/// <summary>
/// 更新等待状态
/// </summary>
/// <param name="deltaTime">时间增量</param>
public void Update(float deltaTime)
{
// 当前未完成时,检查谓词条件来更新完成状态
if (!IsDone) IsDone = !predicate();
}
/// <summary>
/// 重置等待指令状态
/// </summary>
public void Reset()
{
IsDone = false;
}
}