载入中...
搜索中...
未找到

属性 / 状态 / 技能三表合一的 ECS 实体。 更多...

#include <RPGActor.h>

类 eve::rpg::RPGActor 继承关系图:

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 RPGActorcreateActor ()
 创建一个空白 actor(三张表均为空,按需惰性写入),并纳入 liveActors() 跟踪。
 
static const std::vector< RPGActor * > & liveActors ()
 返回所有通过 createActor() 创建、且当前仍存活的 actor。 StatusSystem::update / SkillSystem::update 用它遍历所有 actor 逐帧推进。 直接调用继承自 ENTITY 宏的 RPGActor::create() 不会被跟踪——推荐总是用 createActor()
 

详细描述

属性 / 状态 / 技能三表合一的 ECS 实体。

在文件 RPGActor.h28 行定义.

成员函数说明

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

引用了 eve::rpg::AttributeSystem::addModifier(), priority , 以及 value.

◆ applyBuff()

int eve::rpg::RPGActor::applyBuff ( const std::string &  effectId,
const std::string &  source = "" 
)

Buff 别名(与 Status API 等价,便于游戏侧按习惯命名)。

在文件 RPGActor.cpp135 行定义.

引用了 applyEffect().

◆ applyEffect()

int eve::rpg::RPGActor::applyEffect ( const std::string &  effectId,
const std::string &  source = "" 
)

状态(buff/debuff)—— Statuses ECS 组件的薄封装。

在文件 RPGActor.cpp90 行定义.

引用了 eve::rpg::StatusSystem::apply().

被这些函数引用 applyBuff().

◆ beginCastSkill()

bool eve::rpg::RPGActor::beginCastSkill ( const std::string &  skillId,
RPGActor target = nullptr 
)

开始读条释放;false 表示不满足条件。

在文件 RPGActor.cpp202 行定义.

引用了 eve::rpg::SkillSystem::beginCast().

◆ canCastSkill()

bool eve::rpg::RPGActor::canCastSkill ( const std::string &  skillId)

在文件 RPGActor.cpp192 行定义.

引用了 eve::rpg::SkillSystem::canCast().

◆ canCastSkillReason()

std::string eve::rpg::RPGActor::canCastSkillReason ( const std::string &  skillId)

不能释放的原因("" = 可以)。

在文件 RPGActor.cpp196 行定义.

引用了 eve::rpg::SkillSystem::canCast().

◆ cancelCastSkill()

void eve::rpg::RPGActor::cancelCastSkill ( )

取消读条。

在文件 RPGActor.cpp206 行定义.

引用了 eve::rpg::SkillSystem::cancelCast().

◆ createActor()

RPGActor * eve::rpg::RPGActor::createActor ( )
static

创建一个空白 actor(三张表均为空,按需惰性写入),并纳入 liveActors() 跟踪。

在文件 RPGActor.cpp23 行定义.

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

◆ forgetSkill()

bool eve::rpg::RPGActor::forgetSkill ( const std::string &  skillId)

在文件 RPGActor.cpp182 行定义.

引用了 eve::rpg::SkillSystem::forget().

◆ getBaseAttribute()

double eve::rpg::RPGActor::getBaseAttribute ( const std::string &  attribute)

在文件 RPGActor.cpp54 行定义.

引用了 eve::rpg::AttributeSystem::getBase().

◆ getBuffCount()

int eve::rpg::RPGActor::getBuffCount ( )

在文件 RPGActor.cpp155 行定义.

引用了 getStatusCount().

◆ getBuffEffectId()

std::string eve::rpg::RPGActor::getBuffEffectId ( int  index)

在文件 RPGActor.cpp157 行定义.

引用了 getStatusEffectId().

◆ getBuffInstanceId()

int eve::rpg::RPGActor::getBuffInstanceId ( int  index)

在文件 RPGActor.cpp163 行定义.

引用了 getStatusInstanceId().

◆ getBuffProp()

std::string eve::rpg::RPGActor::getBuffProp ( int  instanceId,
const std::string &  key,
const std::string &  fallback = {} 
)

在文件 RPGActor.cpp167 行定义.

引用了 getStatusProp().

◆ getBuffRemaining()

float eve::rpg::RPGActor::getBuffRemaining ( int  index)

在文件 RPGActor.cpp161 行定义.

引用了 getStatusRemaining().

◆ getBuffSource()

std::string eve::rpg::RPGActor::getBuffSource ( int  index)

在文件 RPGActor.cpp165 行定义.

引用了 getStatusSource().

◆ getBuffStacks()

