玩家技能可以直接在玩家身上实现,使用一个SkillMgr来管理技能Skill,Skill里面处理了很多和技能状态的相关流程。
class Skill
{
...
public:
static Skill* study_skill(...); //学习技能,可以供外部调用
static Skill* create_skill(...); //创建一个技能,可以供外部调用
...
};
class SkillMgr
{
...
private:
std::map<int64, std::shared_ptr<Skill>> skill_map; //skill的临时技能id, skill
std::map<int, std::shared_ptr<Skill>> skill_map; //skillid, skill
...
};