载入中...
搜索中...
未找到
Tracker.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
13#include "rpg/QuestTypes.h"
14#include "common/Result.h"
15
16#include <string>
17#include <string_view>
18#include <unordered_map>
19#include <vector>
20
21namespace eve::rpg {
22
23class QuestSystem;
24
27public:
29 Tracker();
31 ~Tracker() = default;
32
34 void syncAuto();
35
37 bool activate(const std::string &id);
39 bool canActivate(const std::string &id);
41 std::string canActivateReason(const std::string &id);
43 void notify(const std::string &topic, const std::string &target, int amount);
45 bool claim(const std::string &id);
47 bool reset(const std::string &id);
49 bool abandon(const std::string &id);
51 bool fail(const std::string &id, const std::string &reason);
52
54 void pollEvents();
55
64 [[nodiscard]] eve::Result<std::string> snapshotJson() const;
65
76 [[nodiscard]] eve::Result<void> restoreSnapshotJson(std::string_view json);
77
78 int getCount() const;
80 std::string getId(int index) const;
82 std::string getState(const std::string &id) const;
84 bool hasTag(const std::string &id, const std::string &tag) const;
86 std::string getExtra(const std::string &id, const std::string &key) const;
88 int getObjectiveCount(const std::string &id) const;
90 std::string getObjectiveId(const std::string &id, int index) const;
92 int getObjectiveCurrent(const std::string &id, int index) const;
94 int getObjectiveCountRequired(const std::string &id, int index) const;
96 bool isObjectiveDone(const std::string &id, int index) const;
98 int getRewardCount(const std::string &id) const;
100 std::string getRewardType(const std::string &id, int i) const;
102 std::string getRewardId(const std::string &id, int i) const;
104 double getRewardAmount(const std::string &id, int i) const;
106 int getEventCount() const;
108 std::string getEventEntryId(int i) const;
110 std::string getEventObjectiveId(int i) const;
112 std::string getEventAction(int i) const;
114 std::string getEventTopic(int i) const;
116 std::string getEventTarget(int i) const;
118 int getEventAmount(int i) const;
120 std::string getEventReason(int i) const;
121
123 std::unordered_map<std::string, QuestRuntime> entries;
124 std::vector<std::string> order;
125 std::vector<QuestEvent> pending;
126 std::vector<QuestEvent> polled;
127};
128
129} // namespace eve::rpg
LogicalId target
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::uint32_t key
const std::string * tag
RPG 目标追踪器(任务/成就/教程)的纯数据类型。
Move-only, checked operation results for the common layer.
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
一份任务进度 + 本实例事件队列。
Definition Tracker.h:26
~Tracker()=default
Tracker.
std::unordered_map< std::string, QuestRuntime > entries
运行时条目(QuestSystem 读写;公开以便测试与脚本查询)。
Definition Tracker.h:123
std::vector< std::string > order
Definition Tracker.h:124
std::vector< QuestEvent > pending
Definition Tracker.h:125
std::vector< QuestEvent > polled
Definition Tracker.h:126
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。