int eve::rpg::RPGActor::getBuffStacks ( int  index)

在文件 RPGActor.cpp159 行定义.

引用了 getStatusStacks().

◆ getCastingSkillId()

std::string eve::rpg::RPGActor::getCastingSkillId ( )

在文件 RPGActor.cpp210 行定义.

引用了 eve::rpg::SkillSystem::getCastingSkillId().

◆ getCastProgress()

float eve::rpg::RPGActor::getCastProgress ( )

在文件 RPGActor.cpp212 行定义.

引用了 eve::rpg::SkillSystem::getCastProgress().

◆ getFinalAttribute()

double eve::rpg::RPGActor::getFinalAttribute ( const std::string &  attribute)

在文件 RPGActor.cpp84 行定义.

引用了 eve::rpg::AttributeSystem::getFinal().

◆ getSkillCooldown()

float eve::rpg::RPGActor::getSkillCooldown ( const std::string &  skillId)

在文件 RPGActor.cpp184 行定义.

引用了 eve::rpg::SkillSystem::getCooldownRemaining().

◆ getStatusCount()

int eve::rpg::RPGActor::getStatusCount ( )

在文件 RPGActor.cpp112 行定义.

引用了 eve::rpg::StatusSystem::getActiveCount().

被这些函数引用 getBuffCount().

◆ getStatusEffectId()

std::string eve::rpg::RPGActor::getStatusEffectId ( int  index)

在文件 RPGActor.cpp114 行定义.

引用了 eve::rpg::StatusSystem::getActiveEffectId().

被这些函数引用 getBuffEffectId().

◆ getStatusInstanceId()

int eve::rpg::RPGActor::getStatusInstanceId ( int  index)

在文件 RPGActor.cpp122 行定义.

引用了 eve::rpg::StatusSystem::getActiveInstanceId().

被这些函数引用 getBuffInstanceId().

◆ getStatusProp()

std::string eve::rpg::RPGActor::getStatusProp ( int  instanceId,
const std::string &  key,
const std::string &  fallback = {} 
)

在文件 RPGActor.cpp126 行定义.

引用了 eve::rpg::StatusSystem::getProp().

被这些函数引用 getBuffProp().

◆ getStatusRemaining()

float eve::rpg::RPGActor::getStatusRemaining ( int  index)

在文件 RPGActor.cpp120 行定义.

引用了 eve::rpg::StatusSystem::getActiveRemaining().

被这些函数引用 getBuffRemaining().

◆ getStatusSource()

std::string eve::rpg::RPGActor::getStatusSource ( int  index)

在文件 RPGActor.cpp124 行定义.

引用了 eve::rpg::StatusSystem::getActiveSource().

被这些函数引用 getBuffSource().

◆ getStatusStacks()

int eve::rpg::RPGActor::getStatusStacks ( int  index)

在文件 RPGActor.cpp118 行定义.

引用了 eve::rpg::StatusSystem::getActiveStacks().

被这些函数引用 getBuffStacks().

◆ hasAttribute()

bool eve::rpg::RPGActor::hasAttribute ( const std::string &  attribute)

在文件 RPGActor.cpp62 行定义.

引用了 eve::rpg::AttributeSystem::hasAttribute().

◆ hasBuff()

bool eve::rpg::RPGActor::hasBuff ( const std::string &  effectId)

在文件 RPGActor.cpp151 行定义.

引用了 hasEffect().

◆ hasBuffTag()

bool eve::rpg::RPGActor::hasBuffTag ( const std::string &  tag)

在文件 RPGActor.cpp153 行定义.

引用了 hasStatusTag().

◆ hasEffect()

bool eve::rpg::RPGActor::hasEffect ( const std::string &  effectId)

在文件 RPGActor.cpp108 行定义.

引用了 eve::rpg::StatusSystem::hasEffect().

被这些函数引用 hasBuff().

◆ hasStatusTag()

bool eve::rpg::RPGActor::hasStatusTag ( const std::string &  tag)

在文件 RPGActor.cpp110 行定义.

引用了 eve::rpg::StatusSystem::hasTag().

被这些函数引用 hasBuffTag().

◆ isCastingSkill()

bool eve::rpg::RPGActor::isCastingSkill ( )

读条状态查询。

在文件 RPGActor.cpp208 行定义.

引用了 eve::rpg::SkillSystem::isCasting().

◆ knowsSkill()

bool eve::rpg::RPGActor::knowsSkill ( const std::string &  skillId)

在文件 RPGActor.cpp180 行定义.

引用了 eve::rpg::SkillSystem::knows().

