载入中...
搜索中...
未找到
SettlementEffectProjection.cpp
浏览该文件的文档.
23eve::Result<std::string> stringField(const eve::Value::Object& object, std::string_view name, std::string path,
35eve::Result<double> numberField(const eve::Value::Object& object, std::string_view name, double fallback,
50eve::Result<std::vector<std::string>> stringsField(const eve::Value::Object& object, std::string_view name,
55 if (array == nullptr) return invalid<std::vector<std::string>>("field must be an array of strings", path);
70 if (value == "source_modifiers") return eve::Result<StageKind>::success(StageKind::SourceModifiers);
71 if (value == "target_mitigation") return eve::Result<StageKind>::success(StageKind::TargetMitigation);
80 if (value == "resist_flat") return eve::Result<RuleOperation>::success(RuleOperation::ResistFlat);
81 if (value == "resist_percent") return eve::Result<RuleOperation>::success(RuleOperation::ResistPercent);
82 if (value == "absorb_flat") return eve::Result<RuleOperation>::success(RuleOperation::AbsorbFlat);
83 if (value == "clamp_maximum") return eve::Result<RuleOperation>::success(RuleOperation::ClampMaximum);
91eve::Result<eve::Value::Object> ruleObject(const effects::EffectInstance& effect, std::string path) {
101 if (object == nullptr) return invalid<eve::Value::Object>("settlement.rule JSON must be an object", path);
104 return invalid<eve::Value::Object>("settlement.rule must be an object or JSON object string", std::move(path));
109eve::Result<SettlementRuleSet> projectEffectRules(const effects::EffectContainer& effects, std::string_view scope) {
110 if (scope.empty()) return invalid<SettlementRuleSet>("effect rule scope must not be empty", "scope");
133 auto perStack = numberField(object, "value_per_extra_stack", 0.0, path + ".value_per_extra_stack");
Owning effect storage and lifecycle-only executor.
Declarative, domain-neutral rules for buffs and gameplay effects.
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 Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
Owns active effect instances and their deterministic lifecycle events.
Definition EffectContainer.h:35
EffectInstance * effectAt(int index)
Returns an active instance by deterministic index, or nullptr. @ownership Borrowed from this containe...
Definition EffectContainer.cpp:560
int effectCount() const
Returns active instance count in deterministic creation order.
Definition EffectContainer.cpp:558
Validated immutable-style rule collection installable into pipelines.
Definition SettlementRules.h:77
eve::Result< void > configure(std::vector< SettlementRule > rules)
Atomically replace all rules after validating ids, operands and phases.
Definition SettlementRules.cpp:831
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
Definition Settlement.cpp:10
@ Critical
@ ClampMaximum
@ ResistPercent
@ AbsorbFlat
@ ResistFlat
@ Lifesteal
@ Multiply
@ SourceModifiers
@ TargetMitigation
@ Decision
@ ArmorShield
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
std::vector< std::string > requiredTags
Definition SettlementRules.h:43
std::vector< std::string > excludedTags
Definition SettlementRules.h:44
One owning, serializable projection of a buff/effect contribution.
Definition SettlementRules.h:54
std::string when
Optional side-effect-free expression compiled by configure().
Definition SettlementRules.h:65
double valuePerExtraStack
Definition SettlementRules.h:61