载入中...
搜索中...
未找到
Tracker.cpp
浏览该文件的文档.
84 return fail(eve::DiagnosticCode::InvalidArgument, "snapshot does not belong to RPG Tracker", "$.schema");
87 return fail(eve::DiagnosticCode::UnknownVersion, "unsupported RPG Tracker snapshot version", "$.version");
90 return fail(eve::DiagnosticCode::ParseError, "quest tracker entries must be an array", "$.entries");
105 if (!id || !id->isString() || !state || !state->isString() || !objectives || !objectives->isArray())
106 return fail(eve::DiagnosticCode::ParseError, "quest tracker entry fields have invalid types", path);
108 return fail(eve::DiagnosticCode::Conflict, "quest tracker entry id is duplicated", path + ".id");
118 return fail(eve::DiagnosticCode::InvalidArgument, "quest tracker state is invalid", path + ".state");
123 for (std::size_t objectiveIndex = 0; objectiveIndex < entryIt->second.objectives.size(); ++objectiveIndex) {
127 return fail(eve::DiagnosticCode::ParseError, "quest objective must be an object", objectivePath);
132 return fail(eve::DiagnosticCode::ParseError, "quest objective fields have invalid types", objectivePath);
目标追踪器的状态机与匹配行为。
任务 / 成就 / 教程的通用定义模板与进程级注册表。
目标追踪器运行时实例(玩家日志 / 成就 / 教程可各建一份)。
Owning, renderer-independent dynamic values.
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
const std::string & asString() const
Return the string payload; the caller must have checked the kind.
Definition Value.cpp:87
static Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
std::int64_t asInt() const
Return the Int64 payload; the caller must have checked the kind.
Definition Value.cpp:69
Value * find(const std::string &key) noexcept
Return an object member, or nullptr when absent.
Definition Value.cpp:124
static const QuestDefinition * find(const std::string &id)
Find a registered quest definition by id.
Definition Quest.cpp:160
static bool canActivate(Tracker *t, const std::string &id, std::string *reason=nullptr)
是否可激活(谓词查询,可返回 reason)。
Definition QuestSystem.cpp:116
static bool reset(Tracker *t, const std::string &id)
进度清零并按当前 requires 回落 locked/inactive/active;不级联(compatibility facade (脚本兼容门面))。
Definition QuestSystem.cpp:196
static bool claim(Tracker *t, const std::string &id, std::string *reason=nullptr)
仅 state==ready 时成功 → completed 并触发解锁;否则 reject(compatibility facade (脚本兼容门面))。
Definition QuestSystem.cpp:174
static void syncAuto(Tracker *t)
补建 Registry 里尚不在 Tracker 上的条目,并解开前置已齐的 locked 条目。
Definition QuestSystem.cpp:61
static std::string canActivateReason(Tracker *t, const std::string &id)
不可激活的原因("" 可激活,否则 unknown/locked/alreadyActive/alreadyCompleted/failed/ready)。
Definition QuestSystem.cpp:100
static bool fail(Tracker *t, const std::string &id, const std::string &reason)
Fail.
Definition QuestSystem.cpp:240
static bool activate(Tracker *t, const std::string &id, std::string *reason=nullptr)
激活:仅 inactive 且前置已齐时成功;否则 push reject 并返回 false(compatibility facade (脚本兼容门面))。
Definition QuestSystem.cpp:122
static void notify(Tracker *t, const std::string &topic, const std::string &target, int amount)
报告事实 (topic, target, amount);只推进 state==active 的条目。
Definition QuestSystem.cpp:145
static bool abandon(Tracker *t, const std::string &id)
abandon/fail → failed;对 completed/failed/locked/未知 id 为 reject(compatibility facade (脚本兼容门面))。
Definition QuestSystem.cpp:238
int getObjectiveCountRequired(const std::string &id, int index) const
Returns the objective count required.
Definition Tracker.cpp:206
bool isObjectiveDone(const std::string &id, int index) const
True when objective done.
Definition Tracker.cpp:213
std::string getRewardType(const std::string &id, int i) const
Returns the reward type.
Definition Tracker.cpp:225
std::unordered_map< std::string, QuestRuntime > entries
运行时条目(QuestSystem 读写;公开以便测试与脚本查询)。
Definition Tracker.h:123
std::string getExtra(const std::string &id, const std::string &key) const
Returns the extra.
Definition Tracker.cpp:182
eve::Result< std::string > snapshotJson() const
Serialize persistent quest progress as deterministic versioned JSON.
Definition Tracker.cpp:44
int getObjectiveCount(const std::string &id) const
Returns the objective count.
Definition Tracker.cpp:187
std::string getEventObjectiveId(int i) const
Returns the event objective id.
Definition Tracker.cpp:250
bool hasTag(const std::string &id, const std::string &tag) const
True when tag.
Definition Tracker.cpp:177
eve::Result< void > restoreSnapshotJson(std::string_view json)
Validate and atomically restore quest progress against the current registry.
Definition Tracker.cpp:73
double getRewardAmount(const std::string &id, int i) const
Returns the reward amount.
Definition Tracker.cpp:237
bool fail(const std::string &id, const std::string &reason)
失败任务(compatibility facade (脚本兼容门面))。
Definition Tracker.cpp:35
void notify(const std::string &topic, const std::string &target, int amount)
Notify.
Definition Tracker.cpp:25
std::string getRewardId(const std::string &id, int i) const
Returns the reward id.
Definition Tracker.cpp:231
std::string getObjectiveId(const std::string &id, int index) const
Returns the objective id.
Definition Tracker.cpp:192
int getObjectiveCurrent(const std::string &id, int index) const
Returns the objective current.
Definition Tracker.cpp:199
@ InvalidArgument
@ NotFound
@ UnknownVersion
@ InvariantViolation
@ ParseError
@ Conflict
@ Applied
std::string getExtra(const std::string &key, const std::string &fallback={}) const
Returns the extra.
Definition Quest.cpp:19