载入中...
搜索中...
未找到
CombatAttributes.cpp
浏览该文件的文档.
19 if (!std::isfinite(initialValue) || !std::isfinite(minimumValue) || !std::isfinite(maximumValue) ||
22 Diagnostic::error(DiagnosticCode::InvalidArgument, "Combat attribute values must be finite", tag));
25 Diagnostic::error(DiagnosticCode::InvalidArgument, "Combat attribute minimum exceeds maximum", tag));
40 Diagnostic::error(DiagnosticCode::AlreadyExists, "Combat attribute is already registered", definition.tag));
51 Diagnostic::error(DiagnosticCode::NotFound, "Combat attribute is not registered", std::string(tag)));
63 return Result<std::vector<CombatAttributeEvent>>::success({}, Status::success(StatusCode::NoOp));
67 const auto kind = clamped > previous ? CombatAttributeEventKind::Gain : CombatAttributeEventKind::Loss;
70 events.push_back({definition.tag, CombatAttributeEventKind::Depleted, previous, clamped, clamped - previous});
75Result<std::vector<CombatAttributeEvent>> CombatAttributeRuntime::setValue(std::string_view tag, double value) {
79 Diagnostic::error(DiagnosticCode::NotFound, "Combat attribute is not registered", std::string(tag)));
83Result<std::vector<CombatAttributeEvent>> CombatAttributeRuntime::modify(std::string_view tag, double delta) {
90 Diagnostic::error(DiagnosticCode::NotFound, "Combat attribute is not registered", std::string(tag)));
97 Diagnostic::error(DiagnosticCode::InvalidArgument, "Combat attribute delta must be non-negative", "delta"));
111 Diagnostic::error(DiagnosticCode::InvalidArgument, "Combat attribute regeneration overflowed", tag));
Tag-addressed combat attributes, regeneration and change events.
Stable, structured diagnostics shared by engine modules.
Stable hierarchical gameplay-tag definitions and registry.
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
double seconds() const noexcept
Return this duration as seconds for legacy/presentation APIs.
Definition Time.cpp:28
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
void setBase(const AttributeId &attribute, double value)
Set or replace a base value. Empty attribute ids are ignored for compatibility.
Definition AttributeSet.cpp:211
double getBase(const AttributeId &attribute, double fallback=0.0) const
Return a base value, or fallback when absent.
Definition AttributeSet.cpp:231
Result< std::vector< CombatAttributeEvent > > setValue(std::string_view tag, double value)
Replace a value after clamping and return its owning gain/loss/depletion event, if changed.
Definition CombatAttributes.cpp:75
Result< CombatAttributeAdvance > advance(Duration delta)
Regenerate all attributes in lexical tag order using injected deterministic time.
Definition CombatAttributes.cpp:94
Result< double > value(std::string_view tag) const
Return the current base value, or NotFound for an unknown tag.
Definition CombatAttributes.cpp:47
std::vector< CombatAttributeDefinition > definitions() const
Return owning registered definitions in lexical tag order.
Definition CombatAttributes.cpp:126
Result< std::vector< CombatAttributeEvent > > modify(std::string_view tag, double delta)
Add a signed delta after clamping and return owning change events.
Definition CombatAttributes.cpp:83
Result< void > registerAttribute(CombatAttributeDefinition definition)
Register one tag-addressed definition and initialize its value atomically.
Definition CombatAttributes.cpp:35
Definition ActionDamageSink.cpp:9
bool isValidGameplayTagName(std::string_view name) noexcept
Returns whether a name is a canonical dot-separated gameplay tag.
Definition GameplayTag.cpp:29
@ InvalidArgument
@ NotFound
@ AlreadyExists
@ NoOp
@ Applied
Owning result of a deterministic regeneration step.
Definition CombatAttributes.h:44
std::vector< CombatAttributeEvent > events
Definition CombatAttributes.h:45
Data-driven bounds and deterministic regeneration for one combat attribute.
Definition CombatAttributes.h:20
double regenerationPerSecond
Definition CombatAttributes.h:25
double initialValue
Definition CombatAttributes.h:22
Result< void > validate() const
Validate the gameplay-tag identity, finite bounds and regeneration rate.
Definition CombatAttributes.cpp:15
double minimumValue
Definition CombatAttributes.h:23
double maximumValue
Definition CombatAttributes.h:24