载入中...
搜索中...
未找到
Weapon.cpp
浏览该文件的文档.
244bool Weapon::hasWeaponDefinition(const std::string& id) { return definitionRegistry_.resolve("weapon", id).ok(); }
353WeaponEntity* Weapon::rigGetWeapon(WeaponRigEntity* rig) { return rig == nullptr ? nullptr : rig->state()->weapon; }
355void Weapon::rigSetPose(WeaponRigEntity* rig, float px, float py, float pz, float rx, float ry, float rz) {
369AmmoPoolEntity* Weapon::newAmmoPool(const std::string& id, const std::string& ammoType, int max) {
387int Weapon::ammoPoolGetCount(AmmoPoolEntity* pool) { return pool == nullptr ? 0 : pool->state()->count; }
399AmmoPoolEntity* Weapon::getAmmoPool(WeaponEntity* w) { return w == nullptr ? nullptr : w->state()->ammoPool; }
411WeaponEntity* Weapon::mountGetWeapon(WeaponMountEntity* m) { return m == nullptr ? nullptr : m->state()->weapon; }
413void Weapon::mountSetLimits(WeaponMountEntity* m, float yawMin, float yawMax, float pitchMin, float pitchMax,
448bool Weapon::fire(WeaponEntity* w, const FireRequest& req) { return w != nullptr && WeaponSystem::tryFire(*w, req); }
538float Weapon::getSpread(WeaponEntity* w) { return w != nullptr ? w->state()->currentSpread : 0.f; }
540float Weapon::getRecoilPitch(WeaponEntity* w) { return w != nullptr ? w->state()->recoilPitch : 0.f; }
542float Weapon::getRecoilYaw(WeaponEntity* w) { return w != nullptr ? w->state()->recoilYaw : 0.f; }
567 return (index >= 0 && index < getEventCount()) ? weaponEventTypeName(events_[index].type) : std::string{};
622float Weapon::getResourceValue(WeaponEntity* w) const { return w != nullptr ? w->state()->resource.value : 0.f; }
634 "WeaponEntity", std::function<WeaponEntity*()>([]() -> WeaponEntity* { return nullptr; }), false);
636 wCls.addFunc("getId", [](WeaponEntity* w) -> std::string { return w ? w->identity()->id : std::string{}; });
637 wCls.addFunc("getDefId", [](WeaponEntity* w) -> std::string { return w ? w->identity()->defId : std::string{}; });
638 wCls.addFunc("getOwnerId", [](WeaponEntity* w) -> int { return w ? w->identity()->ownerId : 0; });
645 wCls.addFunc("getReserveAmmo", [](WeaponEntity* w) -> int { return w ? w->state()->resource.reserve : 0; });
646 wCls.addFunc("getResourceValue", [](WeaponEntity* w) -> float { return w ? w->state()->resource.value : 0.f; });
647 wCls.addFunc("getSpread", [](WeaponEntity* w) -> float { return w ? w->state()->currentSpread : 0.f; });
648 wCls.addFunc("getRecoilPitch", [](WeaponEntity* w) -> float { return w ? w->state()->recoilPitch : 0.f; });
649 wCls.addFunc("getRecoilYaw", [](WeaponEntity* w) -> float { return w ? w->state()->recoilYaw : 0.f; });
666 wCls.addFunc("isAiming", [](WeaponEntity* w) -> bool { return w != nullptr && w->state()->aiming; });
682 [](WeaponEntity* w) -> AmmoPoolEntity* { return w != nullptr ? w->state()->ammoPool : nullptr; });
686 wCls.addFunc("isReloading", [](WeaponEntity* w) -> bool { return w != nullptr && w->state()->resource.reloading; });
687 wCls.addFunc("getCooldown", [](WeaponEntity* w) -> float { return w ? w->state()->cooldown : 0.f; });
690 wCls.addFunc("canFire", [](WeaponEntity* w) -> bool { return w != nullptr && WeaponSystem::canFire(*w); });
727 "WeaponMountEntity", std::function<WeaponMountEntity*()>([]() -> WeaponMountEntity* { return nullptr; }),
730 mCls.addFunc("getId", [](WeaponMountEntity* m) -> std::string { return m ? m->identity()->id : std::string{}; });
734 [](WeaponMountEntity* m) -> std::string { return m ? m->identity()->nodePath : std::string{}; });
738 mCls.addFunc("getWeapon", [](WeaponMountEntity* m) -> WeaponEntity* { return m ? m->state()->weapon : nullptr; });
739 mCls.addFunc("getYaw", [](WeaponMountEntity* m) -> float { return m ? m->state()->yaw : 0.f; });
740 mCls.addFunc("getPitch", [](WeaponMountEntity* m) -> float { return m ? m->state()->pitch : 0.f; });
741 mCls.addFunc("isDestroyed", [](WeaponMountEntity* m) -> bool { return m != nullptr && m->state()->destroyed; });
760 "WeaponRigEntity", std::function<WeaponRigEntity*()>([]() -> WeaponRigEntity* { return nullptr; }), false);
762 rCls.addFunc("getId", [](WeaponRigEntity* r) -> std::string { return r ? r->identity()->id : std::string{}; });
770 rCls.addFunc("getWeapon", [](WeaponRigEntity* r) -> WeaponEntity* { return r ? r->state()->weapon : nullptr; });
776 rCls.addFunc("setPose", [](WeaponRigEntity* r, float px, float py, float pz, float rx, float ry, float rz) {
787 "AmmoPoolEntity", std::function<AmmoPoolEntity*()>([]() -> AmmoPoolEntity* { return nullptr; }), false);
789 pCls.addFunc("getId", [](AmmoPoolEntity* p) -> std::string { return p ? p->identity()->id : std::string{}; });
Owning, renderer-independent dynamic values.
Selective canonical mana/stamina adapter for weapons.
Strongly typed Weapon definition/runtime adapter.
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
eve::ResultRef< const Definition > resolve(const std::string &type, const std::string &id) const
Resolves a definition through the common registry API.
Definition Definitions.cpp:313
eve::Result< DefinitionHandle > insert(const std::string &type, const std::string &id, int version, const std::string &json)
Inserts a definition using the common generation-qualified registry.
Definition Definitions.cpp:257
eve::Result< DefinitionHandle > replace(const std::string &type, const std::string &id, int version, const std::string &json)
Replaces a live definition and invalidates its previous handle.
Definition Definitions.cpp:276
eve::Result< DefinitionHandle > remove(const std::string &type, const std::string &id)
Removes a definition and returns the retained tombstone handle.
Definition Definitions.cpp:295
int countType(const std::string &type) const
Returns the number of definitions registered for a type.
Definition Definitions.cpp:349
const Definition * atType(const std::string &type, int index) const
Returns a definition by id order within one type, or nullptr.
Definition Definitions.cpp:364
static void update(WeaponEntity &w, float dt)
每帧推进:冷却 / 连发 / 装填 / 炮口旋转 / 逻辑自身。
Definition WeaponSystem.cpp:387
static void setEventSink(WeaponEventSink sink)
注册事件汇(替换旧的;传 nullptr 清空)。
Definition WeaponSystem.cpp:383
static bool tryFire(WeaponEntity &w, const FireRequest &req)
尝试开火;满足条件时扣弹药、调逻辑、推事件并返回 true。
Definition WeaponSystem.cpp:397
bool fireAt(WeaponEntity *w, float x, float y, float z, int shooterId=0)
向目标点开火(自动生成 FireRequest)。
Definition Weapon.cpp:450
WeaponEntity * mountGetWeapon(WeaponMountEntity *m)
Returns the weapon mounted on a mount, or null when empty.
Definition Weapon.cpp:411
bool attack(WeaponEntity *w, float yaw, float pitch, int shooterId=0)
触发展开攻击(近战/法杖/导弹走阶段机;热武器等价 fire)。
Definition Weapon.cpp:461
bool mountAttachWeapon(WeaponMountEntity *m, WeaponEntity *w)
挂点操作:挂武器 / 取武器 / 限位 / 瞄准 / 击毁。
Definition Weapon.cpp:405
AmmoPoolEntity * getAmmoPool(WeaponEntity *w)
Returns the weapon's shared ammunition pool, or null when unbound.
Definition Weapon.cpp:399
void mountSetLimits(WeaponMountEntity *m, float yawMin, float yawMax, float pitchMin, float pitchMax, float rotSpeed, float firingArc)
Mounts set limits.
Definition Weapon.cpp:413
std::string getStage(WeaponEntity *w) const
武器当前阶段("idle"|"windup"|"active"|"recover")。
Definition Weapon.cpp:618
bool setFireMode(WeaponEntity *w, const std::string &mode)
运行时射击模式切换(safe/semi/auto)。
Definition Weapon.cpp:490
std::string getWeaponDefinitionLogic(const std::string &id)
Returns the weapon definition logic.
Definition Weapon.cpp:246
float getWeaponDefinitionRange(const std::string &id)
Returns the weapon definition range.
Definition Weapon.cpp:264
bool fire(WeaponEntity *w, const FireRequest &req)
武器操作(脚本便捷入口,转发 WeaponSystem)。
Definition Weapon.cpp:448
WeaponRigEntity * newRig(const std::string &id, const std::string &wield="right_hand")
创建一个手持位(ARPG/RPG 角色手持武器)。
Definition Weapon.cpp:335
std::string getSelectableMode(WeaponEntity *w, int index)
Returns the selectable mode.
Definition Weapon.cpp:514
WeaponMountEntity * newMount(const std::string &id, const std::string &type="turret")
创建一个挂点(炮塔/机枪座等)。
Definition Weapon.cpp:327
bool setAiming(WeaponEntity *w, bool aiming)
开镜(ADS):切换 aiming 状态并推 aim_in/aim_out 事件。
Definition Weapon.cpp:520
AmmoPoolEntity * newAmmoPool(const std::string &id, const std::string &ammoType, int max=-1)
共享弹药池操作:创建 / 补弹 / 查询 / 绑定武器 / 解绑 / 取绑定池。
Definition Weapon.cpp:369
int registerWeaponsFromJson(const std::string &json)
从 JSON 注册武器模板;返回成功注册数量。
Definition Weapon.cpp:182
bool rigAttachWeapon(WeaponRigEntity *rig, WeaponEntity *w)
手持位操作:挂武器 / 取武器 / 设置持有位姿。
Definition Weapon.cpp:347
void mountAimAt(WeaponMountEntity *m, float yaw, float pitch)
按限位夹取目标角并写入挂载武器的瞄准目标(角度,度)。
Definition Weapon.cpp:424
float getWeaponDefinitionDamage(const std::string &id)
Returns the weapon definition damage.
Definition Weapon.cpp:255
WeaponEntity * newWeapon(const std::string &defId)
工厂:对象由 ECS 表持有,脚本持有的是非拥有句柄。
Definition Weapon.cpp:287
void rigSetPose(WeaponRigEntity *rig, float px, float py, float pz, float rx, float ry, float rz)
Rig set pose.
Definition Weapon.cpp:355
std::string getEventDamageType(int index) const
Returns the event damage type.
Definition Weapon.cpp:610
载具模块入口(eve.Vehicle):定义注册 / 实体工厂 / RTS 命令 / 帧调度。 设计文档:docs/dev/通用载具系统设计.md
Definition RTSArchetype.h:10
@ Custom
@ Ranged
@ Missile
const char * weaponKindName(WeaponKind kind)
武器形态的字符串名("melee" | "ranged" | "magic" | "missile" | "custom")。
Definition Weapon.cpp:86
eve::Result< WeaponDefinition > parseWeaponDefinition(const eve::definitions::Definition &source)
Parse one canonical registry definition into an owning typed snapshot.
Definition WeaponDefinitionRuntime.cpp:409
WeaponKind weaponKindFromName(const std::string &name)
从字符串解析武器形态;未知名字回退 Ranged。
Definition Weapon.cpp:97
void exposeCombatCarrierModuleMethods(ssq::Class &cls)
Register Weapon module methods that create owned carrier runtimes.
Definition CombatCarrierScript.cpp:598
@ Windup
@ Active
@ Recover
void exposeCombatCarrierBindings(ssq::Table &table)
Expose CombatCarrierRuntime class bindings under the shared eve table.
Definition CombatCarrierScript.cpp:508
@ Single
@ Burst
const char * fireModeName(FireMode mode)
开火模式的字符串名("single" | "burst" | "auto")。
Definition Weapon.cpp:71
@ WindupStart
@ ReloadStart
@ ReloadEnd
@ AttackEnd
const char * attackStageName(AttackStage stage)
攻击阶段的字符串名("idle" | "windup" | "active" | "recover")。
Definition Weapon.cpp:105
@ NotFound
detail::StrongUint64< detail::SchemaVersionTag > SchemaVersion
Persistent data-format version; not a runtime replacement generation.
Definition SchemaVersion.h:13
void registerCppEntityView(const ssq::Class &cls, CppEntityViewFn fn)
Registers cpp entity view.
Definition ECS.cpp:861
Definition Container.h:602
One immutable view of a registered versioned JSON definition.
Definition Definitions.h:31
一次攻击请求(C++ 系统 / 脚本发起)。角度均为度。 旧名 FireRequest 保留为别名,向后兼容。
Definition WeaponTypes.h:204