载入中...
搜索中...
未找到
eve::rpg::StatusSystem类 参考

#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.h24 行定义.

成员类型定义说明

◆ 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.h30 行定义.

◆ LifecycleHook

using eve::rpg::StatusSystem::LifecycleHook = std::function<void(const StatusChangeEvent &ev)>

生命周期钩子:每次产生 StatusChangeEvent 时同步回调(在事件入队之后)。

在文件 StatusSystem.h43 行定义.

◆ 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.h39 行定义.

成员函数说明

◆ apply()

◆ clearApplyConditions()

void eve::rpg::StatusSystem::clearApplyConditions ( )
static

在文件 StatusSystem.cpp75 行定义.

◆ clearLifecycleHooks()

void eve::rpg::StatusSystem::clearLifecycleHooks ( )
static

在文件 StatusSystem.cpp101 行定义.

◆ clearStackPolicies()

void eve::rpg::StatusSystem::clearStackPolicies ( )
static

在文件 StatusSystem.cpp87 行定义.

◆ getActiveCount()

int eve::rpg::StatusSystem::getActiveCount ( RPGActor actor)
static

在文件 StatusSystem.cpp375 行定义.

被这些函数引用 eve::rpg::RPGActor::getStatusCount().

◆ getActiveEffectId()

std::string eve::rpg::StatusSystem::getActiveEffectId ( RPGActor actor,
int  index 
)
static

在文件 StatusSystem.cpp380 行定义.

引用了 active.

被这些函数引用 eve::rpg::RPGActor::getStatusEffectId().

◆ getActiveInstanceId()

int eve::rpg::StatusSystem::getActiveInstanceId ( RPGActor actor,
int  index 
)
static

在文件 StatusSystem.cpp401 行定义.

引用了 active.

被这些函数引用 eve::rpg::RPGActor::getStatusInstanceId().

◆ getActiveRemaining()

float eve::rpg::StatusSystem::getActiveRemaining ( RPGActor actor,
int  index 
)
static

在文件 StatusSystem.cpp394 行定义.

引用了 active.

被这些函数引用 eve::rpg::RPGActor::getStatusRemaining().

◆ getActiveSource()

std::string eve::rpg::StatusSystem::getActiveSource ( RPGActor actor,
int  index 
)
static

在文件 StatusSystem.cpp408 行定义.

引用了 active.

被这些函数引用 eve::rpg::RPGActor::getStatusSource().

◆ getActiveStacks()

int eve::rpg::StatusSystem::getActiveStacks ( RPGActor actor,
int  index 
)
static

在文件 StatusSystem.cpp387 行定义.

引用了 active.

被这些函数引用 eve::rpg::RPGActor::getStatusStacks().

◆ getProp()

std::string eve::rpg::StatusSystem::getProp ( RPGActor actor,
int  instanceId,
const std::string &  key,
const std::string &  fallback = {} 
)
static

按实例 id 读写 props;找不到实例时 get 返回 fallback,set 返回 false。

在文件 StatusSystem.cpp415 行定义.

引用了 eve::rpg::StatusInstance::props.

被这些函数引用 eve::rpg::RPGActor::getStatusProp().

◆ hasApplyCondition()

bool eve::rpg::StatusSystem::hasApplyCondition ( const std::string &  name)
static

在文件 StatusSystem.cpp71 行定义.

引用了 name.

◆ hasEffect()

bool eve::rpg::StatusSystem::hasEffect ( RPGActor actor,
const std::string &  effectId 
)
static

在文件 StatusSystem.cpp358 行定义.

引用了 active , 以及 s.

被这些函数引用 eve::rpg::RPGActor::hasEffect().

◆ hasLifecycleHook()

bool eve::rpg::StatusSystem::hasLifecycleHook ( const std::string &  name)
static

在文件 StatusSystem.cpp97 行定义.

引用了 name.

◆ hasStackPolicy()

bool eve::rpg::StatusSystem::hasStackPolicy ( const std::string &  name)
static

在文件 StatusSystem.cpp83 行定义.

引用了 name.

◆ hasTag()

bool eve::rpg::StatusSystem::hasTag ( RPGActor actor,
const std::string &  tag 
)
static

是否存在任一效果定义带有该 tag 的活动实例。

在文件 StatusSystem.cpp366 行定义.

引用了 eve::rpg::EffectRegistry::find() , 以及 eve::rpg::EffectDefinition::hasTag().

