载入中...
搜索中...
未找到
SkillDefinitionRuntime.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
14#include "common/Snapshot.h"
18#include "rpg/Skill.h"
19
20#include <string>
21#include <string_view>
22
23namespace eve::rpg {
24
25class RPGActor;
26
29 float cooldownRemaining = 0.f;
30 bool learned = true;
31};
32
43public:
52 [[nodiscard]] static eve::Result<SkillDefinitionRuntime> create(
55
57 [[nodiscard]] static eve::Result<SkillDefinitionRuntime> create(
58 eve::PersistentId instanceId, std::string_view skillId,
60
64 SkillDefinitionRuntime& operator=(SkillDefinitionRuntime&&) noexcept = default;
69
71 [[nodiscard]] const eve::definition::InstanceIdentity& identity() const noexcept;
73 [[nodiscard]] const SkillRuntimeState& state() const noexcept;
75 [[nodiscard]] SkillRuntimeState& state() noexcept;
77 [[nodiscard]] eve::definition::DefinitionHandle definitionHandle() const noexcept;
79 [[nodiscard]] eve::Result<SkillDefinition> definition() const;
81 [[nodiscard]] eve::definition::ReloadPolicy reloadPolicy() const noexcept { return policy_; }
83 void setActive(bool active) noexcept;
85 [[nodiscard]] bool isActive() const noexcept;
86
93 [[nodiscard]] eve::Result<void> applyTo(RPGActor* actor) const;
94
96 [[nodiscard]] eve::Result<eve::definition::ReloadOutcome> reload(eve::definition::ReloadPolicy policy);
97
106 const eve::SnapshotHashProvider& hashProvider) const;
107
109 [[nodiscard]] eve::Result<std::string> snapshotJson(eve::Revision revision, eve::SimulationTick tick,
110 const eve::SnapshotHashProvider& hashProvider) const;
111
117 [[nodiscard]] eve::Result<void> restore(const eve::SnapshotEnvelope& snapshot,
118 const eve::SnapshotHashProvider& hashProvider);
119
120private:
121 SkillDefinitionRuntime(eve::definitions::DefinitionRegistry& registry,
122 eve::definition::RuntimeInstance<SkillRuntimeState> runtime,
123 eve::definition::ReloadPolicy policy)
124 : registry_(&registry), runtime_(std::move(runtime)), policy_(policy) {}
125
126 eve::definitions::DefinitionRegistry* registry_ = nullptr; // borrowed
129};
130
131} // namespace eve::rpg
bool & active
Common identity and hot-reload contract for typed runtime instances.
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::uint64_t revision
Shared SnapshotEnvelope codec for typed definition runtime instances.
Versioned, integrity-checked persistence envelopes.
LogicalId definition
SimulationTick tick
const std::map< std::string, Value > & definitions
Stable definition reference backed by LogicalId.
Definition ResourceRef.h:85
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Owns one strongly typed runtime state and its definition identity.
Deterministic registry of topic-neutral, versioned JSON definitions.
Definition Definitions.h:58
Id128 public API.
Definition Identity.h:112
属性 / 状态 / 技能三表合一的 ECS 实体。
Definition RPGActor.h:34
Typed SkillDefinition-to-runtime adapter.
SkillDefinitionRuntime(SkillDefinitionRuntime &&) noexcept=default
Skill definition runtime.
ReloadPolicy
Policy used when a live definition is replaced.
@ RebuildInstance
Let the consumer atomically construct a new state from the new definition.
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
std::function< Result< ContentId >(std::string_view canonicalInput)> SnapshotHashProvider
Injected content-digest implementation used by snapshots.
Definition Snapshot.h:36
Stable outer format shared by persistence and cross-process snapshots.
Definition Snapshot.h:46
SkillDefinition public API.
Definition Skill.h:28
Mutable state belonging to one learned skill instance.