载入中...
搜索中...
未找到
StatusTypes.h
浏览该文件的文档.
1#pragma once
2
3// 状态(buff/debuff)系统的运行时数据类型。
4//
5// 术语区分:
6// Effect(效果,见 Effect.h) — 数据驱动的"定义/模板"(伤害多少、持续多久、如何叠加……)
7// Status(状态,本文件) — Effect 被施加到某个 RPGActor 后产生的"运行时实例"
8// Buff — 与 Status 同义的游戏侧称呼;API 同时提供 applyBuff 等别名
9//
10// 一个 EffectDefinition 可以同时被多个 actor、多次实例化为独立的 StatusInstance。
11
12#include <string>
13#include <unordered_map>
14#include <utility>
15#include <vector>
16
17namespace eve::rpg {
18
21 int instanceId = 0;
22 std::string effectId;
23 std::string source;
24 int stacks = 1;
25 float remaining = -1.f;
26 float periodAccum = 0.f;
27
29 std::vector<std::pair<std::string, std::string>> appliedModifiers;
30
35 std::unordered_map<std::string, std::string> props;
36};
37
45 class RPGActor *actor = nullptr;
46 int instanceId = 0;
47 std::string effectId;
48 std::string source;
49 int stacks = 1;
50};
51
60 class RPGActor *actor = nullptr;
61 int instanceId = 0;
62 std::string effectId;
63 std::string source;
64 std::string action;
65 int stacks = 0;
66 std::string reason;
67};
68
69} // namespace eve::rpg
属性 / 状态 / 技能三表合一的 ECS 实体。
Definition RPGActor.h:28
RPG 模块入口:属性 / 效果 / 状态 / 技能 / 结算五套系统的脚本绑定与帧调度点。
状态生命周期变更事件(施加 / 刷新 / 叠层 / 延长 / 移除 / 到期 / 拒绝)。 与 StatusTickEvent 分开:tick 是周期性数值触发,change 是实例结构变化。
Definition StatusTypes.h:59
std::string reason
reject / 自定义条件失败时的说明;其它情况可空
Definition StatusTypes.h:66
状态实例:某个 Effect 施加到某个 actor 后的运行时记录。
Definition StatusTypes.h:20
float remaining
剩余时间(秒);-1 表示 infinite(永久,直到手动移除)
Definition StatusTypes.h:25
std::string source
施加来源标签(施法者 id / 技能 id / 自定义),供查询与批量移除
Definition StatusTypes.h:23
std::vector< std::pair< std::string, std::string > > appliedModifiers
若该效果在 apply 时直接写入了属性修改器,记录 (属性名, 修改器 id) 以便精确撤销。
Definition StatusTypes.h:29
std::unordered_map< std::string, std::string > props
运行时自定义键值(图标路径、UI 着色、脚本标记……)。 与 EffectDefinition::extra(定义侧)互补:extra 是模板数据,props 是实例数据。
Definition StatusTypes.h:35
float periodAccum
周期效果:距离上次 tick 的累积时间
Definition StatusTypes.h:26
周期性状态触发的 tick 事件。周期效果(period > 0)不会自动修改属性, 而是每个周期产生一个 tick 事件交给上层(脚本或 C++ 结算系统)处理—— 这样伤害/治疗类周期效果可以完整地...
Definition StatusTypes.h:44
class RPGActor * actor
Definition StatusTypes.h:45