玩家的管理

玩家的管理

1) 所有的玩家连接对象从player对象池g_pPlayerPool中分配
2) 每个连接上的玩家分配给一个player对象
class Player
{
public :
    Player( BOOL bIsServer=FALSE ) ;
    virtual ~Player( ) ;
  ...................
  virtual BOOL    ProcessInput( ) ;
    virtual BOOL    ProcessOutput( ) ;
    virtual BOOL    ProcessCommand( BOOL Option = TRUE ) ;
protected :
    //Player ID
    //统一由PlayerPool管理
    PlayerID_t                m_PID ;    

    //在PlayerManager类中player id数组的下标
    //PlayerManagerID用于标识当前玩家所在的某个PlayerManager中的位置信息,每个
    //PlayerManager位于一个独立的线程里。
    ID_t                    m_PlayerManagerID ;

    //网络连接句柄
    Socket*                    m_pSocket ;

    //输入输出数据缓存
    SocketInputStream*        m_pSocketInputStream ;
    SocketOutputStream*        m_pSocketOutputStream ;
  ..................
};
player中放着玩家的socket句柄,输入输出的数据缓存区,和在玩家管理器中的位置等
当有数据到达时,ProcessInput 从网络读数据放到输入缓冲区,ProcessCommand在心跳时从缓冲区读取数据(组成协议包),做相应处理。
4) 刚连接上时,从玩家池从分配一个player对象之后,这个对象是记录在连接线程中(线程只是记录着玩家对象在pool中的位置),进入场景之后,从连接线程删除,放到相应的场景玩家管理器中,之后的通信都是和场景


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值