载入中...
搜索中...
未找到
CardEffects.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
14#include "common/Result.h"
15#include "common/SubjectRef.h"
16#include "common/Time.h"
20
21#include <cstddef>
22#include <cstdint>
23#include <string>
24#include <vector>
25
26namespace eve::card {
27
29enum class CardEffectKind : std::uint8_t { Damage, Heal, Shield };
30
33 int health = 100;
34 int maxHealth = 100;
35 int barrier = 0;
36 std::uint32_t deathTriggers = 0;
37};
38
41 std::string id;
42 std::string source;
43 double duration = 0.0;
44 double period = 0.0;
45 double magnitude = 0.0;
48 bool deathTrigger = true;
49 std::vector<std::string> tags;
52};
53
57 std::uint32_t settled = 0;
58 std::uint32_t absorbed = 0;
59 bool deathTriggered = false;
61 std::vector<settlement::SettlementBatchItemResult> settlements;
62};
63
69
72public:
78 const effects::EffectContainer& activeEffects) const;
79
83 const effects::EffectContainer& activeEffects) const;
84
85private:
87};
88
91public:
98 [[nodiscard]] eve::Result<void> configureSettlementRules(const settlement::SettlementRuleSet& rules);
104 [[nodiscard]] eve::Result<void> initializeTarget(CardEffectTarget target);
109 [[nodiscard]] eve::Result<void> remove(effects::EffectHandle handle);
111 [[nodiscard]] eve::Result<CardEffectUpdate> advance(const eve::SimulationStep& step);
113 [[nodiscard]] std::size_t count() const noexcept;
115 [[nodiscard]] CardEffectSnapshot snapshot() const;
117 [[nodiscard]] eve::Result<void> restore(const CardEffectSnapshot& snapshot);
121 [[nodiscard]] CardEffectTarget& target() noexcept { return target_; }
123 [[nodiscard]] const CardEffectTarget& target() const noexcept { return target_; }
124
125private:
126 effects::EffectContainer container_;
127 CardEffectExecutor executor_;
128 CardEffectTarget target_;
129};
130
131} // namespace eve::card
LogicalId target
int subject
Definition AnimSmr.cpp:163
Owning effect storage and lifecycle-only executor.
#define EVENGINE_API_WORLD
Definition Export.h:109
std::unique_ptr< ParticleEffect > effect
PrimitiveHandle handle
Move-only, checked operation results for the common layer.
Declarative, domain-neutral rules for buffs and gameplay effects.
std::uint32_t count
Stable reference to a runtime gameplay subject.
LogicalId definition
Common time values and an injectable deterministic simulation clock.
float step
Definition TreeMesh.cpp:314
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Strong, domain-neutral reference to a runtime subject.
Definition SubjectRef.h:26
Card adapter composing the common lifecycle container with CardEffectExecutor.
Definition CardEffects.h:90
const CardEffectTarget & target() const noexcept
Return the read-only card target state.
CardEffectTarget & target() noexcept
Return the mutable card target state owned by this adapter.
Card executor: interprets card policy without owning effect instances.
Definition CardEffects.h:71
eve::Result< CardEffectUpdate > settle(CardEffectTarget &target, effects::EffectUpdateSummary lifecycle, const effects::EffectContainer &activeEffects) const
Settle all common periodic triggers using card shield/death rules.
eve::Result< void > applyImmediate(CardEffectTarget &target, const effects::EffectInstance &effect, const effects::EffectContainer &activeEffects) const
Apply immediate shield semantics to a staged target.
eve::Result< void > configureSettlementRules(const settlement::SettlementRuleSet &rules)
Replace declarative rules used by subsequent periodic settlements transactionally.
Owns active effect instances and their deterministic lifecycle events.
Deterministic JSON-compatible payload carried by a definition or instance.
Definition EffectTypes.h:63
Deterministically ordered, composable settlement pipeline.
Definition Settlement.h:542
Validated immutable-style rule collection installable into pipelines.
CardEffectKind
Card-specific interpretation of an effect magnitude.
Definition CardEffects.h:29
Domain-neutral, deterministic settlement pipeline.
One deterministic fixed-step emitted by SimulationClock.
Definition Time.h:158
Strong card definition projected into the common effect definition.
Definition CardEffects.h:40
std::vector< std::string > tags
Definition CardEffects.h:49
effects::EffectPayload payload
Optional common effect payload, including a settlement.rule object.
Definition CardEffects.h:51
effects::EffectPolicy policy
Definition CardEffects.h:46
Serializable in-memory card effect snapshot.
Definition CardEffects.h:65
effects::EffectContainer effects
Definition CardEffects.h:66
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
Generation-qualified local reference to a canonical effect instance.
One owned runtime effect fact.
Independent policy dimensions used when applying an effect definition.
Definition EffectTypes.h:53
Summary returned by the lifecycle executor after one simulation step.