载入中...
搜索中...
未找到
Party.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7#include "common/ECS.h"
8#include "common/Result.h"
9#include "rpg/RPGActor.h"
10
11#include <string>
12#include <string_view>
13#include <vector>
14
15namespace eve::rpg {
16
17class Battle;
18
25public:
32 [[nodiscard]] eve::Result<void> addMember(const std::string &memberId, RPGActor *actor);
34 [[nodiscard]] eve::Result<void> removeMember(const std::string &memberId);
36 void clear();
37
39 int count() const;
41 bool contains(const std::string &memberId) const;
43 bool hasStaleMembers() const;
45 std::string getMemberId(int index) const;
52 RPGActor *getMemberActor(int index) const;
59 RPGActor *findMemberActor(const std::string &memberId) const;
60
66 [[nodiscard]] eve::Result<int> addToBattle(Battle *battle, int side) const;
67
78 [[nodiscard]] eve::Result<int> recoverAtCheckpoint(const std::string &healthResource,
79 double healthRatio,
80 const std::string &secondaryResource = {},
81 double secondaryRatio = 0.0);
82
84 [[nodiscard]] eve::Result<std::string> checkpointJson() const;
89 [[nodiscard]] eve::Result<void> restoreCheckpointJson(std::string_view json);
90
91private:
92 struct Member {
93 std::string id;
94 ecs::EntityHandle actor;
95 };
96 struct CheckpointCandidate {
97 std::vector<RPGActor::CheckpointCandidate> actors;
98 };
99 [[nodiscard]] eve::Result<CheckpointCandidate> prepareCheckpointJson(std::string_view json) const;
100 void commitCheckpoint(CheckpointCandidate candidate) noexcept;
101 std::vector<Member> members_;
102 friend class RPGSaveSession;
103};
104
105} // namespace eve::rpg
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::string id
Definition PlayHost.cpp:108
Move-only, checked operation results for the common layer.
std::uint32_t count
ecs::EntityHandle side
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
一场回合制战斗(任意阵营数)。 @ownership 由调用方创建/销毁;Battle 不持有参与者的所有权(参与者为借用 ECS actor)。 @thread 在单一模拟线程上驱动整场战斗。
Definition Battle.h:54
Authoritative ordered relationship between stable party member IDs and RPG actors....
Definition Party.h:24
属性 / 状态 / 技能三表合一的 ECS 实体。
Definition RPGActor.h:34
A non-owning save boundary for the persistent classic-RPG state owners.
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。