载入中...
搜索中...
未找到
PcgTaskQueue.cpp
浏览该文件的文档.
10 DiagnosticCode::InvalidArgument,"task wait time must be finite and non-negative",{}, {},"procgen.taskQueue"));
17 DiagnosticCode::InvalidArgument,"delta time must be finite and non-negative",{}, {},"procgen.taskQueue"));
18 if(status_==PcgTaskQueueStatus::Ready) return Result<PcgTaskQueueStatus>::failure(Diagnostic::error(
19 DiagnosticCode::InvalidArgument,"ready task must be resolved before ticking",{}, {},"procgen.taskQueue"));
20 if(tasks_.empty()) { status_=PcgTaskQueueStatus::Idle; return Result<PcgTaskQueueStatus>::success(status_); }
27 if(status_!=PcgTaskQueueStatus::Ready||tasks_.empty()) return Result<PcgTaskQueueStatus>::failure(Diagnostic::error(
36PcgTaskQueueStatus PcgTaskQueue::cancelAll() noexcept { tasks_.clear(); cursor_=0; readyId_=0; return status_=PcgTaskQueueStatus::Idle; }
39 cls.addFunc("add",[vm=table.getHandle()](PcgTaskQueue* q,float wait){return eve::script::projectResult(vm,q->add(wait),[](std::uint64_t id){return eve::Value(static_cast<int64_t>(id));});});
40 cls.addFunc("tick",[vm=table.getHandle()](PcgTaskQueue* q,float dt){return eve::script::projectResult(vm,q->tick(dt),[](PcgTaskQueueStatus s){return eve::Value(static_cast<int>(s));});});
41 cls.addFunc("resolveReady",[vm=table.getHandle()](PcgTaskQueue* q,bool done){return eve::script::projectResult(vm,q->resolveReady(done),[](PcgTaskQueueStatus s){return eve::Value(static_cast<int>(s));});});
The single Squirrel projection for common Result, Status and Value.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Deterministic, callback-free port of PcgTask's delayed task queue.
Definition PcgTaskQueue.h:16
Result< std::uint64_t > add(double waitSeconds=0.25)
Append a task with Pcg's default 0.25-second delay unless overridden.
Definition PcgTaskQueue.cpp:8
Result< PcgTaskQueueStatus > resolveReady(bool finished)
Resolve the ready task; finished tasks are removed, unfinished tasks await their next pass.
Definition PcgTaskQueue.cpp:26
Result< PcgTaskQueueStatus > tick(double deltaSeconds)
Advance injected time and publish at most one due task.
Definition PcgTaskQueue.cpp:15
PcgTaskQueueStatus cancelAll() noexcept
Cancel every queued task and return Idle.
Definition PcgTaskQueue.cpp:36
Definition EvpackPointGraphLoader.h:12
void exposePcgTaskQueueBindings(ssq::Table &table)
Register PcgTaskQueue Squirrel bindings.
Definition PcgTaskQueue.cpp:37
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Definition SquirrelBinding.cpp:470
@ InvalidArgument