载入中...
搜索中...
未找到
CardAttributes.cpp
浏览该文件的文档.
15 return name == CardAttributeAdapter::attackAttribute || name == CardAttributeAdapter::healthAttribute;
27 eve::Status::failure(bound.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attribute owner could not be bound", "owner", {}, "card.attributes")));
37 eve::Status::failure(initialized.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attribute state could not be initialized", "attributes", {}, "card.attributes")));
45 eve::Status::failure(ready.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attributes are not available", "attributes", {}, "card.attributes")));
49 eve::Status::failure(attack.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attack attribute could not be read", "attack", {}, "card.attributes")));
52 eve::Status::failure(health.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card health attribute could not be read", "health", {}, "card.attributes")));
58 eve::Diagnostic::error(eve::DiagnosticCode::InvariantViolation, "card attribute cannot be represented by the legacy integer projection", "stats", {}, "card.attributes"));
68 eve::DiagnosticCode::Unsupported, "card attribute is outside the selective combat projection", "attribute",
74 eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card compatibility projection failed", "stats", {},
79 value.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attribute read failed", "attribute",
84eve::Result<void> CardAttributeAdapter::setBase(CardData& card, std::string_view attribute, double value) {
87 eve::Diagnostic::error(eve::DiagnosticCode::Unsupported, "card attribute is outside the selective combat projection", "attribute", {}, "card.attributes"));
90 eve::Status::failure(ready.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attributes are not available", "attributes", {}, "card.attributes")));
98 eve::attributes::AttributeOperation operation, double value, eve::attributes::ModifierPriority priority) {
101 eve::DiagnosticCode::InvalidArgument, "card modifier requires a selected attribute and non-empty source",
106 ready.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attributes are not available",
115 eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card compatibility projection failed", "stats", {},
120eve::Result<eve::attributes::AttributeProjectionSnapshot> CardAttributeAdapter::snapshot(CardData& card) {
124 ready.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attributes are not available",
135 eve::Status::failure(ready.code(), eve::Diagnostic::error(eve::DiagnosticCode::Failed, "card attributes are not available", "attributes", {}, "card.attributes")));
Selective canonical attributes for card combat values.
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
static Status failure(StatusCode code, Diagnostic diagnostic)
Construct a failed status with one diagnostic.
Definition Status.h:84
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
static constexpr std::string_view attackAttribute
Definition CardAttributes.h:28
static eve::Result< void > ensure(CardData &card)
Bind and seed the card's selected attributes exactly once.
Definition CardAttributes.cpp:24
static constexpr std::string_view healthAttribute
Definition CardAttributes.h:29
static eve::Result< void > project(CardData &card)
Project canonical values into the legacy integer Stats fields.
Definition CardAttributes.cpp:42
static eve::Result< eve::attributes::AttributeProjectionSnapshot > snapshot(CardData &card)
Capture attack/health with the owning ECS generation and revision.
Definition CardAttributes.cpp:120
static eve::Result< double > read(CardData &card, std::string_view attribute)
Read a selected final card attribute and refresh compatibility fields.
Definition CardAttributes.cpp:65
static eve::Result< eve::attributes::ModifierId > addModifier(CardData &card, std::string id, std::string_view attribute, std::string source, eve::attributes::AttributeOperation operation, double value, eve::attributes::ModifierPriority priority=eve::attributes::priority::runtime)
Add a modifier using the shared attribute operation ordering.
Definition CardAttributes.cpp:96
static eve::Result< void > restore(CardData &card, const eve::attributes::AttributeProjectionSnapshot &snapshot, eve::Revision expectedRevision)
Restore a card snapshot only when owner and revision still match.
Definition CardAttributes.cpp:130
static eve::Result< void > setBase(CardData &card, std::string_view attribute, double value)
Set a selected canonical base and refresh the legacy projection.
Definition CardAttributes.cpp:84
单张卡牌:ECS 实体,数据拆成 Identity / Stats / Visual / Layout / State。
Definition CardTypes.h:94
AttributeOperation
Built-in calculation operation for an attribute modifier.
Definition AttributeSet.h:25
Definition Card.cpp:19
@ InvalidArgument
@ Unsupported
@ InvariantViolation
@ Failed
@ NoOp
@ Applied
One canonical runtime modifier applied to one named attribute.
Definition AttributeSet.h:96
Transaction-safe snapshot of selected attributes and their modifiers.
Definition AttributeProjection.h:40
One base value captured by an attribute projection snapshot.
Definition AttributeProjection.h:28