1 当用户在客户端点击椅子坐下的时候 发送坐下的命令到服务器
SendData(MDM_GR_USER,SUB_GR_USER_SIT_REQ,&UserSitReq,wSendSize);
2 服务端 CAttemperEngineSink::OnSocketMainUser 中接收客户端发送过来的数据包 并转到 CTableFrame::PerformSitDownAction 中处理坐下的动作。
3 服务端在执行一些逻辑判断后,发送数据包到客户端通知用户改变状态 SendUserStatus(pIServerUserItem);此时用户的状态为 US_SIT。
m_pITCPNetworkEngine->SendDataBatch(MDM_GR_USER,SUB_GR_USER_STATUS,&UserStatus,sizeof(UserStatus));
同时服务端通知游戏服务开始执行游戏启动的代码。
4 客户端收到服务端的 US_SIT 状态,后执行一些处理,开始启动游戏客户端 StartGameClient()。
在这个方法里再通知服务端客户端开始启动,SendSocketData(MDM_GF_FRAME,SUB_GF_INFO,&Info,sizeof(Info));
5 服务端收到通知后,修改用户状态为准备好状态,并发送 SendData(pIServerUserItem,MDM_GF_FRAME,SUB_GF_OPTION,&Option,sizeof(Option)) 游戏状态到客户端。
服务端修改用户状态为准备好后,开始与客户端正常的游戏逻辑通讯。并一开始发送场景到客户端。
m_pITableFrameSink->SendGameScene(pUserData->wChairID,pIServerUserItem,m_bGameStatus,bSendSecret);