载入中...
搜索中...
未找到
GameplayControlJson.cpp
浏览该文件的文档.
17 Diagnostic::error(DiagnosticCode::ParseError, "gameplay control value must be an object", path));
54 return Result<void>::failure(Diagnostic::error(DiagnosticCode::ParseError, "unknown gameplay control field",
72 Diagnostic::error(DiagnosticCode::ParseError, "gameplay request requires a session", "request.session"));
80 auto subjects = member(*object.value(), "controlledSubjects", Value::Type::Array, "request.session");
94 Diagnostic::error(DiagnosticCode::ParseError, "unknown gameplay access profile", "request.session.access"));
127 Diagnostic::error(DiagnosticCode::NotFound, "gameplay provider domain was not found", "request.domain"));
143 DiagnosticCode::Conflict, "several gameplay providers claim that instance", "request.instance"));
145 DiagnosticCode::Conflict, "multiple gameplay providers publish the same domain and none claims that instance",
166 return Value(Value::Object{{"acceptedTick", Value(static_cast<std::int64_t>(receipt.acceptedTick.value()))},
176 for (const auto& instance : catalog->gameplayInstances()) output.emplace_back(instance.format());
196 static const std::set<std::string> allowed{"afterSequence", "command", "deltaNanoseconds", "domain",
207 DiagnosticCode::Unsupported, "unsupported gameplay control request schema", "request.schemaVersion"));
273 Value::Object{{"domain", Value(std::move(entry.first))}, {"instances", std::move(entry.second)}});
285 Value(Value::Object{{"catalogs", Value(std::move(encoded))}, {"unenumerable", Value(std::move(missing))}}));
306 auto result = target.value()->availableGameplayActions(access.value(), instance.value(), actor.value());
308 return Result<Value>::success(Value(Value::Object{{"actions", encodeActions(std::move(result).takeValue())}}));
325 auto expectedRevision = uintMember(*commandObject.value(), "expectedRevision", "request.command");
334 DiagnosticCode::ParseError, "submit command requires parameters", "request.command.parameters"));
350 return Result<Value>::success(Value(Value::Object{{"receipt", encodeReceipt(std::move(result).takeValue())}}));
358 return Result<Value>::failure(Diagnostic::error(DiagnosticCode::ParseError, "delta must be non-negative",
360 SimulationStep step{SimulationTick(tick.value()), Duration::fromNanoseconds(delta.value()->asInt())};
370 return Result<Value>::success(Value(Value::Object{{"events", encodeEvents(std::move(result).takeValue())}}));
Versioned JSON facade shared by scripting, MCP and scenario tooling.
Optional companion surface for gameplay providers that can enumerate instances.
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
Optional read-only discovery surface implemented beside a gameplay provider.
Definition GameplayInstanceCatalog.h:32
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static SubjectRef fromPersistentId(PersistentId id) noexcept
Wrap a persistent identity without changing its bytes.
Definition SubjectRef.h:32
@ String
@ Array
@ Int64
static std::optional< Id128 > parse(std::string_view text) noexcept
Parses canonical UUID text.
Definition Identity.h:151
constexpr std::uint64_t value() const noexcept
Returns the underlying value at an explicit protocol boundary.
Definition StrongUint64.h:26
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
eve::SimulationStep SimulationStep
Compatibility alias for the common injected simulation step.
Definition SimulationBackend.h:111
@ NotFound
@ ParseError
@ Conflict
@ Object
Result< Value > executeGameplayControlRequest(const Value &request)
Routes one versioned owning request to the uniquely matching gameplay provider.
Definition GameplayControlJson.cpp:219
Result< std::string > executeGameplayControlJson(std::string_view requestJson)
Parse, execute and serialize one gameplay-control JSON request.
Definition GameplayControlJson.cpp:376
@ PlayerEquivalent
@ TestDriver
@ DeveloperCheat
detail::StrongUint64< detail::SimulationTickTag > SimulationTick
Deterministic simulation time step; it is not wall-clock time.
Definition Time.h:31
Definition Container.h:602