◆ learnSkill()

void eve::rpg::RPGActor::learnSkill ( const std::string &  skillId)

技能:学习 / 查询 / 冷却。

在文件 RPGActor.cpp178 行定义.

引用了 eve::rpg::SkillSystem::learn().

◆ liveActors()

const std::vector< RPGActor * > & eve::rpg::RPGActor::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.cpp33 行定义.

引用了 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.cpp58 行定义.

引用了 eve::rpg::AttributeSystem::modifyBase().

◆ release()

void eve::rpg::RPGActor::release ( )
inlineoverride

在文件 RPGActor.h32 行定义.

◆ removeAllAttributeModifiersBySource()

int eve::rpg::RPGActor::removeAllAttributeModifiersBySource ( const std::string &  source)

◆ removeAttributeModifier()

bool eve::rpg::RPGActor::removeAttributeModifier ( const std::string &  attribute,
const std::string &  modifierId 
)

在文件 RPGActor.cpp71 行定义.

引用了 eve::rpg::AttributeSystem::removeModifier().

◆ removeAttributeModifiersBySource()

int eve::rpg::RPGActor::removeAttributeModifiersBySource ( const std::string &  attribute,
const std::string &  source 
)

◆ removeBuff()

bool eve::rpg::RPGActor::removeBuff ( int  instanceId)

在文件 RPGActor.cpp139 行定义.

引用了 removeStatus().

◆ removeBuffByEffect()

int eve::rpg::RPGActor::removeBuffByEffect ( const std::string &  effectId)

在文件 RPGActor.cpp141 行定义.

引用了 removeStatusByEffect().

◆ removeBuffBySource()

int eve::rpg::RPGActor::removeBuffBySource ( const std::string &  source)

在文件 RPGActor.cpp145 行定义.

引用了 removeStatusBySource().

◆ removeBuffByTag()

int eve::rpg::RPGActor::removeBuffByTag ( const std::string &  tag)

在文件 RPGActor.cpp149 行定义.

引用了 removeStatusByTag().

◆ removeStatus()

bool eve::rpg::RPGActor::removeStatus ( int  instanceId)

在文件 RPGActor.cpp94 行定义.

引用了 eve::rpg::StatusSystem::remove().

被这些函数引用 removeBuff().

◆ removeStatusByEffect()

int eve::rpg::RPGActor::removeStatusByEffect ( const std::string &  effectId)

在文件 RPGActor.cpp96 行定义.

引用了 eve::rpg::StatusSystem::removeByEffect().

被这些函数引用 removeBuffByEffect().

◆ removeStatusBySource()

int eve::rpg::RPGActor::removeStatusBySource ( const std::string &  source)

在文件 RPGActor.cpp100 行定义.

引用了 eve::rpg::StatusSystem::removeBySource().

被这些函数引用 removeBuffBySource().

◆ removeStatusByTag()

int eve::rpg::RPGActor::removeStatusByTag ( const std::string &  tag)

在文件 RPGActor.cpp104 行定义.

引用了 eve::rpg::StatusSystem::removeByTag().

被这些函数引用 removeBuffByTag().

◆ setBaseAttribute()

void eve::rpg::RPGActor::setBaseAttribute ( const std::string &  attribute,
double  value 
)

便捷成员方法(转发到 AttributeSystem / StatusSystem / SkillSystem)。 提供这一层薄封装主要是为了让脚本可以写 actor.setBaseAttribute(...), 与引擎其他模块(TileLayer / ParticleEmitter 等)的绑定风格保持一致; C++ 侧仍然可以直接使用对应的 *System 静态类。

属性访问。

在文件 RPGActor.cpp50 行定义.

引用了 eve::rpg::AttributeSystem::setBase() , 以及 value.

◆ setBuffProp()

bool eve::rpg::RPGActor::setBuffProp ( int  instanceId,
const std::string &  key,
const std::string &  value 
)

在文件 RPGActor.cpp172 行定义.

引用了 setStatusProp() , 以及 value.

◆ setSkillCooldown()

void eve::rpg::RPGActor::setSkillCooldown ( const std::string &  skillId,
float  seconds 
)

在文件 RPGActor.cpp188 行定义.

引用了 eve::rpg::SkillSystem::setCooldownRemaining().

◆ setStatusProp()

bool eve::rpg::RPGActor::setStatusProp ( int  instanceId,
const std::string &  key,
const std::string &  value 
)

在文件 RPGActor.cpp131 行定义.

引用了 eve::rpg::StatusSystem::setProp() , 以及 value.

被这些函数引用 setBuffProp().


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