登录处理事件:
0
.WinMain主函数调用g_xLoginProc.Load();加载图片等初始化,设置g_bProcState 的状态。
1
.CLoginProcess::OnKeyDown-> m_xLogin.OnKeyDown->g_xClientSocket.OnLogin;
WSAAsyncSelect
模型ID_SOCKCLIENT_EVENT_MSG,因此,(登录,角色选择,游戏逻辑处理)都回调g_xClientSocket.OnSocketMessage(wParam, lParam)进行处理。
OnSocketMessage
函数中:FD_READ事件中:
2
.g_bProcState判断当前状态,_GAME_PROC时,把GameGate的发送过来的消息压入PacketQ队列中,再进行处理。否则则调用OnMessageReceive(虚方法,根据g_bProcState状态,调用CloginProcess或者是CcharacterProcess的OnMessageReceive方法)。
3
.CloginProcess:调用OnSocketMessageRecieve处理返回情况。如果服务器验证失败(SM_ID_NOTFOUND, SM_PASSWD_FAIL)消息,否则收到SM_PASSOK_SELECTSERVER消息(SelGate服务器列表消息)。m_Progress = PRG_SERVER_SELE;进行下一步选择SelGate服务器操作。
4. m_xSelectSrv.OnButtonDown->CselectSrv. OnButtonUp->
g_xClientSocket.OnSelectServer(CM_SELECTSERVER),得到真正的IP地址。
调用OnSocketMessageRecieve处理返回的SM_SELECTSERVER_OK消息。并且断开与loginSrv服务器连接。 g_xClientSocket.DisconnectToServer();设置状态为PRG_TO_SELECT_CHR状态。
角色选择处理:
1. WinMain消息循环处理:g_xLoginProc.Re

本文详细分析了游戏客户端的登录处理,包括WinMain主函数的初始化、登录事件的WSAAsyncSelect模型,以及登录、角色选择和游戏逻辑处理的流程。在登录过程中,客户端与服务器交互,验证用户身份并选择服务器。角色选择阶段,客户端获取角色信息并连接到指定服务器。最后,游戏逻辑处理涉及客户端与GameGate服务器的连接,以及GameSrv服务器对用户的认证和资源加载。
最低0.47元/天 解锁文章
7695

被折叠的 条评论
为什么被折叠?



