Beispiel #1
0
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;
}
Beispiel #2
0
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;
};