载入中...
搜索中...
未找到
WeaponAction.cpp
浏览该文件的文档.
19 eve::DiagnosticCode::InvalidArgument, "weapon id cannot form a valid action logical id", "weapon.id"));
51 if (!std::isfinite(amount) || amount <= 0.0 || std::floor(amount) != amount || amount >= std::ldexp(1.0, 63))
56 auto cost = eve::resource::CostSpec::single(resourceName(weapon.resource.kind), static_cast<std::int64_t>(amount));
58 return eve::Result<std::optional<eve::resource::CostSpec>>::success(std::move(cost).takeValue());
65void put(eve::Value::Object& object, const char* key, int value) { object.emplace(key, eve::Value(value)); }
76 const WeaponDefinition& weapon, const AttackRequest& attack, eve::resource::IResourceAccount& account,
77 eve::transaction::ITransactionParticipant& effect, eve::SimulationTick tick, std::string transactionId) {
79 if (!definition) return eve::Result<eve::transaction::TransactionReceipt>::failure(definition.status());
81 if (!request) return eve::Result<eve::transaction::TransactionReceipt>::failure(request.status());
93 if (!submitted) return eve::Result<eve::transaction::TransactionReceipt>::failure(submitted.status());
101 auto total = submittedExecution->definition().timing.windup.tryAdd(submittedExecution->definition().timing.active);
107 if (!advanced) return eve::Result<eve::transaction::TransactionReceipt>::failure(advanced.status());
114 return eve::Result<eve::transaction::TransactionReceipt>::success(*execution->transactionReceipt(),
128 const WeaponDefinition& weapon, const AttackRequest& attack, eve::resource::IResourceAccount& account,
133eve::Result<action::ActionDefinition> WeaponActionAdapter::makeDefinition(const WeaponDefinition& weapon,
151 definition.targetingMode = request.hasTarget ? action::TargetingMode::Explicit : action::TargetingMode::None;
Weapon Attack to renderer-independent Action adapter.
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< Duration > fromSeconds(double seconds)
Convert finite seconds to the nearest nanosecond.
Definition Time.cpp:16
static std::optional< LogicalId > fromParts(std::string_view namespaceName, std::string_view name)
Builds a logical ID from separate namespace and name components.
Definition Identity.cpp:48
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static eve::Result< CostSpec > single(std::string_view resource, std::int64_t amount)
Build a one-resource cost.
Definition ResourceAccount.cpp:117
Provider-neutral resource account contract.
Definition ResourceAccount.h:316
Synchronous participant contract for one coordinator transaction.
Definition Transaction.h:128
static eve::Result< std::optional< eve::resource::CostSpec > > resourceCost(const WeaponDefinition &weapon)
Convert the weapon trigger resource into a canonical cost.
Definition WeaponAction.cpp:69
static eve::Result< action::ActionDefinition > makeDefinition(const WeaponDefinition &weapon, const AttackRequest &request)
Build an action definition for one attack request.
Definition WeaponAction.cpp:133
static eve::Result< eve::transaction::TransactionReceipt > fire(const WeaponDefinition &weapon, eve::resource::IResourceAccount &account, eve::transaction::ITransactionParticipant &effect, std::string transactionId={})
Execute one already-built weapon effect and charge its resource atomically.
Definition WeaponAction.cpp:120
static eve::Result< action::ActionRequest > makeRequest(const WeaponDefinition &weapon, const AttackRequest &attack, std::optional< ecs::EntityHandle > source=std::nullopt, eve::SimulationTick requestedTick=eve::SimulationTick::zero())
Build a request carrying the original weapon attack parameters.
Definition WeaponAction.cpp:165
@ Completed
@ Explicit
The request already owns the selected ECS target handles.
载具模块入口(eve.Vehicle):定义注册 / 实体工厂 / RTS 命令 / 帧调度。 设计文档:docs/dev/通用载具系统设计.md
Definition RTSArchetype.h:10
@ Charges
@ Stamina
@ InvalidArgument
@ InvariantViolation
detail::StrongUint64< detail::SimulationTickTag > SimulationTick
Deterministic simulation time step; it is not wall-clock time.
Definition Time.h:31
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
Borrowed composition ports used by one ActionRuntime owner.
Definition Action.h:351
transaction::ITransactionParticipant * transactionEffect
Optional common transaction effect participant.
Definition Action.h:367
resource::IResourceAccount * transactionAccount
Account paired with transactionEffect for a cost-bearing action.
Definition Action.h:369
一次攻击请求(C++ 系统 / 脚本发起)。角度均为度。 旧名 FireRequest 保留为别名,向后兼容。
Definition WeaponTypes.h:204