载入中...
搜索中...
未找到
RTSBuildingProduction.cpp
浏览该文件的文档.
10Result<std::size_t> BuildingProductionSystem::step(const SimulationStep& step, const ProductionSpawn& spawn,
15 DiagnosticCode::InvalidArgument, "RTS production step delta must be non-negative", "step.delta"));
27 Building* building = identity == nullptr ? nullptr : dynamic_cast<Building*>(ecs::try_get(identity->self));
37 if (task && task->get().kind == "unit" && task->get().state == production::TaskState::Completed &&
46 clearedEvents.push_back({LifecycleEventKind::ProductionSpawnCleared, identity->subject, {}, {}, 0.0});
60 DiagnosticCode::StaleHandle, "RTS producer disappeared during production settlement", "production"));
91 spawnPosition.value_or(WorldPosition{building->placement()->worldX, building->placement()->worldY});
127 if (transport != nullptr && transport->durability()->alive && transport->containment()->capacity > 0 &&
149 events({LifecycleEventKind::UnitProduced, building->identity()->subject, unit->identity()->subject,
Deterministic phase-one RTS systems and their ECS contracts.
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 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
static Result< std::size_t > step(const SimulationStep &step, const ProductionSpawn &spawn={}, const ProductionSpawnPosition &position={}, const LifecycleEventSink &events={})
Advance all buildings and settle newly completed unit tasks through the game-owned factory.
Definition RTSBuildingProduction.cpp:10
RTS building domain root with placement and production composition.
Definition RTSTypes.h:840
static Result< EntityLink > bind(ecs::EntityHandle handle)
Bind a live ECS handle, rejecting a null or stale handle.
Definition RTSTypes.h:184
static bool isAllied(Faction *left, Faction *right) noexcept
Return true when both live factions are identical or share a team in a common Match.
Definition RTSSystems_Faction.cpp:58
@ Completed
Definition RTS.cpp:24
std::function< void(const LifecycleEvent &, SimulationTick)> LifecycleEventSink
Read-only observer invoked after a non-combat lifecycle transition commits.
Definition RTSSystems.h:127
std::function< Result< ProductionSpawnOutcome >(Building &, const production::ProductionTask &, WorldPosition)> ProductionSpawn
Game-owned factory receiving the requested production exit position. The factory owns final placement...
Definition RTSSystems.h:729
std::function< Result< std::optional< WorldPosition > >(Building &, const production::ProductionTask &)> ProductionSpawnPosition
Game/map-owned deterministic exit probe; empty means every valid exit is currently occupied.
Definition RTSSystems.h:732
@ ProductionSpawnCleared
@ ProductionSpawnBlocked
@ UnitProduced
@ InvalidArgument
@ InvariantViolation
@ Failed
@ StaleHandle
@ Applied
Owning proof that a domain consumer published one task exactly once.
Definition Production.h:46
std::string settlementId
Definition Production.h:47
A subject-agnostic continuous task retained for audit and save games.
Definition Production.h:158