载入中...
搜索中...
未找到
AbilityController.cpp
浏览该文件的文档.
2
3#include "common/Diagnostic.h"
4
5#include <utility>
6
7namespace eve::action {
8
10 if (intent.grantId.isZero())
12 Diagnostic::error(DiagnosticCode::InvalidArgument, "Ability intent grant id must be non-zero", "grantId"));
13 intents_.push_back(std::move(intent));
15}
16
18 if (intents_.empty())
20 AbilityIntent intent = std::move(intents_.front());
21 intents_.pop_front();
22 return Result<std::optional<AbilityIntent>>::success(std::move(intent));
23}
24
27 auto next = source.nextIntent(tick);
28 if (!next) return Result<std::optional<AbilityActivation>>::failure(next.status());
29 if (!next.value())
31
32 AbilityIntent intent = std::move(*next.value());
33 intent.request.requestedTick = tick;
34 auto activation = abilities_.activate(intent.grantId, std::move(intent.request), tick);
35 if (!activation) return Result<std::optional<AbilityActivation>>::failure(activation.status());
36 return Result<std::optional<AbilityActivation>>::success(std::move(activation).takeValue(),
38}
39
40} // namespace eve::action
Shared player and AI ability-intent routing.
Stable, structured diagnostics shared by engine modules.
SimulationTick tick
const UnitySourceAsset & source
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
Move-only operation result carrying either a value or Status.
Definition Result.h:155
static Result success(T value)
Construct a successful result owning value.
Definition Result.h:164
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Result< std::optional< AbilityActivation > > processNext(IAbilityIntentSource &source, SimulationTick tick)
Pull and activate at most one intent using the supplied deterministic tick.
Result< AbilityActivation > activate(AbilityGrantId grantId, ActionRequest request, SimulationTick tick)
Submit an activation after cooldown, instancing and group checks.
Pull boundary shared by player input queues and AI decision adapters.
Result< void > enqueue(AbilityIntent intent)
Append an owning player intent; zero grant ids are rejected.
Result< std::optional< AbilityIntent > > nextIntent(SimulationTick tick) override
Consume the oldest queued player intent, if any.
constexpr bool isZero() const noexcept
Returns whether this value is zero.
Owning request to activate one granted ability.
SimulationTick requestedTick
Simulation tick at which the request entered the pipeline.
Definition Action.h:145