载入中...
搜索中...
未找到
Damage.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7#include "action/Action.h"
8#include "common/Result.h"
9#include "common/SubjectRef.h"
12
13#include <optional>
14#include <string>
15
16namespace eve::combat {
17
19struct Impulse3 {
20 double x = 0.0;
21 double y = 0.0;
22 double z = 0.0;
23};
24
26enum class HitReaction : std::uint8_t { None, Flinch, Stagger, Knockdown, Death };
27
29enum class DamageRuleSource : std::uint8_t { Default, Provider };
30
39 double health = 0.0;
40 double maxHealth = 0.0;
41 double poise = 0.0;
42 double maxPoise = 0.0;
43
45 [[nodiscard]] Result<void> validate() const;
46};
47
52 std::optional<action::ActionExecutionId> actionExecution;
53 std::string damageType;
54 double healthDamage = 0.0;
55 double poiseDamage = 0.0;
59 double availableShield = 0.0;
61
63 [[nodiscard]] Result<void> validate() const;
64};
65
68 double healthDamage = 0.0;
69 double poiseDamage = 0.0;
70 double knockbackScale = 1.0;
71};
72
80public:
82 virtual ~IDamageRule() = default;
85 const CombatState& target) const = 0;
86};
87
92
94 [[nodiscard]] Result<void> validate() const;
95};
96
116
126public:
128 explicit DamageRuntime(const IDamageRule* rule = nullptr, HitReactionPolicy policy = {})
130 : rule_(rule), policy_(policy) {}
131
140 [[nodiscard]] Result<void> configureSettlementRules(const settlement::SettlementRuleSet& rules);
141
143 [[nodiscard]] Result<DamageAmounts> preview(const CombatState& target, const DamageRequest& request) const;
149 [[nodiscard]] Result<DamageOutcome> previewSettlement(const CombatState& target,
150 const DamageRequest& request) const;
152 [[nodiscard]] Result<DamageOutcome> apply(CombatState& target, const DamageRequest& request) const;
160 [[nodiscard]] Result<settlement::SettlementResult> heal(CombatState& target, SubjectRef source,
161 double amount) const;
163 [[nodiscard]] Result<double> recoverPoise(CombatState& target, double amount) const;
164
165private:
166 const IDamageRule* rule_ = nullptr;
167 HitReactionPolicy policy_;
169};
170
171} // namespace eve::combat
LogicalId target
Renderer- and ruleset-neutral gameplay action pipeline.
#define EVENGINE_API_BACKENDS
Definition Export.h:108
const GltfImportRequest & request
Move-only, checked operation results for the common layer.
Declarative, domain-neutral rules for buffs and gameplay effects.
Stable reference to a runtime gameplay subject.
const UnitySourceAsset & source
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
Owner-thread deterministic damage coordinator.
Definition Damage.h:125
DamageRuntime(const IDamageRule *rule=nullptr, HitReactionPolicy policy={})
Construct with an optional borrowed rule provider and owning policy copy.
Definition Damage.h:128
Optional game-owned mitigation/amplification policy.
Definition Damage.h:79
virtual ~IDamageRule()=default
Releases IDamageRule resources.
virtual Result< DamageAmounts > evaluate(const DamageRequest &request, const CombatState &target) const =0
Resolve final non-negative amounts without mutating target state.
Deterministically ordered, composable settlement pipeline.
Definition Settlement.h:542
Validated immutable-style rule collection installable into pipelines.
HitReaction
Typed reaction selected after health and poise are resolved.
Definition Damage.h:26
DamageRuleSource
Indicates whether default amounts or an injected rule produced the outcome.
Definition Damage.h:29
Domain-neutral, deterministic settlement pipeline.
Mutable combat state owned by the gameplay domain for one subject.
Definition Damage.h:37
Provider result prepared before the authoritative state is mutated.
Definition Damage.h:67
Complete owning audit result of one committed damage transaction.
Definition Damage.h:98
settlement::SettlementRequest settlementRequest
Exact owning request executed by the shared settlement pipeline.
Definition Damage.h:112
settlement::SettlementResult settlementResult
Complete owning settlement audit retained for replay and verification.
Definition Damage.h:114
DamageRuleSource ruleSource
Definition Damage.h:110
Owning input for one damage transaction.
Definition Damage.h:49
std::string damageType
Definition Damage.h:53
Result< void > validate() const
Validate target, canonical gameplay-tag damage type and finite amounts.
Definition Damage.cpp:151
double availableShield
Shield balance available to this transaction; the caller commits reported consumption.
Definition Damage.h:59
double incomingDamageMultiplier
Target-owned effect multiplier applied in the target-mitigation settlement stage.
Definition Damage.h:57
std::optional< action::ActionExecutionId > actionExecution
Definition Damage.h:52
Threshold policy for deterministic reaction selection.
Definition Damage.h:89
Result< void > validate() const
Validate finite non-negative thresholds and fraction in [0,1].
Definition Damage.cpp:171
Renderer/physics-neutral knockback impulse authored in world units.
Definition Damage.h:19
Domain-neutral input to one settlement operation.
Definition Settlement.h:107
Complete observable outcome of one successful settlement.
Definition Settlement.h:163