属性 / 状态 / 技能三表合一的 ECS 实体。 更多...
#include <RPGActor.h>
类 | |
| struct | Attributes |
| 属性表:任意字符串 -> AttributeValue(base + modifiers)。 更多... | |
| struct | Skills |
| 已学会技能的冷却状态 + 当前读条状态。 更多... | |
| struct | Statuses |
| 状态(buff/debuff)运行时列表 —— ECS 组件,游戏侧常称 Buffs。 更多... | |
Public 成员函数 | |
| void | release () override |
| void | setBaseAttribute (const std::string &attribute, double value) |
便捷成员方法(转发到 AttributeSystem / StatusSystem / SkillSystem)。 提供这一层薄封装主要是为了让脚本可以写 actor.setBaseAttribute(...), 与引擎其他模块(TileLayer / ParticleEmitter 等)的绑定风格保持一致; C++ 侧仍然可以直接使用对应的 *System 静态类。 | |
| double | getBaseAttribute (const std::string &attribute) |
| void | modifyBaseAttribute (const std::string &attribute, double delta) |
| bool | hasAttribute (const std::string &attribute) |
| std::string | addAttributeModifier (const std::string &attribute, const std::string &source, const std::string &op, double value, int priority=0) |
| bool | removeAttributeModifier (const std::string &attribute, const std::string &modifierId) |
| int | removeAttributeModifiersBySource (const std::string &attribute, const std::string &source) |
| int | removeAllAttributeModifiersBySource (const std::string &source) |
| double | getFinalAttribute (const std::string &attribute) |
| int | applyEffect (const std::string &effectId, const std::string &source="") |
| 状态(buff/debuff)—— Statuses ECS 组件的薄封装。 | |
| bool | removeStatus (int instanceId) |
| int | removeStatusByEffect (const std::string &effectId) |
| int | removeStatusBySource (const std::string &source) |
| int | removeStatusByTag (const std::string &tag) |
| bool | hasEffect (const std::string &effectId) |
| bool | hasStatusTag (const std::string &tag) |
| int | getStatusCount () |
| std::string | getStatusEffectId (int index) |
| int | getStatusStacks (int index) |
| float | getStatusRemaining (int index) |
| int | getStatusInstanceId (int index) |
| std::string | getStatusSource (int index) |
| std::string | getStatusProp (int instanceId, const std::string &key, const std::string &fallback={}) |
| bool | setStatusProp (int instanceId, const std::string &key, const std::string &value) |
| int | applyBuff (const std::string &effectId, const std::string &source="") |
| Buff 别名(与 Status API 等价,便于游戏侧按习惯命名)。 | |
| bool | removeBuff (int instanceId) |
| int | removeBuffByEffect (const std::string &effectId) |
| int | removeBuffBySource (const std::string &source) |
| int | removeBuffByTag (const std::string &tag) |
| bool | hasBuff (const std::string &effectId) |
| bool | hasBuffTag (const std::string &tag) |
| int | getBuffCount () |
| std::string | getBuffEffectId (int index) |
| int | getBuffStacks (int index) |
| float | getBuffRemaining (int index) |
| int | getBuffInstanceId (int index) |
| std::string | getBuffSource (int index) |
| std::string | getBuffProp (int instanceId, const std::string &key, const std::string &fallback={}) |
| bool | setBuffProp (int instanceId, const std::string &key, const std::string &value) |
| void | learnSkill (const std::string &skillId) |
| 技能:学习 / 查询 / 冷却。 | |
| bool | knowsSkill (const std::string &skillId) |
| bool | forgetSkill (const std::string &skillId) |
| float | getSkillCooldown (const std::string &skillId) |
| void | setSkillCooldown (const std::string &skillId, float seconds) |
| bool | canCastSkill (const std::string &skillId) |
| std::string | canCastSkillReason (const std::string &skillId) |
| 不能释放的原因("" = 可以)。 | |
| bool | beginCastSkill (const std::string &skillId, RPGActor *target=nullptr) |
| 开始读条释放;false 表示不满足条件。 | |
| void | cancelCastSkill () |
| 取消读条。 | |
| bool | isCastingSkill () |
| 读条状态查询。 | |
| std::string | getCastingSkillId () |
| float | getCastProgress () |
静态 Public 成员函数 | |
| static RPGActor * | createActor () |
| 创建一个空白 actor(三张表均为空,按需惰性写入),并纳入 liveActors() 跟踪。 | |
| static const std::vector< RPGActor * > & | liveActors () |
| 返回所有通过 createActor() 创建、且当前仍存活的 actor。 StatusSystem::update / SkillSystem::update 用它遍历所有 actor 逐帧推进。 直接调用继承自 ENTITY 宏的 RPGActor::create() 不会被跟踪——推荐总是用 createActor()。 | |
详细描述
属性 / 状态 / 技能三表合一的 ECS 实体。
在文件 RPGActor.h 第 28 行定义.
成员函数说明
◆ addAttributeModifier()
| std::string eve::rpg::RPGActor::addAttributeModifier | ( | const std::string & | attribute, |
| const std::string & | source, | ||
| const std::string & | op, | ||
| double | value, | ||
| int | priority = 0 |
||
| ) |
在文件 RPGActor.cpp 第 66 行定义.
引用了 eve::rpg::AttributeSystem::addModifier(), priority , 以及 value.
◆ applyBuff()
| int eve::rpg::RPGActor::applyBuff | ( | const std::string & | effectId, |
| const std::string & | source = "" |
||
| ) |
◆ applyEffect()
| int eve::rpg::RPGActor::applyEffect | ( | const std::string & | effectId, |
| const std::string & | source = "" |
||
| ) |
状态(buff/debuff)—— Statuses ECS 组件的薄封装。
在文件 RPGActor.cpp 第 90 行定义.
引用了 eve::rpg::StatusSystem::apply().
被这些函数引用 applyBuff().
◆ beginCastSkill()
| bool eve::rpg::RPGActor::beginCastSkill | ( | const std::string & | skillId, |
| RPGActor * | target = nullptr |
||
| ) |
◆ canCastSkill()
| bool eve::rpg::RPGActor::canCastSkill | ( | const std::string & | skillId | ) |
在文件 RPGActor.cpp 第 192 行定义.
◆ canCastSkillReason()
| std::string eve::rpg::RPGActor::canCastSkillReason | ( | const std::string & | skillId | ) |
◆ cancelCastSkill()
| void eve::rpg::RPGActor::cancelCastSkill | ( | ) |
◆ createActor()
|
static |
创建一个空白 actor(三张表均为空,按需惰性写入),并纳入 liveActors() 跟踪。
在文件 RPGActor.cpp 第 23 行定义.
被这些函数引用 eve::rpg::RPG::newActor().
◆ forgetSkill()
| bool eve::rpg::RPGActor::forgetSkill | ( | const std::string & | skillId | ) |
在文件 RPGActor.cpp 第 182 行定义.
◆ getBaseAttribute()
| double eve::rpg::RPGActor::getBaseAttribute | ( | const std::string & | attribute | ) |
在文件 RPGActor.cpp 第 54 行定义.
◆ getBuffCount()
| int eve::rpg::RPGActor::getBuffCount | ( | ) |
在文件 RPGActor.cpp 第 155 行定义.
引用了 getStatusCount().
◆ getBuffEffectId()
| std::string eve::rpg::RPGActor::getBuffEffectId | ( | int | index | ) |
在文件 RPGActor.cpp 第 157 行定义.
引用了 getStatusEffectId().
◆ getBuffInstanceId()
| int eve::rpg::RPGActor::getBuffInstanceId | ( | int | index | ) |
在文件 RPGActor.cpp 第 163 行定义.
◆ getBuffProp()
| std::string eve::rpg::RPGActor::getBuffProp | ( | int | instanceId, |
| const std::string & | key, | ||
| const std::string & | fallback = {} |
||
| ) |
在文件 RPGActor.cpp 第 167 行定义.
引用了 getStatusProp().
◆ getBuffRemaining()
| float eve::rpg::RPGActor::getBuffRemaining | ( | int | index | ) |
在文件 RPGActor.cpp 第 161 行定义.
引用了 getStatusRemaining().
◆ getBuffSource()
| std::string eve::rpg::RPGActor::getBuffSource | ( | int | index | ) |
在文件 RPGActor.cpp 第 165 行定义.
引用了 getStatusSource().
◆ getBuffStacks()
| int eve::rpg::RPGActor::getBuffStacks | ( | int | index | ) |
在文件 RPGActor.cpp 第 159 行定义.
引用了 getStatusStacks().
◆ getCastingSkillId()
| std::string eve::rpg::RPGActor::getCastingSkillId | ( | ) |
在文件 RPGActor.cpp 第 210 行定义.
◆ getCastProgress()
| float eve::rpg::RPGActor::getCastProgress | ( | ) |
在文件 RPGActor.cpp 第 212 行定义.
◆ getFinalAttribute()
| double eve::rpg::RPGActor::getFinalAttribute | ( | const std::string & | attribute | ) |
在文件 RPGActor.cpp 第 84 行定义.
◆ getSkillCooldown()
| float eve::rpg::RPGActor::getSkillCooldown | ( | const std::string & | skillId | ) |
在文件 RPGActor.cpp 第 184 行定义.
◆ getStatusCount()
| int eve::rpg::RPGActor::getStatusCount | ( | ) |
◆ getStatusEffectId()
| std::string eve::rpg::RPGActor::getStatusEffectId | ( | int | index | ) |
在文件 RPGActor.cpp 第 114 行定义.
引用了 eve::rpg::StatusSystem::getActiveEffectId().
被这些函数引用 getBuffEffectId().
◆ getStatusInstanceId()
| int eve::rpg::RPGActor::getStatusInstanceId | ( | int | index | ) |
在文件 RPGActor.cpp 第 122 行定义.
引用了 eve::rpg::StatusSystem::getActiveInstanceId().
被这些函数引用 getBuffInstanceId().
◆ getStatusProp()
| std::string eve::rpg::RPGActor::getStatusProp | ( | int | instanceId, |
| const std::string & | key, | ||
| const std::string & | fallback = {} |
||
| ) |
◆ getStatusRemaining()
| float eve::rpg::RPGActor::getStatusRemaining | ( | int | index | ) |
在文件 RPGActor.cpp 第 120 行定义.
引用了 eve::rpg::StatusSystem::getActiveRemaining().
被这些函数引用 getBuffRemaining().
◆ getStatusSource()
| std::string eve::rpg::RPGActor::getStatusSource | ( | int | index | ) |
◆ getStatusStacks()
| int eve::rpg::RPGActor::getStatusStacks | ( | int | index | ) |
◆ hasAttribute()
| bool eve::rpg::RPGActor::hasAttribute | ( | const std::string & | attribute | ) |
在文件 RPGActor.cpp 第 62 行定义.
◆ hasBuff()
| bool eve::rpg::RPGActor::hasBuff | ( | const std::string & | effectId | ) |
在文件 RPGActor.cpp 第 151 行定义.
引用了 hasEffect().
◆ hasBuffTag()
| bool eve::rpg::RPGActor::hasBuffTag | ( | const std::string & | tag | ) |
在文件 RPGActor.cpp 第 153 行定义.
引用了 hasStatusTag().
◆ hasEffect()
| bool eve::rpg::RPGActor::hasEffect | ( | const std::string & | effectId | ) |
◆ hasStatusTag()
| bool eve::rpg::RPGActor::hasStatusTag | ( | const std::string & | tag | ) |
◆ isCastingSkill()
| bool eve::rpg::RPGActor::isCastingSkill | ( | ) |
◆ knowsSkill()
| bool eve::rpg::RPGActor::knowsSkill | ( | const std::string & | skillId | ) |
在文件 RPGActor.cpp 第 180 行定义.
◆ learnSkill()
| void eve::rpg::RPGActor::learnSkill | ( | const std::string & | skillId | ) |
◆ liveActors()
|
static |
返回所有通过 createActor() 创建、且当前仍存活的 actor。 StatusSystem::update / SkillSystem::update 用它遍历所有 actor 逐帧推进。 直接调用继承自 ENTITY 宏的 RPGActor::create() 不会被跟踪——推荐总是用 createActor()。
实现细节:内部按 ecs::EntityHandle(而非裸指针)跟踪,每次调用通过 ecs::try_get 按 (id, generation) 校验是否仍是同一个存活实体—— 这样当一个 actor 被销毁、其 id 槽位被新 actor 复用时,不会把新实体 误判为旧的已销毁实体(裸指针 + is_entity_visible 无法区分这种复用)。
在文件 RPGActor.cpp 第 33 行定义.
引用了 h.
被这些函数引用 eve::rpg::captureRpgState(), eve::rpg::resetRpgState(), eve::rpg::restoreRpgState(), eve::rpg::SkillSystem::update() , 以及 eve::rpg::StatusSystem::update().
◆ modifyBaseAttribute()
| void eve::rpg::RPGActor::modifyBaseAttribute | ( | const std::string & | attribute, |
| double | delta | ||
| ) |
在文件 RPGActor.cpp 第 58 行定义.
◆ release()
|
inlineoverride |
在文件 RPGActor.h 第 32 行定义.
◆ removeAllAttributeModifiersBySource()
| int eve::rpg::RPGActor::removeAllAttributeModifiersBySource | ( | const std::string & | source | ) |
在文件 RPGActor.cpp 第 80 行定义.
引用了 eve::rpg::AttributeSystem::removeAllModifiersBySource().
◆ removeAttributeModifier()
| bool eve::rpg::RPGActor::removeAttributeModifier | ( | const std::string & | attribute, |
| const std::string & | modifierId | ||
| ) |
在文件 RPGActor.cpp 第 71 行定义.
◆ removeAttributeModifiersBySource()
| int eve::rpg::RPGActor::removeAttributeModifiersBySource | ( | const std::string & | attribute, |
| const std::string & | source | ||
| ) |
在文件 RPGActor.cpp 第 75 行定义.
◆ removeBuff()
| bool eve::rpg::RPGActor::removeBuff | ( | int | instanceId | ) |
在文件 RPGActor.cpp 第 139 行定义.
引用了 removeStatus().
◆ removeBuffByEffect()
| int eve::rpg::RPGActor::removeBuffByEffect | ( | const std::string & | effectId | ) |
在文件 RPGActor.cpp 第 141 行定义.
◆ removeBuffBySource()
| int eve::rpg::RPGActor::removeBuffBySource | ( | const std::string & | source | ) |
在文件 RPGActor.cpp 第 145 行定义.
◆ removeBuffByTag()
| int eve::rpg::RPGActor::removeBuffByTag | ( | const std::string & | tag | ) |
在文件 RPGActor.cpp 第 149 行定义.
引用了 removeStatusByTag().
◆ removeStatus()
| bool eve::rpg::RPGActor::removeStatus | ( | int | instanceId | ) |
◆ removeStatusByEffect()
| int eve::rpg::RPGActor::removeStatusByEffect | ( | const std::string & | effectId | ) |
在文件 RPGActor.cpp 第 96 行定义.
引用了 eve::rpg::StatusSystem::removeByEffect().
被这些函数引用 removeBuffByEffect().
◆ removeStatusBySource()
| int eve::rpg::RPGActor::removeStatusBySource | ( | const std::string & | source | ) |
在文件 RPGActor.cpp 第 100 行定义.
引用了 eve::rpg::StatusSystem::removeBySource().
被这些函数引用 removeBuffBySource().
◆ removeStatusByTag()
| int eve::rpg::RPGActor::removeStatusByTag | ( | const std::string & | tag | ) |
◆ setBaseAttribute()
| void eve::rpg::RPGActor::setBaseAttribute | ( | const std::string & | attribute, |
| double | value | ||
| ) |
便捷成员方法(转发到 AttributeSystem / StatusSystem / SkillSystem)。 提供这一层薄封装主要是为了让脚本可以写 actor.setBaseAttribute(...), 与引擎其他模块(TileLayer / ParticleEmitter 等)的绑定风格保持一致; C++ 侧仍然可以直接使用对应的 *System 静态类。
属性访问。
在文件 RPGActor.cpp 第 50 行定义.
引用了 eve::rpg::AttributeSystem::setBase() , 以及 value.
◆ setBuffProp()
| bool eve::rpg::RPGActor::setBuffProp | ( | int | instanceId, |
| const std::string & | key, | ||
| const std::string & | value | ||
| ) |
在文件 RPGActor.cpp 第 172 行定义.
引用了 setStatusProp() , 以及 value.
◆ setSkillCooldown()
| void eve::rpg::RPGActor::setSkillCooldown | ( | const std::string & | skillId, |
| float | seconds | ||
| ) |
在文件 RPGActor.cpp 第 188 行定义.
◆ setStatusProp()
| bool eve::rpg::RPGActor::setStatusProp | ( | int | instanceId, |
| const std::string & | key, | ||
| const std::string & | value | ||
| ) |
在文件 RPGActor.cpp 第 131 行定义.
引用了 eve::rpg::StatusSystem::setProp() , 以及 value.
被这些函数引用 setBuffProp().
该类的文档由以下文件生成:
- src/modules/rpg/RPGActor.h
- src/modules/rpg/RPGActor.cpp