载入中...
搜索中...
未找到
CardControl.cpp
浏览该文件的文档.
25 return failure<const Value::Object*>(DiagnosticCode::InvalidArgument, "card parameters must be an object",
30Result<std::string> text(const Value::Object& value, std::string_view name, std::string fallback = {}) {
45 return Result<double>::success(found->second.isInt64() ? static_cast<double>(found->second.asInt())
63 [[nodiscard]] eve::Result<eve::resource::Affordability> canAfford(const eve::resource::CostSpec&) const override {
66 [[nodiscard]] eve::Result<eve::resource::Reservation> reserve(const eve::resource::CostSpec&) override {
69 [[nodiscard]] eve::Result<eve::resource::Receipt> debit(const eve::resource::CostSpec&) override {
72 [[nodiscard]] eve::Result<eve::resource::Receipt> credit(const eve::resource::CostSpec&) override {
75 [[nodiscard]] eve::Result<eve::resource::Receipt> commit(const eve::resource::Reservation&) override {
110 DiagnosticCode::InvalidArgument, "card publication needs valid instance and owner ids", "instance"));
128 Diagnostic::error(DiagnosticCode::NotFound, "that card instance is not published", "instance"));
182 Value(cardStateName(card->state()->phase) != nullptr ? std::string(cardStateName(card->state()->phase))
194 {"handSize", Value(static_cast<std::int64_t>(entry.hand != nullptr ? entry.hand->count() : 0))},
202Result<GameplayObservation> CardControl::observeGameplay(const GameplaySession& session, SubjectRef instance) const {
205 return failure<GameplayObservation>(DiagnosticCode::NotFound, "card gameplay instance was not found",
219Result<std::vector<GameplayActionDescriptor>> CardControl::availableGameplayActions(const GameplaySession& session,
223 if (!observed) return Result<std::vector<GameplayActionDescriptor>>::failure(observed.status());
249Result<GameplayCommandReceipt> CardControl::submitGameplay(const GameplaySession& session, SubjectRef instance,
253 return failure<GameplayCommandReceipt>(DiagnosticCode::NotFound, "card gameplay instance was not found",
259 return failure<GameplayCommandReceipt>(DiagnosticCode::InvalidArgument, "command id must not be empty",
263 DiagnosticCode::Conflict, "card command was based on a stale observation", "command.expectedRevision");
268 return failure<GameplayCommandReceipt>(DiagnosticCode::Failed, "card instance lost its hand", "instance");
287 return failure<GameplayCommandReceipt>(DiagnosticCode::NotFound, "that card is not in the hand",
289 eve::resource::IResourceAccount& account = entry->account != nullptr ? *entry->account : unboundAccount();
312 return failure<GameplayCommandReceipt>(DiagnosticCode::NotFound, "that card is not in the hand",
314 const auto appliedAttribute = module_->setCardAttribute(*card, attribute.value(), value.value());
315 if (!appliedAttribute) return Result<GameplayCommandReceipt>::failure(appliedAttribute.status());
333 {"instance", Value(entry->instance.format())}, {"detail", Value(detail)}, {"quantity", Value(applied)}});
342 Value(Value::Object{{"action", Value(action)}, {"detail", Value(detail)}, {"quantity", Value(applied)}});
343 return Result<GameplayCommandReceipt>::success(std::move(receipt), Status::success(StatusCode::Applied));
346Result<GameplayObservation> CardControl::advanceGameplay(const GameplaySession& session, SubjectRef instance,
350 return failure<GameplayObservation>(DiagnosticCode::NotFound, "card gameplay instance was not found",
353 return failure<GameplayObservation>(DiagnosticCode::Conflict, "card simulation tick must increase",
361Result<std::vector<GameplayEvent>> CardControl::gameplayEvents(const GameplaySession& session, SubjectRef instance,
367 return failure<std::vector<GameplayEvent>>(DiagnosticCode::NotFound, "card gameplay instance was not found",
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
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
const std::string & format() const noexcept
Returns the canonical namespace:name representation.
Definition Identity.h:436
static std::optional< LogicalId > parse(std::string_view text)
Parses a scoped logical name.
Definition Identity.cpp:36
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
bool isValid() const noexcept
Return whether this reference is valid and non-nil.
Definition SubjectRef.h:38
Result< void > publish(SubjectRef instance, SubjectRef owner, Hand &hand, eve::resource::IResourceAccount *account)
Publish one borrowed hand under a stable instance identity.
Definition CardControl.cpp:106
Result< std::vector< GameplayActionDescriptor > > availableGameplayActions(const GameplaySession &session, SubjectRef instance, SubjectRef subject) const override
Discover currently legal player-semantic actions for one subject.
Definition CardControl.cpp:219
Result< GameplayObservation > advanceGameplay(const GameplaySession &session, SubjectRef instance, const SimulationStep &step) override
Advance one provider-owned instance using injected deterministic time.
Definition CardControl.cpp:346
~CardControl() override
Unpublish every hand without touching the borrowed authorities.
Definition CardControl.cpp:101
Result< GameplayObservation > observeGameplay(const GameplaySession &session, SubjectRef instance) const override
Observe one provider-owned gameplay instance without mutation.
Definition CardControl.cpp:202
Result< std::vector< GameplayEvent > > gameplayEvents(const GameplaySession &session, SubjectRef instance, std::uint64_t afterSequence) const override
Return events strictly newer than an instance-local sequence cursor.
Definition CardControl.cpp:361
std::vector< SubjectRef > gameplayInstances() const override
Instances currently served, in publication order.
Definition CardControl.cpp:146
std::vector< SubjectRef > instances() const
Published instance identities, in publication order.
Definition CardControl.cpp:137
Result< void > unpublish(SubjectRef instance)
Drop one publication; NotFound when that instance is not published.
Definition CardControl.cpp:123
std::string_view gameplayDomain() const noexcept override
Stable provider domain used for discovery and routing.
Definition CardControl.cpp:144
Result< GameplayCommandReceipt > submitGameplay(const GameplaySession &session, SubjectRef instance, const GameplayCommand &command) override
Validate authority and atomically submit one domain command.
Definition CardControl.cpp:249
单张卡牌:ECS 实体,数据拆成 Identity / Stats / Visual / Layout / State。
Definition CardTypes.h:94
CardData * drawCard(const std::string &handOwner)
从牌库抽一张牌加入指定手牌;无牌时返回 nullptr。
Definition Card.cpp:504
eve::Result< void > setCardAttribute(CardData &card, std::string_view attribute, double value) const
Set one canonical combat attribute through the Card facade.
Definition Card.cpp:300
eve::Result< eve::transaction::TransactionReceipt > play(CardData &card, eve::resource::IResourceAccount &playerAccount, CardPlayComposition composition={}, std::string transactionId={})
Play a card through the facade's condition, container and payment transaction.
Definition Card.cpp:334
Provider-neutral resource account contract.
Definition ResourceAccount.h:316
Definition Card.cpp:19
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
WidgetDesc card(std::vector< WidgetDesc > children, std::string id)
Bordered surface container with editor-friendly padding.
Definition Widget.cpp:502
@ InvalidArgument
@ NotFound
@ PreconditionViolation
@ Unsupported
@ Failed
@ Conflict
@ NoOp
@ Applied
@ PlayerEquivalent
Definition Container.h:602
Owning evidence that a gameplay authority accepted one command.
Definition GameplayControl.h:62
std::uint64_t resultingRevision
Definition GameplayControl.h:66
One player-semantic command submitted to a domain authority.
Definition GameplayControl.h:52
Owning event projection safe across frames and process boundaries.
Definition GameplayControl.h:71
Immutable owning observation of one authoritative gameplay instance.
Definition GameplayControl.h:43
Owning authorization context shared by player, script and automation adapters.
Definition GameplayControl.h:30
Reservation credential returned by a successful reserve operation.
Definition ResourceAccount.h:279