被这些函数引用 eve::rpg::RPGActor::hasStatusTag().

◆ pollChanges()

void eve::rpg::StatusSystem::pollChanges ( std::vector< StatusChangeEvent > &  out)
static

取出并清空自上次调用以来累积的生命周期变更事件。

在文件 StatusSystem.cpp481 行定义.

被这些函数引用 eve::rpg::RPG::update().

◆ pollTicks()

void eve::rpg::StatusSystem::pollTicks ( std::vector< StatusTickEvent > &  out)
static

取出并清空自上次调用以来累积的周期 tick 事件(push/poll 风格,见 event 模块)。

在文件 StatusSystem.cpp475 行定义.

被这些函数引用 eve::rpg::RPG::update().

◆ registerApplyCondition()

void eve::rpg::StatusSystem::registerApplyCondition ( const std::string &  name,
ApplyCondition  fn 
)
static

在文件 StatusSystem.cpp63 行定义.

引用了 fn , 以及 name.

◆ registerLifecycleHook()

void eve::rpg::StatusSystem::registerLifecycleHook ( const std::string &  name,
LifecycleHook  fn 
)
static

在文件 StatusSystem.cpp89 行定义.

引用了 fn , 以及 name.

◆ registerStackPolicy()

void eve::rpg::StatusSystem::registerStackPolicy ( const std::string &  name,
StackPolicyFn  fn 
)
static

在文件 StatusSystem.cpp77 行定义.

引用了 fn , 以及 name.

◆ remove()

bool eve::rpg::StatusSystem::remove ( RPGActor actor,
int  instanceId 
)
static

按实例 id 精确移除(撤销其属性修改器);返回是否命中。

在文件 StatusSystem.cpp264 行定义.

引用了 active, eve::rpg::StatusChangeEvent::actor, removed , 以及 s.

被这些函数引用 eve::rpg::RPGActor::removeStatus().

◆ removeByEffect()

int eve::rpg::StatusSystem::removeByEffect ( RPGActor actor,
const std::string &  effectId 
)
static

移除该 actor 身上所有 effectId 匹配的实例;返回移除数量。

在文件 StatusSystem.cpp285 行定义.

引用了 active, eve::rpg::StatusChangeEvent::actor , 以及 removed.

被这些函数引用 eve::rpg::RPGActor::removeStatusByEffect().

◆ removeBySource()

int eve::rpg::StatusSystem::removeBySource ( RPGActor actor,
const std::string &  source 
)
static

移除该 actor 身上所有 source 匹配的实例;返回移除数量。

在文件 StatusSystem.cpp309 行定义.

引用了 active, eve::rpg::StatusChangeEvent::actor , 以及 removed.

被这些函数引用 eve::rpg::RPGActor::removeStatusBySource().

◆ removeByTag()

int eve::rpg::StatusSystem::removeByTag ( RPGActor actor,
const std::string &  tag 
)
static

移除该 actor 身上所有 tag 匹配(效果定义带该 tag)的实例;返回移除数量。

在文件 StatusSystem.cpp333 行定义.

引用了 active, eve::rpg::StatusChangeEvent::actor, eve::rpg::EffectRegistry::find(), eve::rpg::EffectDefinition::hasTag() , 以及 removed.

被这些函数引用 eve::rpg::RPGActor::removeStatusByTag().

◆ setProp()

bool eve::rpg::StatusSystem::setProp ( RPGActor actor,
int  instanceId,
const std::string &  key,
const std::string &  value 
)
static

在文件 StatusSystem.cpp423 行定义.

引用了 eve::rpg::StatusInstance::props , 以及 value.

被这些函数引用 eve::rpg::RPGActor::setStatusProp().

◆ unregisterApplyCondition()

void eve::rpg::StatusSystem::unregisterApplyCondition ( const std::string &  name)
static

在文件 StatusSystem.cpp67 行定义.

引用了 name.

◆ unregisterLifecycleHook()

void eve::rpg::StatusSystem::unregisterLifecycleHook ( const std::string &  name)
static

在文件 StatusSystem.cpp93 行定义.

引用了 name.

◆ unregisterStackPolicy()

void eve::rpg::StatusSystem::unregisterStackPolicy ( const std::string &  name)
static

在文件 StatusSystem.cpp81 行定义.

引用了 name.

◆ update()


该类的文档由以下文件生成: