1 登录状态定义
//登录状态enumPLAYER_LOGIN_STATUS
{
LOGIN_DEBUG_SETTING,//!
2 登录流程采用轮回方式,在Tick中判断当前所处状态
VOID CGamePro_Login::Tick(VOID)
{
CGameProcedure::Tick();switch(m_Status)
{caseLOGIN_DEBUG_SETTING:
{if(!CGameProcedure::s_pUISystem)
{
SetStatus(CGamePro_Login::LOGIN_DISCONNECT);
}else{//DO NOTING,WAIT UI...}
}break;caseLOGIN_SELECT_SERVER://选择服务器状态{//--- for debugif(CGameProcedure::s_pVariableSystem->GetAs_Int("GameServer_ConnectDirect")==1)
{//直接切换到Change-Server流程CGameProcedure::SetActiveProc((CGameProcedure*)CGameProcedure::s_pProcChangeScene);return;
}//--- for debugbreak;
}caseLOGIN_DISCONNECT:
{
s_pGfxSystem->PushDebugString("Connect to login server %s:%d...", m_szLoginServerAddr, m_nLoginServerPort);//开始登录SetStatus(LOGIN_CONNECTING);
CNetManager::GetMe()->ConnectToServer(m_szLoginServerAddr, m_nLoginServerPort);
}break;caseLOGIN_CONNECTING:break;//连接成功caseLOGIN_CONNECTED_OK:
{//设置正在验证密码//SetStatus(LOGIN_ACCOUNT_REQUESTING);}break;//连接失败caseLOGIN_CONNECT_FAILED:
CNetManager::GetMe()->Close();
SetStatus(LOGIN_SELECT_SERVER);break;//正在验证用户名和密码.caseLOGIN_ACCOUNT_REQUESTING:
{//判断是否超时, 超时就提示错误信息.break;
}caseLOGIN_ACCOUNT_BEGIN_REQUESTING:
{break;
}//登录信息验证成功caseLOGIN_ACCOUNT_OK:
{//保存选择的服务器CGameProcedure::s_pVariableSystem->SetAs_Int("Login_Area", CGameProcedure::s_p