角色及npc状态管理

游戏里面的角色或者npc会有各种各样的状态,对应在游戏中表现就是玩家或者npc头像下面的小图标,所以需要抽象出一个状态管理器来管理这些状态。状态管理器如下:

class StateMgr

{

public:

    StateMgr(SceneEntryPk* owner) : _owner(owner) {}

    ~StateMgr(){}

     void set(...); //设置一种状态,参数包括状态编号,过期时间时间,是否通知等

     void clear(...);//清除身上一种状态

     void reset(...);//重置所有状态(清空状态)

     ...

private:

    SceneEntryPk*  _owner = NULL; //状态拥有者

    std::set<int> _state_set; //拥有的所有状态

    ...

};

因为角色类SceneUser和npc类SceneNpc都是SceneEntryPk的子类,所以所以只要在SceneEntryPk里面声明一个StateMgr对象即可实现对角色和npc的管理。如下所示:

class SceneEntryPk

{

...

public:

    StateMgr& get_state() {

        return _state;

    }

private:

    StateMgr _state;
...

};

用的时候只要user->get_state().set(...)或者npc->get_state().set(...)即可对角色或者npc设置一种状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值