载入中...
搜索中...
未找到
SkillSystem.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5// 技能释放流程:冷却 / 消耗 / 读条 / 授予效果。
6//
7// 可定制点:registerCastCondition() 允许 C++ 侧插入任意额外的"能否释放"判断
8// (例如"沉默状态不能施法"),无需修改 SkillSystem 本身——引擎不内置任何
9// 状态互斥概念(沉默/眩晕等完全是游戏自定义的 tag/effect)。
10
11#include "rpg/SkillTypes.h"
12
13#include <functional>
14#include <string>
15#include <vector>
16
17namespace eve::rpg {
18
19class RPGActor;
20struct SkillDefinition;
21
24public:
28 std::function<bool(RPGActor *actor, const SkillDefinition &def, std::string &outReason)>;
29
31 static void registerCastCondition(const std::string &name, CastCondition fn);
33 static void unregisterCastCondition(const std::string &name);
35 static void clearCastConditions();
36
38 static void learn(RPGActor *actor, const std::string &skillId);
40 static bool knows(RPGActor *actor, const std::string &skillId);
42 static bool forget(RPGActor *actor, const std::string &skillId);
43
45 static std::string getTargetType(RPGActor *actor, const std::string &skillId);
46
48 static float getCooldownRemaining(RPGActor *actor, const std::string &skillId);
50 static void setCooldownRemaining(RPGActor *actor, const std::string &skillId, float seconds);
51
53 static bool canCast(RPGActor *actor, const std::string &skillId, std::string *reason = nullptr);
54
60 static bool beginCast(RPGActor *actor, const std::string &skillId, RPGActor *target = nullptr,
61 std::string *reason = nullptr);
62
64 static void cancelCast(RPGActor *actor);
65
67 static bool isCasting(RPGActor *actor);
69 static std::string getCastingSkillId(RPGActor *actor);
71 static float getCastProgress(RPGActor *actor);
72
74 static void update(float dt);
75
77 static void pollCastEvents(std::vector<SkillCastEvent> &out);
78};
79
80} // namespace eve::rpg
LogicalId target
#define EVENGINE_API_PLATFORM
Definition Export.h:107
std::string name
属性 / 状态 / 技能三表合一的 ECS 实体。
Definition RPGActor.h:34
EVENGINE_API_PLATFORM public API.
Definition SkillSystem.h:23
std::function< bool(RPGActor *actor, const SkillDefinition &def, std::string &outReason)> CastCondition
返回 false 表示禁止释放;通过 outReason 说明原因。
Definition SkillSystem.h:28
RPG 模块的基础实体:把属性 / 状态 / 技能三张表挂到一个 ECS 实体上。
SettlementPipeline::Stage fn
SkillDefinition public API.
Definition Skill.h:28