载入中...
搜索中...
未找到
CardPlay.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10#include "card/CardTypes.h"
11#include "common/Container.h"
12#include "decision/Condition.h"
14
15#include <functional>
16#include <optional>
17#include <string>
18#include <string_view>
19
20namespace eve::card {
21
30 using Resource = std::function<std::optional<eve::Value>(std::string_view key)>;
31 using Authority = std::function<std::optional<bool>(std::string_view scope)>;
32 using Policy =
33 std::function<std::optional<decision::ConditionResult>(std::string_view name, const eve::Value& arguments)>;
34
38};
39
48public:
55 CardPlayConditionContext(const CardData* card, const CardDefinition& definition,
56 CardPlayConditionQueries queries = {});
57
60 [[nodiscard]] std::optional<eve::Value> value(std::string_view key) const override;
63 [[nodiscard]] std::optional<bool> hasTag(std::string_view tag) const override;
66 [[nodiscard]] std::optional<eve::Value> attribute(std::string_view key) const override;
69 [[nodiscard]] std::optional<eve::Value> resource(std::string_view key) const override;
72 [[nodiscard]] std::optional<eve::Value> state(std::string_view key) const override;
75 [[nodiscard]] std::optional<bool> authority(std::string_view scope) const override;
78 [[nodiscard]] std::optional<decision::ConditionResult> policy(std::string_view name,
79 const eve::Value& arguments) const override;
80
81private:
82 const CardData* card_ = nullptr;
83 const CardDefinition* definition_ = nullptr;
85};
86
89public:
98 [[nodiscard]] static decision::ConditionResult evaluate(const CardData* card, const CardDefinition& definition,
100 CardPlayConditionQueries queries = {});
101};
102
112public:
114 explicit CardPlayParticipant(CardData& card);
115
117 [[nodiscard]] std::string_view name() const noexcept override { return "card-play-effect"; }
130
131private:
132 CardData& card_;
133 CardState previousState_ = CardState::Hand;
134 bool prepared_ = false;
135 bool committed_ = false;
136};
137
155
170
179public:
191
198
210 std::string transactionId = {});
211};
212
213} // namespace eve::card
double value
Small transaction facade for a resource cost plus one domain effect.
Pure, explainable condition trees shared by gameplay domains.
Low-level container membership, zone and atomic transfer contracts.
eve::Value condition
#define EVENGINE_API_WORLD
Definition Export.h:109
const GltfImportRequest & request
std::uint32_t key
JobScope scope
std::string name
const std::string * tag
LogicalId definition
const VegetationPresetContext & context
Move-only operation result carrying either a value or Status.
Definition Result.h:155
The canonical owning dynamic value used by data-facing protocols.
Definition Value.h:31
单张卡牌:ECS 实体,数据拆成 Identity / Stats / Visual / Layout / State。
Definition CardTypes.h:94
Evaluates one card play condition without moving or mutating a card.
Definition CardPlay.h:88
Read-only EvaluationContext backed by one card instance and definition.
Definition CardPlay.h:47
std::optional< bool > hasTag(std::string_view tag) const override
Query tag membership; nullopt means the tag source is unavailable.
Definition CardPlay.cpp:35
std::optional< eve::Value > resource(std::string_view key) const override
Query a resource amount or resource marker.
Definition CardPlay.cpp:48
std::optional< bool > authority(std::string_view scope) const override
Query authority without changing grants, leases, or state.
Definition CardPlay.cpp:57
std::optional< decision::ConditionResult > policy(std::string_view name, const eve::Value &arguments) const override
Evaluate a named read-only policy with owned arguments.
Definition CardPlay.cpp:62
std::optional< eve::Value > state(std::string_view key) const override
Query a state value for StateEquals nodes.
Definition CardPlay.cpp:53
std::optional< eve::Value > attribute(std::string_view key) const override
Query an attribute value; nullopt means the attribute is absent.
Definition CardPlay.cpp:40
Transaction participant that publishes one CardData play.
Definition CardPlay.h:111
eve::Result< void > rollback(const eve::transaction::TransactionContext &context) override
Discard a prepared but not committed stage.
Definition CardPlay.cpp:290
eve::Result< void > commit(const eve::transaction::TransactionContext &context) override
Publish this participant's staged changes.
Definition CardPlay.cpp:277
eve::Result< void > prepare(const eve::transaction::TransactionContext &context) override
Validate and stage local changes for the transaction.
Definition CardPlay.cpp:265
eve::Result< void > compensate(const eve::transaction::TransactionContext &context) override
Undo an already committed external effect by compensation.
Definition CardPlay.cpp:298
std::string_view name() const noexcept override
Stable transaction diagnostic name.
Definition CardPlay.h:117
Connects a card's mana field to the owning player's resource account.
Definition CardPlay.h:178
Borrowed container implementation owned by a domain adapter.
Definition Container.h:287
Explain one condition evaluation in a UI- and log-friendly form.
Definition Condition.h:129
Immutable condition AST node.
Definition Condition.h:195
Read-only state boundary used by every condition evaluation.
Definition Condition.h:166
Provider-neutral resource account contract.
Synchronous participant contract for one coordinator transaction.
Immutable context shared by every participant of one transaction.
Definition Transaction.h:30
CardState
单张卡牌的运行时状态。
Definition CardTypes.h:31
卡牌类型定义(registerCardsFromJson 注册)。
Definition CardTypes.h:79
Optional cross-domain operations that belong to one card play.
Definition CardPlay.h:147
std::optional< eve::container::SlotIndex > sourceSlot
Definition CardPlay.h:151
eve::transaction::ITransactionParticipant * effect
Definition CardPlay.h:153
std::optional< eve::container::SlotIndex > destinationSlot
Definition CardPlay.h:152
eve::container::IContainer * source
Definition CardPlay.h:149
eve::container::IContainer * destination
Definition CardPlay.h:150
CardPlayConditionQueries conditionQueries
Definition CardPlay.h:148
Read-only extension points used while evaluating a card play.
Definition CardPlay.h:29
std::function< std::optional< bool >(std::string_view scope)> Authority
Definition CardPlay.h:31
std::function< std::optional< decision::ConditionResult >(std::string_view name, const eve::Value &arguments)> Policy
Definition CardPlay.h:33
std::function< std::optional< eve::Value >(std::string_view key)> Resource
Definition CardPlay.h:30
Complete caller-owned input for one atomic card play.
Definition CardPlay.h:163
eve::resource::IResourceAccount * playerAccount
Definition CardPlay.h:166
const CardDefinition * definition
Definition CardPlay.h:165
CardPlayComposition composition
Definition CardPlay.h:167