载入中...
搜索中...
未找到
EffectTypes.cpp
浏览该文件的文档.
28 if (key.empty()) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect payload key must not be empty"));
38 if (key.empty()) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect payload key must not be empty"));
62 if (id.empty()) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition id must not be empty"));
63 if (!std::isfinite(duration)) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition duration must be finite"));
65 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition period must be finite and non-negative"));
66 if (!std::isfinite(magnitude)) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition magnitude must be finite"));
67 if (stackCount == 0) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition stack count must be positive"));
68 if (policy.stackCount == StackCountPolicy::Set && policy.maxStacks != 0 && stackCount > policy.maxStacks &&
70 return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect definition stack count exceeds its maximum"));
76 if (tag.empty()) return eve::Result<void>::failure(eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "effect tag must not be empty"));
78 if (it != tags.end() && *it == tag) return eve::Result<void>::success(eve::Status::success(eve::StatusCode::NoOp));
85 if (it == tags.end() || *it != tag) return eve::Result<void>::success(eve::Status::success(eve::StatusCode::NoOp));
90bool EffectInstance::hasTag(const std::string& tag) const { return std::binary_search(tags.begin(), tags.end(), tag); }
Definition, policy, instance and lifecycle value types for 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 Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Result< std::string > toJson() const
Serialize this value as deterministic compact JSON.
Definition Value.cpp:67
static Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
std::string toJson() const
Serializes all fields as a deterministic JSON object.
Definition EffectTypes.cpp:51
void setBool(const std::string &key, bool value)
Sets a JSON boolean field.
Definition EffectTypes.cpp:19
void setString(const std::string &key, const std::string &value)
Sets a JSON string field.
Definition EffectTypes.cpp:10
eve::Result< void > setJson(const std::string &key, const std::string &json)
Parses JSON text and stores its typed Value at the field.
Definition EffectTypes.cpp:27
const eve::Value::Object & object() const noexcept
Returns the read-only canonical Value object owned by this payload.
Definition EffectTypes.cpp:57
std::string getJson(const std::string &key) const
Serializes a field's typed Value to JSON text, or returns empty when absent/invalid.
Definition EffectTypes.cpp:43
eve::Result< void > erase(const std::string &key)
Removes a field; an absent field is an explicit NoOp result.
Definition EffectTypes.cpp:37
void setNumber(const std::string &key, double value)
Sets a JSON number field.
Definition EffectTypes.cpp:14
Definition EffectContainer.cpp:10
@ Replace
@ Refresh
bool parsePolicy(const std::string &name, StackPolicy &policy)
Parses a lowercase legacy stack policy name.
Definition EffectTypes.cpp:108
std::string eventKindName(EffectEventKind kind)
Returns the stable lowercase name of an event kind.
Definition EffectTypes.cpp:120
std::string policyName(StackPolicy policy)
Returns the stable lowercase name of a legacy stack policy.
Definition EffectTypes.cpp:99
@ Refreshed
@ Periodic
@ InvalidArgument
@ NoOp
@ Applied
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
std::string tagAt(int index) const
Returns a tag by lexical index, or an empty string.
Definition EffectTypes.cpp:94
eve::Result< void > removeTag(const std::string &tag)
Removes a tag; an absent tag is an explicit NoOp result.
Definition EffectTypes.cpp:83
eve::Result< void > addTag(const std::string &tag)
Adds a tag while retaining deterministic lexical order.
Definition EffectTypes.cpp:75
bool hasTag(const std::string &tag) const
Returns whether this effect has a tag.
Definition EffectTypes.cpp:90