载入中...
搜索中...
未找到
WeaponDefinitionRuntime.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
15#include "common/Snapshot.h"
19#include "weapon/WeaponTypes.h"
20
21#include <string>
22#include <string_view>
23
24namespace eve::weapon {
25
26class Weapon;
27
36
47 float cooldown = 0.f;
49 float burstTimer = 0.f;
50 bool jammed = false;
52 float stageTimer = 0.f;
53 float currentSpread = 0.f;
54 float recoilPitch = 0.f;
55 float recoilYaw = 0.f;
57 bool aiming = false;
58};
59
70public:
79 [[nodiscard]] static eve::Result<WeaponDefinitionRuntime> create(
82
84 [[nodiscard]] static eve::Result<WeaponDefinitionRuntime> create(
85 eve::definitions::DefinitionRegistry& registry, std::string_view definitionId, eve::PersistentId instanceId,
87
89 [[nodiscard]] static eve::Result<WeaponDefinitionRuntime> create(
90 Weapon& module, std::string_view definitionId, eve::PersistentId instanceId,
92
96 WeaponDefinitionRuntime& operator=(WeaponDefinitionRuntime&&) noexcept = default;
101
103 [[nodiscard]] const eve::definition::InstanceIdentity& identity() const noexcept;
105 [[nodiscard]] const WeaponRuntimeState& state() const noexcept;
107 [[nodiscard]] WeaponRuntimeState& state() noexcept;
109 [[nodiscard]] eve::definition::DefinitionHandle definitionHandle() const noexcept;
111 [[nodiscard]] eve::Result<WeaponDefinition> definition() const;
113 [[nodiscard]] eve::definition::ReloadPolicy reloadPolicy() const noexcept { return policy_; }
115 void setActive(bool active) noexcept;
117 [[nodiscard]] bool isActive() const noexcept;
118
128 [[nodiscard]] eve::Result<void> applyTo(WeaponEntity* entity) const;
129
131 [[nodiscard]] eve::Result<eve::definition::ReloadOutcome> reload(eve::definition::ReloadPolicy policy);
132
135 const eve::SnapshotHashProvider& hashProvider) const;
137 [[nodiscard]] eve::Result<std::string> snapshotJson(eve::Revision revision, eve::SimulationTick tick,
138 const eve::SnapshotHashProvider& hashProvider) const;
143 [[nodiscard]] eve::Result<void> restore(const eve::SnapshotEnvelope& snapshot,
144 const eve::SnapshotHashProvider& hashProvider);
145
146private:
147 WeaponDefinitionRuntime(eve::definitions::DefinitionRegistry& registry,
148 eve::definition::RuntimeInstance<WeaponRuntimeState> runtime,
149 eve::definition::ReloadPolicy policy)
150 : registry_(&registry), runtime_(std::move(runtime)), policy_(policy) {}
151
152 eve::definitions::DefinitionRegistry* registry_ = nullptr; // borrowed
155};
156
157} // namespace eve::weapon
bool & active
Common identity and hot-reload contract for typed runtime instances.
#define EVENGINE_API_WORLD
Definition Export.h:109
std::uint64_t revision
Shared SnapshotEnvelope codec for typed definition runtime instances.
Versioned, integrity-checked persistence envelopes.
LogicalId definition
SimulationTick tick
const UnitySourceAsset & source
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
Binds a typed WeaponDefinition to one mutable runtime instance.
WeaponDefinitionRuntime(WeaponDefinitionRuntime &&) noexcept=default
Weapon definition runtime.
武器实体:数据全部在组件里,行为在 WeaponSystem。
武器模块(eve.Weapon)。
Definition Weapon.h:24
ReloadPolicy
Policy used when a live definition is replaced.
@ RebuildInstance
Let the consumer atomically construct a new state from the new definition.
载具模块入口(eve.Vehicle):定义注册 / 实体工厂 / RTS 命令 / 帧调度。 设计文档:docs/dev/通用载具系统设计.md
eve::Result< WeaponDefinition > parseWeaponDefinition(const eve::definitions::Definition &source)
Parse one canonical registry definition into an owning typed snapshot.
AttackStage
攻击阶段。
Definition WeaponTypes.h:62
FireMode
开火模式(热武器保留字段)。
Definition WeaponTypes.h:82
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
One immutable view of a registered versioned JSON definition.
Definition Definitions.h:31
运行时触发资源(实体组件)。
武器模板(registerWeaponsFromJson 注册,进程级注册表)。
Mutable state owned by one typed weapon runtime instance.