载入中...
搜索中...
未找到
ActionDamageSink.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8#include "combat/Damage.h"
10
11#include <functional>
12#include <optional>
13
14namespace eve::combat {
15
16class CombatActionWindowState;
17
25using ActionCombatStateResolver = std::function<OptionalRef<CombatState>(ecs::EntityHandle)>;
26
35public:
39 ~CombatActionDamageSink() override;
40
42 void setEnabled(bool enabled);
47 void setWindowState(const CombatActionWindowState& state) noexcept;
49 void clearWindowState() noexcept;
51 [[nodiscard]] bool enabled() const;
54 [[nodiscard]] bool supports(ecs::EntityHandle target) const override;
57 [[nodiscard]] Result<void> apply(const action::ActionDamageBinding& binding,
58 const action::ActionNotifyContext& context) override;
60 [[nodiscard]] std::optional<DamageOutcome> lastOutcome() const;
61
62private:
64 DamageRuntime runtime_;
65 std::optional<DamageOutcome> lastOutcome_;
66 const CombatActionWindowState* windowState_ = nullptr;
67};
68
69} // namespace eve::combat
Typed instantaneous combat-damage action contract.
LogicalId target
Vocabulary aliases for nullable and checked borrowed references.
Deterministic damage, poise, hit-reaction and knockback resolution.
#define EVENGINE_API_BACKENDS
Definition Export.h:108
eve::action::ActionVfxBinding binding
const VegetationPresetContext & context
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Optional target-domain adapter for timeline damage.
Explicitly registered bridge from Action damage blocks to DamageRuntime.
Authoritative combat projection of active Montage hitbox and invulnerability windows.
Owner-thread deterministic damage coordinator.
Definition Damage.h:125
std::function< OptionalRef< CombatState >(ecs::EntityHandle)> ActionCombatStateResolver
Resolves a borrowed mutable CombatState for one live ECS handle.
bool enabled
Owning validated damage request authored on an action timeline.
Context linking a routed event to its action execution.