载入中...
搜索中...
未找到
SkillCondition.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10#include "decision/Condition.h"
11
12#include <functional>
13#include <optional>
14#include <string_view>
15
16namespace eve::rpg {
17
18class RPGActor;
19struct SkillDefinition;
20
29 using Authority = std::function<std::optional<bool>(std::string_view scope)>;
30 using Policy =
31 std::function<std::optional<decision::ConditionResult>(std::string_view name, const eve::Value& arguments)>;
32
35};
36
47public:
55
58 [[nodiscard]] std::optional<eve::Value> value(std::string_view key) const override;
61 [[nodiscard]] std::optional<bool> hasTag(std::string_view tag) const override;
64 [[nodiscard]] std::optional<eve::Value> attribute(std::string_view key) const override;
67 [[nodiscard]] std::optional<eve::Value> resource(std::string_view key) const override;
70 [[nodiscard]] std::optional<eve::Value> state(std::string_view key) const override;
73 [[nodiscard]] std::optional<bool> authority(std::string_view scope) const override;
76 [[nodiscard]] std::optional<decision::ConditionResult> policy(std::string_view name,
77 const eve::Value& arguments) const override;
78
79private:
80 const RPGActor* actor_ = nullptr;
81 const SkillDefinition* definition_ = nullptr;
82 SkillConditionQueries queries_;
83};
84
87public:
96 [[nodiscard]] static decision::ConditionResult evaluate(const RPGActor* actor, const SkillDefinition& definition,
98 SkillConditionQueries queries = {});
99};
100
101} // namespace eve::rpg
double value
Pure, explainable condition trees shared by gameplay domains.
eve::Value condition
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::uint32_t key
JobScope scope
std::string name
const std::string * tag
std::string resource
LogicalId definition
The canonical owning dynamic value used by data-facing protocols.
Definition Value.h:31
Explain one condition evaluation in a UI- and log-friendly form.
Definition Condition.h:129
Immutable condition AST node.
Definition Condition.h:195
Read-only state boundary used by every condition evaluation.
Definition Condition.h:166
属性 / 状态 / 技能三表合一的 ECS 实体。
Definition RPGActor.h:34
Evaluates a condition using RPG Skill state without mutating it.
EvaluationContext backed by one borrowed RPG actor and SkillDefinition.
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。
Read-only extension points for authority and policy queries.
std::function< std::optional< decision::ConditionResult >(std::string_view name, const eve::Value &arguments)> Policy
std::function< std::optional< bool >(std::string_view scope)> Authority
SkillDefinition public API.
Definition Skill.h:28