载入中...
搜索中...
未找到
CardEffects.cpp
浏览该文件的文档.
23 if (target_.health < 0 || target_.maxHealth <= 0 || target_.health > target_.maxHealth || target_.barrier < 0)
24 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card effect target state is invalid", "target"));
27 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card settlement kind is unsupported", "kind"));
52 eve::Result<settlement::PreparedApply> prepareApply(const settlement::SettlementContext& context) override {
75 const settlement::SettlementContext& context, const settlement::SettlementResult& result) override {
88 if (target_.barrier > 0 && barrierAbsorbed_ >= static_cast<double>(target_.barrier)) append("shield_break");
115 if (target.maxHealth <= 0 || target.health < 0 || target.health > target.maxHealth || target.barrier < 0)
116 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card effect target state is invalid", "target"));
128 if (target.health < 0 || target.maxHealth <= 0 || target.health > target.maxHealth || target.barrier < 0)
129 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card effect target state is invalid", "target"));
133 if (!shield && ((!damage && !heal) || effect.period > 0.0)) return eve::Result<void>::success();
134 if (effect.magnitude < 0.0 || effect.magnitude > static_cast<double>(std::numeric_limits<int>::max()))
135 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card immediate magnitude is outside the target range", "magnitude"));
137 if (!parsedSubject) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card shield subject is invalid", "subject"));
139 request.source = eve::SubjectRef::fromPersistentId(eve::PersistentId::fromUuid(effect.identity));
160 if (target.health < 0 || target.maxHealth <= 0 || target.health > target.maxHealth || target.barrier < 0)
173 eve::DiagnosticCode::InvalidArgument, "card periodic magnitude or stack is invalid", "periodic"));
217 return eve::Result<CardEffectUpdate>::success(std::move(result), eve::Status::success(eve::StatusCode::Applied));
224eve::Result<effects::EffectHandle> CardEffectAdapter::apply(const CardEffectDefinition& definition,
228 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card effect id must not be empty", "id"));
283 return eve::Result<CardEffectUpdate>::success(std::move(result), eve::Status::success(eve::StatusCode::Applied));
286std::size_t CardEffectAdapter::count() const noexcept { return static_cast<std::size_t>(container_.effectCount()); }
288CardEffectSnapshot CardEffectAdapter::snapshot() const { return {container_.snapshot(), target_}; }
292 snapshotValue.target.health > snapshotValue.target.maxHealth || snapshotValue.target.barrier < 0)
293 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "card effect snapshot target state is invalid", "snapshot.target"));
Card-domain effect adapter and executor.
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 success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
static SubjectRef fromPersistentId(PersistentId id) noexcept
Wrap a persistent identity without changing its bytes.
Definition SubjectRef.h:32
eve::Result< void > restore(const CardEffectSnapshot &snapshot)
Restore a snapshot and invalidate every pre-restore effect handle.
Definition CardEffects.cpp:290
std::size_t count() const noexcept
Return the number of active card effects.
Definition CardEffects.cpp:286
eve::Result< effects::EffectHandle > apply(const CardEffectDefinition &definition, eve::SubjectRef subject)
Apply one typed card effect and return its generation-qualified handle.
Definition CardEffects.cpp:224
eve::Result< void > initializeTarget(CardEffectTarget target)
Seed the domain target before the first effect is applied.
Definition CardEffects.cpp:114
CardEffectTarget & target() noexcept
Return the mutable card target state owned by this adapter.
Definition CardEffects.h:121
eve::Result< void > remove(effects::EffectHandle handle)
Remove one effect handle; stale handles are rejected.
Definition CardEffects.cpp:267
eve::Result< CardEffectUpdate > advance(const eve::SimulationStep &step)
Advance and settle card effects atomically for one simulation step.
Definition CardEffects.cpp:273
eve::Result< const effects::EffectInstance * > resolve(effects::EffectHandle handle) const
Resolve a live handle as a borrowed observation.
Definition CardEffects.cpp:300
eve::Result< void > configureSettlementRules(const settlement::SettlementRuleSet &rules)
Replace declarative rules used by subsequent card effect settlements.
Definition CardEffects.cpp:220
eve::Result< CardEffectUpdate > settle(CardEffectTarget &target, effects::EffectUpdateSummary lifecycle, const effects::EffectContainer &activeEffects) const
Settle all common periodic triggers using card shield/death rules.
Definition CardEffects.cpp:157
eve::Result< void > applyImmediate(CardEffectTarget &target, const effects::EffectInstance &effect, const effects::EffectContainer &activeEffects) const
Apply immediate shield semantics to a staged target.
Definition CardEffects.cpp:125
eve::Result< void > configureSettlementRules(const settlement::SettlementRuleSet &rules)
Replace declarative rules used by subsequent periodic settlements transactionally.
Definition CardEffects.cpp:106
static std::optional< Id128 > parse(std::string_view text) noexcept
Parses canonical UUID text.
Definition Identity.h:151
static constexpr Id128 fromUuid(const Id128< OtherTag > &value) noexcept
Re-tags an existing UUID at an explicit domain boundary.
Definition Identity.h:136
Owns active effect instances and their deterministic lifecycle events.
Definition EffectContainer.h:35
EffectContainer snapshot() const
Capture an independent lifecycle snapshot for staging/restore.
Definition EffectContainer.cpp:138
eve::Result< const EffectInstance * > resolve(EffectHandle handle) const
Resolve a generation-qualified handle for this call.
Definition EffectContainer.cpp:344
eve::Result< void > remove(const std::string &id, const std::string &reason="removed")
Removes one active instance and emits a Removed event.
Definition EffectContainer.cpp:375
EffectContainer clone() const
Create an independent deep copy suitable for ECS staging.
Definition EffectContainer.cpp:136
int effectCount() const
Returns active instance count in deterministic creation order.
Definition EffectContainer.cpp:558
eve::Result< void > restore(const EffectContainer &snapshot)
Restore a previously captured snapshot as one observable commit.
Definition EffectContainer.cpp:140
Executes lifecycle time progression for an EffectContainer.
Definition EffectContainer.h:309
eve::Result< EffectUpdateSummary > advance(EffectContainer &container, double dtSeconds) const
Advances one container by a legacy seconds delta.
Definition EffectContainer.cpp:625
Deterministically ordered, composable settlement pipeline.
Definition Settlement.h:542
Validated immutable-style rule collection installable into pipelines.
Definition SettlementRules.h:77
eve::Result< void > install(SettlementPipeline &pipeline) const
Install a stable snapshot as custom stages on a pipeline.
Definition SettlementRules.cpp:900
Definition Card.cpp:19
Result< T > applied(T value, std::vector< Diagnostic > diagnostics={})
Construct an Applied result with an owning payload and optional diagnostics.
Definition EditingResult.h:43
eve::Result< SettlementRuleSet > projectEffectRules(const effects::EffectContainer &effects, std::string_view scope)
Project active effect payloads into an owning settlement rule snapshot.
Definition SettlementEffectProjection.cpp:109
@ InvalidArgument
@ InvariantViolation
@ Conflict
@ Applied
Strong card definition projected into the common effect definition.
Definition CardEffects.h:40
Serializable in-memory card effect snapshot.
Definition CardEffects.h:65
Mutable card combat state changed by the card effect executor.
Definition CardEffects.h:32
Result of one card effect lifecycle step and its domain settlement.
Definition CardEffects.h:55
effects::EffectUpdateSummary lifecycle
Definition CardEffects.h:56
std::vector< settlement::SettlementBatchItemResult > settlements
Owning canonical audits for periodic settlements in lifecycle order.
Definition CardEffects.h:61
Immutable-by-convention template used to create effect instances.
Definition EffectTypes.h:100
double period
Period in seconds for domain executor settlement; zero disables periodic ticks.
Definition EffectTypes.h:106
eve::Result< void > validate() const
Validates definition fields without changing any state.
Definition EffectTypes.cpp:61
Generation-qualified local reference to a canonical effect instance.
Definition EffectTypes.h:173
Summary returned by the lifecycle executor after one simulation step.
Definition EffectTypes.h:212
std::vector< EffectPeriodicTick > periodicTicks
Periodic triggers in deterministic container order.
Definition EffectTypes.h:216
Indexed owning outcome for one independently committed settlement item.
Definition Settlement.h:265
std::optional< SettlementResult > result
Definition Settlement.h:269
SettlementRequest request
Definition Settlement.h:267
Domain-neutral input to one settlement operation.
Definition Settlement.h:107