载入中...
搜索中...
未找到
Quest.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
13#include "rpg/QuestTypes.h"
14
15#include "common/Result.h"
16
17#include <string>
18#include <unordered_map>
19#include <vector>
20
21namespace eve::rpg {
22
25 std::string id;
27 std::string startPolicy = "manual";
29 std::string completePolicy = "auto";
31 std::vector<std::string> requiresIds;
32 std::vector<QuestObjective> objectives;
33 std::vector<RewardSpec> rewards;
34 std::vector<std::string> tags;
35 std::unordered_map<std::string, std::string> extra;
36
38 bool hasTag(const std::string &tag) const;
40 std::string getExtra(const std::string &key, const std::string &fallback = {}) const;
41};
42
45public:
47 static void registerQuest(const QuestDefinition &def);
54 static const QuestDefinition *find(const std::string &id);
56 static bool remove(const std::string &id);
58 static void clear();
60 static int count();
62 static std::vector<std::string> ids();
64 static bool contains(const std::string &id);
65
67 static int loadFromJson(const std::string &json, std::string *error = nullptr);
68
81 [[nodiscard]] static eve::Result<int> replaceFromJsonStrict(const std::string &json);
82};
83
84} // namespace eve::rpg
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::uint32_t key
glm::uvec4 ids
const std::string * tag
std::string error
Definition Package.cpp:60
RPG 目标追踪器(任务/成就/教程)的纯数据类型。
Move-only, checked operation results for the common layer.
std::uint32_t count
Move-only operation result carrying either a value or Status.
Definition Result.h:155
进程级任务定义注册表。
Definition Quest.h:44
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。
数据驱动的任务模板。
Definition Quest.h:24
std::vector< std::string > tags
Definition Quest.h:34
std::unordered_map< std::string, std::string > extra
Definition Quest.h:35
std::vector< std::string > requiresIds
本 Tracker 上须已 completed 的条目 id,全部 AND。
Definition Quest.h:31
std::vector< QuestObjective > objectives
Definition Quest.h:32
std::vector< RewardSpec > rewards
Definition Quest.h:33