载入中...
搜索中...
未找到
TacticsAction.cpp
浏览该文件的文档.
111 Diagnostic::error(DiagnosticCode::StaleHandle, "tactics action source battle is stale", "unit.battle"));
115action::ActionRequest baseRequest(LogicalId id, ecs::EntityHandle unit, Battle& battle, SimulationTick tick) {
120 request.parameters.emplace("expectedRevision", Value(std::to_string(battle.turn()->revision.value())));
127 const action::ActionDefinition& definition, const action::ActionRequest& request, const sensing::TargetSet* targets,
140 DiagnosticCode::InvalidArgument, "tactics action request requires a source unit", "request.source"));
144 DiagnosticCode::StaleHandle, "tactics action source is stale or has the wrong type", "request.source"));
147 return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(expectedRevision.status());
150 DiagnosticCode::Conflict, "tactics action request was prepared against an older battle revision",
159 if (!layer) return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(layer.status());
162 if (!preview) return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(preview.status());
170 if (!facing) return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(facing.status());
172 if (!preview) return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(preview.status());
174 std::make_unique<PreparedFaceOperation>(battle_, unit->identity()->subject, facing.value(), tick),
178 if (!preview) return Result<std::unique_ptr<action::IActionEffectOperation>>::failure(preview.status());
205Result<action::ActionRequest> makeMoveRequest(ecs::EntityHandle unit, Cell destination, SimulationTick tick) {
208 action::ActionRequest request = baseRequest(*LogicalId::parse("tactics:move"), unit, *owners.value().second, tick);
215Result<action::ActionRequest> makeFaceRequest(ecs::EntityHandle unit, int facing, SimulationTick tick) {
218 action::ActionRequest request = baseRequest(*LogicalId::parse("tactics:face"), unit, *owners.value().second, tick);
EVEngine assertion entry point, backed by zeroerr.
#define EV_ASSERT(cond,...)
Assert an internal engine invariant (state that must always hold).
Definition Assert.h:37
Tactics movement adapter for shared ActionRuntime.
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
static std::optional< LogicalId > parse(std::string_view text)
Parses a scoped logical name.
Definition Identity.cpp:36
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
Owning target result containing primary-independent subjects and optional geometry.
Definition Targeting.h:384
static Result< MoveReceipt > previewMove(Battle &battle, SubjectRef actor, Cell destination)
Preview movement with the exact validator used by commit, without mutation.
Definition TacticsBattle.cpp:718
static Result< void > faceUnit(Battle &battle, SubjectRef actor, int facing)
Change the active unit's logical facing without consuming movement points.
Definition TacticsBattle.cpp:627
static Result< void > previewFace(Battle &battle, SubjectRef actor, int facing)
Preview a facing action with the exact validator used by commit.
Definition TacticsBattle.cpp:656
static Result< void > waitUnit(Battle &battle, SubjectRef actor)
Commit a wait action and enter TurnEnd for the active unit.
Definition TacticsBattle.cpp:678
static Result< MoveReceipt > moveUnit(Battle &battle, SubjectRef actor, Cell destination)
Validate and atomically commit movement for the active unit.
Definition TacticsBattle.cpp:585
static Result< void > previewWait(Battle &battle, SubjectRef actor)
Preview a wait action with the exact validator used by commit.
Definition TacticsBattle.cpp:706
Result< std::unique_ptr< action::IActionEffectOperation > > prepare(const action::ActionDefinition &definition, const action::ActionRequest &request, const sensing::TargetSet *targets, SimulationTick tick) override
Prepare the active operation once without applying its effect.
Definition TacticsAction.cpp:126
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
Definition Interaction.cpp:13
Result< action::ActionRequest > makeMoveRequest(ecs::EntityHandle unit, Cell destination, SimulationTick tick)
Build a checked move request using canonical integer cell parameters.
Definition TacticsAction.cpp:205
action::ActionDefinition faceActionDefinition()
Build the canonical zero-duration tactics facing action definition.
Definition TacticsAction.cpp:191
Result< action::ActionRequest > makeWaitRequest(ecs::EntityHandle unit, SimulationTick tick)
Build a checked wait request with optimistic battle revision.
Definition TacticsAction.cpp:223
action::ActionDefinition moveActionDefinition()
Build the canonical zero-duration tactics move action definition.
Definition TacticsAction.cpp:184
action::ActionDefinition waitActionDefinition()
Build the canonical zero-duration tactics wait action definition.
Definition TacticsAction.cpp:198
Result< action::ActionRequest > makeFaceRequest(ecs::EntityHandle unit, int facing, SimulationTick tick)
Build a checked facing request with optimistic battle revision.
Definition TacticsAction.cpp:215
@ InvalidArgument
@ StaleHandle
@ Conflict
@ Applied
detail::StrongUint64< detail::SimulationTickTag > SimulationTick
Deterministic simulation time step; it is not wall-clock time.
Definition Time.h:31
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
Immutable-by-convention definition of one action kind.
Definition Action.h:90
One caller-owned request to instantiate an action execution.
Definition Action.h:127
Logical board coordinate independent of rendering projection.
Definition TacticsTypes.h:30