载入中...
搜索中...
未找到
CombatAttributes.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8#include "common/Result.h"
9#include "common/Time.h"
10
11#include <map>
12#include <string>
13#include <string_view>
14#include <utility>
15#include <vector>
16
17namespace eve::combat {
18
21 std::string tag;
22 double initialValue = 0.0;
23 double minimumValue = 0.0;
24 double maximumValue = 0.0;
26
28 [[nodiscard]] Result<void> validate() const;
29};
30
32enum class CombatAttributeEventKind : std::uint8_t { Gain, Loss, Depleted };
33
42
45 std::vector<CombatAttributeEvent> events;
46};
47
56public:
58 explicit CombatAttributeRuntime(std::string subject = {}) : values_(std::move(subject)) {}
59
61 [[nodiscard]] Result<void> registerAttribute(CombatAttributeDefinition definition);
63 [[nodiscard]] Result<double> value(std::string_view tag) const;
65 [[nodiscard]] Result<std::vector<CombatAttributeEvent>> setValue(std::string_view tag, double value);
67 [[nodiscard]] Result<std::vector<CombatAttributeEvent>> modify(std::string_view tag, double delta);
69 [[nodiscard]] Result<CombatAttributeAdvance> advance(Duration delta);
71 [[nodiscard]] std::vector<CombatAttributeDefinition> definitions() const;
72
73private:
74 [[nodiscard]] Result<std::vector<CombatAttributeEvent>> commit(const CombatAttributeDefinition& definition,
75 double newValue);
76
78 std::map<std::string, CombatAttributeDefinition, std::less<>> definitions_;
79};
80
81} // namespace eve::combat
double value
int subject
Definition AnimSmr.cpp:163
#define EVENGINE_API_BACKENDS
Definition Export.h:108
const std::string * tag
Move-only, checked operation results for the common layer.
LogicalId definition
Common time values and an injectable deterministic simulation clock.
const std::map< std::string, Value > & definitions
Signed, fixed-resolution simulation duration in nanoseconds.
Definition Time.h:43
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Generic owning collection of canonical attributes and modifiers.
Owner-thread authoritative combat attribute coordinator.
CombatAttributeRuntime(std::string subject={})
Construct an empty runtime for a stable owning subject id.
CombatAttributeEventKind
Observable reason for a committed combat-attribute change.
Owning result of a deterministic regeneration step.
std::vector< CombatAttributeEvent > events
Data-driven bounds and deterministic regeneration for one combat attribute.
Result< void > validate() const
Validate the gameplay-tag identity, finite bounds and regeneration rate.
Owning event emitted after one attribute mutation commits.
CombatAttributeEventKind kind