#include <StatusSystem.h>
Public 类型 | |
| using | ApplyCondition = std::function< bool(RPGActor *actor, const EffectDefinition &def, const std::string &source, std::string &outReason)> |
| 施加前条件:返回 false 表示拒绝施加。 全部已注册条件按注册表遍历(AND);任一失败则 apply 返回 -1 并产生 action="reject" 事件。 | |
| using | StackPolicyFn = std::function< int(RPGActor *actor, StatusInstance &existing, const EffectDefinition &def, const std::string &source)> |
| 自定义叠加策略:当已存在同 effectId 实例且 stackPolicy 名命中本注册表时调用。 返回值约定与 apply() 相同(-1 拒绝 / >0 实例 id)。策略内部可改写 stacks/remaining, 并应在需要时自行调用 AttributeSystem 或依赖 StatusSystem 后续的 modifier 刷新。 返回后若实例仍在列表中且 period<=0,StatusSystem 会按新 stacks 重写属性修改器。 | |
| using | LifecycleHook = std::function< void(const StatusChangeEvent &ev)> |
| 生命周期钩子:每次产生 StatusChangeEvent 时同步回调(在事件入队之后)。 | |
静态 Public 成员函数 | |
| static void | registerApplyCondition (const std::string &name, ApplyCondition fn) |
| static void | unregisterApplyCondition (const std::string &name) |
| static bool | hasApplyCondition (const std::string &name) |
| static void | clearApplyConditions () |
| static void | registerStackPolicy (const std::string &name, StackPolicyFn fn) |
| static void | unregisterStackPolicy (const std::string &name) |
| static bool | hasStackPolicy (const std::string &name) |
| static void | clearStackPolicies () |
| static void | registerLifecycleHook (const std::string &name, LifecycleHook fn) |
| static void | unregisterLifecycleHook (const std::string &name) |
| static bool | hasLifecycleHook (const std::string &name) |
| static void | clearLifecycleHooks () |
| static int | apply (RPGActor *actor, const std::string &effectId, const std::string &source="") |
| 施加一个效果。返回值: -1 — 失败(actor 为空 / 效果不存在 / 条件拒绝 / stackPolicy 拒绝重复) 0 — durationPolicy=="instant":已立即生效,无需跟踪的状态实例 >0 — 新建或更新后的状态实例 id | |
| static bool | remove (RPGActor *actor, int instanceId) |
| 按实例 id 精确移除(撤销其属性修改器);返回是否命中。 | |
| static int | removeByEffect (RPGActor *actor, const std::string &effectId) |
| 移除该 actor 身上所有 effectId 匹配的实例;返回移除数量。 | |
| static int | removeBySource (RPGActor *actor, const std::string &source) |
| 移除该 actor 身上所有 source 匹配的实例;返回移除数量。 | |
| static int | removeByTag (RPGActor *actor, const std::string &tag) |
| 移除该 actor 身上所有 tag 匹配(效果定义带该 tag)的实例;返回移除数量。 | |
| static bool | hasEffect (RPGActor *actor, const std::string &effectId) |
| static bool | hasTag (RPGActor *actor, const std::string &tag) |
| 是否存在任一效果定义带有该 tag 的活动实例。 | |
| static int | getActiveCount (RPGActor *actor) |
| static std::string | getActiveEffectId (RPGActor *actor, int index) |
| static int | getActiveStacks (RPGActor *actor, int index) |
| static float | getActiveRemaining (RPGActor *actor, int index) |
| static int | getActiveInstanceId (RPGActor *actor, int index) |
| static std::string | getActiveSource (RPGActor *actor, int index) |
| static std::string | getProp (RPGActor *actor, int instanceId, const std::string &key, const std::string &fallback={}) |
| 按实例 id 读写 props;找不到实例时 get 返回 fallback,set 返回 false。 | |
| static bool | setProp (RPGActor *actor, int instanceId, const std::string &key, const std::string &value) |
| static void | update (float dt) |
| 遍历 RPGActor::liveActors():倒计时长、到期移除、周期效果产生 tick 事件。 | |
| static void | pollTicks (std::vector< StatusTickEvent > &out) |
| 取出并清空自上次调用以来累积的周期 tick 事件(push/poll 风格,见 event 模块)。 | |
| static void | pollChanges (std::vector< StatusChangeEvent > &out) |
| 取出并清空自上次调用以来累积的生命周期变更事件。 | |
详细描述
在文件 StatusSystem.h 第 24 行定义.
成员类型定义说明
◆ ApplyCondition
| using eve::rpg::StatusSystem::ApplyCondition = std::function<bool(RPGActor *actor, const EffectDefinition &def, const std::string &source, std::string &outReason)> |
施加前条件:返回 false 表示拒绝施加。 全部已注册条件按注册表遍历(AND);任一失败则 apply 返回 -1 并产生 action="reject" 事件。
在文件 StatusSystem.h 第 30 行定义.
◆ LifecycleHook
| using eve::rpg::StatusSystem::LifecycleHook = std::function<void(const StatusChangeEvent &ev)> |
生命周期钩子:每次产生 StatusChangeEvent 时同步回调(在事件入队之后)。
在文件 StatusSystem.h 第 43 行定义.
◆ StackPolicyFn
| using eve::rpg::StatusSystem::StackPolicyFn = std::function<int(RPGActor *actor, StatusInstance &existing, const EffectDefinition &def, const std::string &source)> |
自定义叠加策略:当已存在同 effectId 实例且 stackPolicy 名命中本注册表时调用。 返回值约定与 apply() 相同(-1 拒绝 / >0 实例 id)。策略内部可改写 stacks/remaining, 并应在需要时自行调用 AttributeSystem 或依赖 StatusSystem 后续的 modifier 刷新。 返回后若实例仍在列表中且 period<=0,StatusSystem 会按新 stacks 重写属性修改器。
在文件 StatusSystem.h 第 39 行定义.
成员函数说明
◆ apply()
|
static |
施加一个效果。返回值: -1 — 失败(actor 为空 / 效果不存在 / 条件拒绝 / stackPolicy 拒绝重复) 0 — durationPolicy=="instant":已立即生效,无需跟踪的状态实例 >0 — 新建或更新后的状态实例 id
在文件 StatusSystem.cpp 第 118 行定义.
引用了 eve::rpg::StatusChangeEvent::action, active, eve::rpg::StatusChangeEvent::actor, eve::rpg::EffectDefinition::duration, eve::rpg::EffectDefinition::durationPolicy, eve::rpg::StatusInstance::effectId, eve::rpg::StatusChangeEvent::effectId, eve::rpg::EffectRegistry::find(), id, eve::rpg::StatusInstance::instanceId, eve::rpg::StatusChangeEvent::instanceId, eve::rpg::EffectDefinition::maxStacks, eve::rpg::EffectDefinition::modifiers, eve::rpg::AttributeSystem::modifyBase(), eve::rpg::EffectDefinition::period, eve::rpg::StatusInstance::periodAccum, eve::rpg::StatusChangeEvent::reason, eve::rpg::StatusInstance::remaining, s, eve::rpg::StatusInstance::source, eve::rpg::StatusChangeEvent::source, eve::rpg::EffectDefinition::stackPolicy, eve::rpg::StatusInstance::stacks , 以及 eve::rpg::StatusChangeEvent::stacks.
被这些函数引用 eve::rpg::RPGActor::applyEffect().
◆ clearApplyConditions()
|
static |
在文件 StatusSystem.cpp 第 75 行定义.
◆ clearLifecycleHooks()
|
static |
在文件 StatusSystem.cpp 第 101 行定义.
◆ clearStackPolicies()
|
static |
在文件 StatusSystem.cpp 第 87 行定义.
◆ getActiveCount()
|
static |
在文件 StatusSystem.cpp 第 375 行定义.
被这些函数引用 eve::rpg::RPGActor::getStatusCount().
◆ getActiveEffectId()
|
static |
◆ getActiveInstanceId()
|
static |
◆ getActiveRemaining()
|
static |
◆ getActiveSource()
|
static |
◆ getActiveStacks()
|
static |
◆ getProp()
|
static |
按实例 id 读写 props;找不到实例时 get 返回 fallback,set 返回 false。
在文件 StatusSystem.cpp 第 415 行定义.
引用了 eve::rpg::StatusInstance::props.
被这些函数引用 eve::rpg::RPGActor::getStatusProp().
◆ hasApplyCondition()
|
static |
在文件 StatusSystem.cpp 第 71 行定义.
引用了 name.
◆ hasEffect()
|
static |
◆ hasLifecycleHook()
|
static |
在文件 StatusSystem.cpp 第 97 行定义.
引用了 name.
◆ hasStackPolicy()
|
static |
在文件 StatusSystem.cpp 第 83 行定义.
引用了 name.
◆ hasTag()
|
static |
是否存在任一效果定义带有该 tag 的活动实例。
在文件 StatusSystem.cpp 第 366 行定义.
引用了 eve::rpg::EffectRegistry::find() , 以及 eve::rpg::EffectDefinition::hasTag().
被这些函数引用 eve::rpg::RPGActor::hasStatusTag().
◆ pollChanges()
|
static |
◆ pollTicks()
|
static |
取出并清空自上次调用以来累积的周期 tick 事件(push/poll 风格,见 event 模块)。
在文件 StatusSystem.cpp 第 475 行定义.
被这些函数引用 eve::rpg::RPG::update().
◆ registerApplyCondition()
|
static |
在文件 StatusSystem.cpp 第 63 行定义.
◆ registerLifecycleHook()
|
static |
在文件 StatusSystem.cpp 第 89 行定义.
◆ registerStackPolicy()
|
static |
在文件 StatusSystem.cpp 第 77 行定义.
◆ remove()
|
static |
按实例 id 精确移除(撤销其属性修改器);返回是否命中。
在文件 StatusSystem.cpp 第 264 行定义.
引用了 active, eve::rpg::StatusChangeEvent::actor, removed , 以及 s.
被这些函数引用 eve::rpg::RPGActor::removeStatus().
◆ removeByEffect()
|
static |
移除该 actor 身上所有 effectId 匹配的实例;返回移除数量。
在文件 StatusSystem.cpp 第 285 行定义.
引用了 active, eve::rpg::StatusChangeEvent::actor , 以及 removed.
◆ removeBySource()
|
static |
移除该 actor 身上所有 source 匹配的实例;返回移除数量。
在文件 StatusSystem.cpp 第 309 行定义.
引用了 active, eve::rpg::StatusChangeEvent::actor , 以及 removed.
◆ removeByTag()
|
static |
移除该 actor 身上所有 tag 匹配(效果定义带该 tag)的实例;返回移除数量。
在文件 StatusSystem.cpp 第 333 行定义.
引用了 active, eve::rpg::StatusChangeEvent::actor, eve::rpg::EffectRegistry::find(), eve::rpg::EffectDefinition::hasTag() , 以及 removed.
◆ setProp()
|
static |
在文件 StatusSystem.cpp 第 423 行定义.
引用了 eve::rpg::StatusInstance::props , 以及 value.
被这些函数引用 eve::rpg::RPGActor::setStatusProp().
◆ unregisterApplyCondition()
|
static |
在文件 StatusSystem.cpp 第 67 行定义.
引用了 name.
◆ unregisterLifecycleHook()
|
static |
在文件 StatusSystem.cpp 第 93 行定义.
引用了 name.
◆ unregisterStackPolicy()
|
static |
在文件 StatusSystem.cpp 第 81 行定义.
引用了 name.
◆ update()
|
static |
遍历 RPGActor::liveActors():倒计时长、到期移除、周期效果产生 tick 事件。
在文件 StatusSystem.cpp 第 431 行定义.
引用了 eve::rpg::StatusChangeEvent::action, active, eve::rpg::StatusTickEvent::actor, eve::rpg::StatusChangeEvent::actor, eve::rpg::StatusTickEvent::effectId, eve::rpg::StatusChangeEvent::effectId, eve::rpg::EffectRegistry::find(), eve::rpg::StatusTickEvent::instanceId, eve::rpg::StatusChangeEvent::instanceId, eve::rpg::RPGActor::liveActors(), eve::rpg::EffectDefinition::period, eve::rpg::StatusTickEvent::source, eve::rpg::StatusChangeEvent::source, eve::rpg::StatusTickEvent::stacks , 以及 eve::rpg::StatusChangeEvent::stacks.
被这些函数引用 eve::rpg::RPG::update().
该类的文档由以下文件生成:
- src/modules/rpg/StatusSystem.h
- src/modules/rpg/StatusSystem.cpp