uint32 CScreenJoin::HandleCallback(uint32 dwParam1, uint32 dwParam2) { switch (dwParam2) { case CMD_JOIN : { JoinCurGame(); break; } case CMD_EDIT_CDKEY : { IServerDirectory *pServerDir = g_pClientMultiplayerMgr->GetServerDir(); if (!pServerDir->SetCDKey((const char *)dwParam1)) { // Tell them that's a bad CD key and exit this screen // NYI ChangeState(eState_Error); } else { m_sCurCDKey = ((const char *)dwParam1); m_pCDKeyCtrl->SetString(1,m_sCurCDKey.c_str()); pServerDir->QueueRequest(IServerDirectory::eRequest_Validate_CDKey); } break; } } ChangeState(eState_Waiting); return 1; }
uint32 CScreenJoin::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) { switch(dwCommand) { case CMD_CANCEL : { ChangeState(eState_Waiting); break; } case CMD_OK: { return HandleCallback(dwParam1,dwParam2); } case CMD_SEARCH : { FindServers(); break; } case CMD_EDIT_CDKEY : { ChangeState(eState_ChangeCDKey); break; } case CMD_JOIN: { if (dwParam1 >= m_cServerList.size()) return 0; m_nSelectedServer = dwParam1; if (g_pGameClientShell->IsWorldLoaded()) { if (IsCurrentGame(m_cServerList[m_nSelectedServer].m_sAddress.c_str())) { HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); if (g_pGameClientShell->IsWorldLoaded() && hPlayerObj) { g_pInterfaceMgr->ChangeState(GS_PLAYING); } } else { MBCreate mb; mb.eType = LTMB_YESNO; mb.pFn = JoinLanConfirmationCallback; g_pInterfaceMgr->ShowMessageBox(IDS_ENDCURRENTGAME,&mb); } } else { JoinCurGame(); } break; } default: return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); } return 1; }
uint32 CFolderJoin::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) { switch(dwCommand) { case CMD_SELECT_SERVER: { int nIndex = m_pServerList->GetSelectedItem(); void* pGame = LTNULL; if (nIndex != CListCtrl::kNoSelection) { pGame = (void*)m_pServerList->GetControl(nIndex)->GetParam1(); } if (pGame != GetCurGameServerHandle()) { SetCurGameServerHandle(pGame); SetState(FSS_GETALLDATA); } UpdatePlayers(TRUE); } break; case CMD_REFRESH_SERVERS: { SetState(FSS_GETSERVICES); break; } case CMD_REPING_SERVERS: { //SetState(FSS_GETPINGS); break; } case CMD_VERSION_FILTER: { m_nVersionFilter = !m_nVersionFilter; m_pVersionFilter->UpdateData(LTFALSE); ForceNextUpdate(); } break; case CMD_GAME_FILTER: { m_nGameFilter++; if (m_nGameFilter > NGT_FILTER_LAST) m_nGameFilter = 0; m_pGameFilter->UpdateData(LTFALSE); ForceNextUpdate(); } break; case CMD_POP_FILTER: { m_nPopFilter++; if (m_nPopFilter > POP_FILTER_LAST) m_nPopFilter = 0; m_pPopFilter->UpdateData(LTFALSE); ForceNextUpdate(); } break; case CMD_SORT_SERV_NAME: { SetServerSort(FSS_SORT_NAME); SortServers(); } break; case CMD_SORT_SERV_PLAYERS: { SetServerSort(FSS_SORT_PLAYERS); SortServers(); } break; case CMD_SORT_SERV_PING: { SetServerSort(FSS_SORT_PING); SortServers(); } break; case CMD_SORT_SERV_GAME: { SetServerSort(FSS_SORT_GAME); SortServers(); } break; case CMD_SORT_SERV_MAP: { SetServerSort(FSS_SORT_MAP); SortServers(); } break; case CMD_SORT_PLYR_NAME: { SetPlayerSort(FSS_SORT_NAME); SortPlayers(); } break; case CMD_SORT_PLYR_SCORE: { SetPlayerSort(FSS_SORT_FRAGS); SortPlayers(); } break; case CMD_SORT_PLYR_PING: { SetPlayerSort(FSS_SORT_PING); SortPlayers(); } break; case CMD_EDIT_PASS: { SetCapture(LTNULL); m_pPassEdit->UpdateData(); RemoveFixedControl(m_pPassEdit); RemoveFixedControl(m_pPassLabel); RemoveFixedControl(m_pPassBack); m_bAskingForPassword = LTFALSE; ForceMouseUpdate(); JoinCurGame(LTTRUE); } break; case CMD_JOIN: { CGameSpyServer* pGame = GetGameSpyClientMgr()->GetServerFromHandle(m_pCurServerHandle); if (g_pGameClientShell->IsInWorld() && pGame) { if (IsCurrentGame(pGame)) { HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); if (g_pGameClientShell->IsInWorld() && hPlayerObj) { g_pInterfaceMgr->ChangeState(GS_PLAYING); } } else { HSTRING hString = g_pLTClient->FormatString(IDS_ENDCURRENTGAME); g_pInterfaceMgr->ShowMessageBox(hString,LTMB_YESNO,JoinCallBack,this); g_pLTClient->FreeString(hString); } } else { JoinCurGame(); } } break; default: return CBaseFolder::OnCommand(dwCommand,dwParam1,dwParam2); } return 1; };