载入中...
搜索中...
未找到
PcgBuildConfig.cpp
浏览该文件的文档.
3#include <simplesquirrel/simplesquirrel.hpp>
4namespace eve::scene { namespace { }
5Result<void> PcgBuildConfig::setPublicationType(int type){if(type<0||type>1)return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"publication type must be 0 or 1",{}, {},"scene.pcgBuildConfig"));publicationType_=static_cast<PcgPublicationType>(type);return Result<void>::success();}
6Result<void> PcgBuildConfig::addHistory(int category,const std::string&sceneName,int64_t timestamp){if(category<0||category>6)return Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"build log category must be in range 0..6",{}, {},"scene.pcgBuildConfig"));history_.push_back({static_cast<PcgBuildLogCategory>(category),sceneName,timestamp});return Result<void>::success();}
7Result<int> PcgBuildConfig::getHistoryCategory(uint64_t i)const{if(i>=history_.size())return Result<int>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"build history index is out of range",{}, {},"scene.pcgBuildConfig"));return Result<int>::success(static_cast<int>(history_[i].category));}
8Result<std::string> PcgBuildConfig::getHistorySceneName(uint64_t i)const{if(i>=history_.size())return Result<std::string>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"build history index is out of range",{}, {},"scene.pcgBuildConfig"));return Result<std::string>::success(history_[i].sceneName);}
9Result<int64_t> PcgBuildConfig::getHistoryTimestamp(uint64_t i)const{if(i>=history_.size())return Result<int64_t>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,"build history index is out of range",{}, {},"scene.pcgBuildConfig"));return Result<int64_t>::success(history_[i].timestamp);}
10void exposePcgBuildConfigBindings(ssq::Table&t){auto vm=t.getHandle();auto c=t.addClass("PcgBuildConfig",ssq::Class::Ctor<PcgBuildConfig()>());c.addFunc("setPublicationType",[vm](PcgBuildConfig*s,int v){return eve::script::projectResult(vm,s->setPublicationType(v));});c.addFunc("getPublicationType",[](const PcgBuildConfig*s){return s->getPublicationType();});c.addFunc("addHistory",[vm](PcgBuildConfig*s,int category,const std::string&n,int64_t ts){return eve::script::projectResult(vm,s->addHistory(category,n,ts));});c.addFunc("clearHistory",[](PcgBuildConfig*s){s->clearHistory();});c.addFunc("getHistoryCount",[](const PcgBuildConfig*s){return s->getHistoryCount();});c.addFunc("getHistoryCategory",[vm](const PcgBuildConfig*s,uint64_t i){return eve::script::projectResult(vm,s->getHistoryCategory(i),[](int v){return v;});});c.addFunc("getHistorySceneName",[vm](const PcgBuildConfig*s,uint64_t i){return eve::script::projectResult(vm,s->getHistorySceneName(i),[](const std::string&v){return v;});});c.addFunc("getHistoryTimestamp",[vm](const PcgBuildConfig*s,uint64_t i){return eve::script::projectResult(vm,s->getHistoryTimestamp(i),[](int64_t v){return v;});});}
11}
const std::string & s
HSQUIRRELVM vm
Definition ECS.cpp:20
glm::vec3 n
Definition Grass.cpp:63
float v
std::int32_t c
float t
The single Squirrel projection for common Result, Status and Value.
const char * category
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
Move-only operation result carrying either a value or Status.
Definition Result.h:155
static Result success(T value)
Construct a successful result owning value.
Definition Result.h:164
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Caller-owned Pcg publication configuration and ordered build history.
Result< void > addHistory(int category, const std::string &sceneName, int64_t timestamp)
Append one ordered build history entry.
Result< int > getHistoryCategory(uint64_t index) const
Return category at index.
Result< std::string > getHistorySceneName(uint64_t index) const
Return scene name at index.
Result< void > setPublicationType(int type)
Set publication type, where 0 is Addressables and 1 is RegularBuild.
Result< int64_t > getHistoryTimestamp(uint64_t index) const
Return Unix timestamp at index.
PcgBuildLogCategory
PcgBuildLogCategory public API.
PcgPublicationType
PcgPublicationType public API.
void exposePcgBuildConfigBindings(ssq::Table &t)
Register Pcg build-config bindings.
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.