载入中...
搜索中...
未找到
VehicleEffects.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10#include "common/Result.h"
11#include "common/SubjectRef.h"
12#include "common/Time.h"
14
15#include <cstdint>
16#include <string>
17#include <vector>
18
19namespace eve::vehicle {
20
22enum class VehicleEffectKind : std::uint8_t { Damage, Repair, Disable };
23
26 double hull = 100.0;
27 double maxHull = 100.0;
28 bool disabled = false;
29 std::uint32_t criticalHits = 0;
30 double frontArmorMultiplier = 0.75;
31 double sideArmorMultiplier = 1.0;
32 double rearArmorMultiplier = 1.25;
33};
34
37 std::string id;
38 std::string source;
39 std::string armorZone = "side";
40 double duration = 0.0;
41 double period = 0.0;
42 double magnitude = 0.0;
45 std::vector<std::string> tags;
46};
47
51 std::uint32_t settled = 0;
52 std::uint32_t criticalHits = 0;
53};
54
60
73
76public:
83 [[nodiscard]] eve::Result<VehicleEffectUpdate> advance(const eve::SimulationStep& step);
85 [[nodiscard]] VehicleEffectSnapshot snapshot() const;
87 [[nodiscard]] eve::Result<void> restore(const VehicleEffectSnapshot& snapshot);
91 [[nodiscard]] VehicleEffectTarget& target() noexcept { return target_; }
93 [[nodiscard]] const VehicleEffectTarget& target() const noexcept { return target_; }
94
95private:
96 effects::EffectContainer container_;
97 VehicleEffectExecutor executor_;
98 VehicleEffectTarget target_;
99};
100
101} // namespace eve::vehicle
LogicalId target
int subject
Definition AnimSmr.cpp:163
Owning effect storage and lifecycle-only executor.
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::unique_ptr< ParticleEffect > effect
PrimitiveHandle handle
Move-only, checked operation results for the common layer.
Stable reference to a runtime gameplay subject.
LogicalId definition
Common time values and an injectable deterministic simulation clock.
float step
Definition TreeMesh.cpp:314
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Strong, domain-neutral reference to a runtime subject.
Definition SubjectRef.h:26
Owns active effect instances and their deterministic lifecycle events.
Vehicle adapter with one common container and one typed executor.
const VehicleEffectTarget & target() const noexcept
Read the target state.
VehicleEffectTarget & target() noexcept
Access the mutable target state.
Vehicle executor applying armor-zone and disable strategies.
eve::Result< VehicleEffectUpdate > settle(VehicleEffectTarget &target, effects::EffectUpdateSummary lifecycle) const
Settle common periodic triggers through vehicle armor policy.
eve::Result< void > validate(const VehicleEffectTarget &target) const
Validate hull and armor invariants.
eve::Result< void > applyImmediate(VehicleEffectTarget &target, const effects::EffectInstance &effect) const
Apply an immediate disable strategy to a staged target.
驾驶者接口与玩家控制状态。
VehicleEffectKind
Vehicle-specific effect strategy.
One deterministic fixed-step emitted by SimulationClock.
Definition Time.h:158
Generation-qualified local reference to a canonical effect instance.
One owned runtime effect fact.
Independent policy dimensions used when applying an effect definition.
Definition EffectTypes.h:53
Summary returned by the lifecycle executor after one simulation step.
Strong vehicle definition projected into the common lifecycle.
std::vector< std::string > tags
In-memory vehicle effect snapshot.
effects::EffectContainer effects
Mutable vehicle state changed by the effect executor.
Result of one vehicle lifecycle step and armor settlement.
effects::EffectUpdateSummary lifecycle