| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- function JoinServerMenu::onWake()
- {
- // Double check the status. Tried setting this the control
- // inactive to start with, but that didn't seem to work.
- JoinServerJoinBtn.setActive(JS_serverList.rowCount() > 0);
-
- JoinServerButtonHolder.setActive();
-
- JoinServerMenuInputHandler.setFirstResponder();
- }
- function JoinServerButtonHolder::onWake(%this)
- {
- %this-->joinButton.set("btn_start", "Return", "Join", "JoinServerMenu.join();");
- %this-->backButton.set("btn_b", "Escape", "Back", "JoinServerMenu.backOut();");
- %this-->refreshButton.set("btn_y", "R", "Refresh", "JoinServerMenu.refresh();");
- %this-->queryLANButton.set("btn_a", "Q", "Query LAN", "JoinServerMenu.queryLan();");
- %this-->queryInternetButton.set("btn_x", "E", "Query Internet", "JoinServerMenu.query();");
- }
- function JoinServerMenuInputHandler::onInputEvent(%this, %device, %action, %state)
- {
- if(%state)
- $activeMenuButtonContainer.processInputs(%device, %action);
- }
- //----------------------------------------
- function JoinServerMenu::query(%this)
- {
- queryMasterServer(
- 0, // Query flags
- $Client::GameTypeQuery, // gameTypes
- $Client::MissionTypeQuery, // missionType
- 0, // minPlayers
- 100, // maxPlayers
- 0, // maxBots
- 2, // regionMask
- 0, // maxPing
- 100, // minCPU
- 0 // filterFlags
- );
- }
- //----------------------------------------
- function JoinServerMenu::queryLan(%this)
- {
- queryLANServers(
- $pref::Net::Port, // lanPort for local queries
- 0, // Query flags
- $Client::GameTypeQuery, // gameTypes
- $Client::MissionTypeQuery, // missionType
- 0, // minPlayers
- 100, // maxPlayers
- 0, // maxBots
- 2, // regionMask
- 0, // maxPing
- 100, // minCPU
- 0 // filterFlags
- );
- }
- //----------------------------------------
- function JoinServerMenu::cancel(%this)
- {
- cancelServerQuery();
- JS_queryStatus.setVisible(false);
- }
- //----------------------------------------
- function JoinServerMenu::join(%this)
- {
- cancelServerQuery();
- %index = JS_serverList.getSelectedId();
- JoinGame(%index);
- }
- //----------------------------------------
- function JoinServerMenu::refresh(%this)
- {
- cancelServerQuery();
- %index= JS_serverList.getSelectedId();
- // The server info index is stored in the row along with the
- // rest of displayed info.
- if( setServerInfo( %index ) )
- querySingleServer( $ServerInfo::Address, 0 );
- }
- //----------------------------------------
- function JoinServerMenu::refreshSelectedServer( %this )
- {
- querySingleServer( $JoinGameAddress, 0 );
- }
- //----------------------------------------
- function JoinServerMenu::backOut(%this)
- {
- cancelServerQuery();
-
- Canvas.popDialog(JoinServerMenu);
- if(isObject(JoinServerMenu.returnGui) && JoinServerMenu.returnGui.isMethod("onReturnTo"))
- JoinServerMenu.returnGui.onReturnTo();
- }
- //----------------------------------------
- function JoinServerMenu::update(%this)
- {
- // Copy the servers into the server list.
- JS_queryStatus.setVisible(false);
- JS_serverList.clear();
- %sc = getServerCount();
- for( %i = 0; %i < %sc; %i ++ ) {
- setServerInfo(%i);
- JS_serverList.addRow( %i,
- $ServerInfo::Name TAB
- $ServerInfo::Ping TAB
- $ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
- $ServerInfo::Version TAB
- $ServerInfo::MissionName
- );
- }
- JS_serverList.sort(0);
- JS_serverList.setSelectedRow(0);
- JS_serverList.scrollVisible(0);
- JoinServerJoinBtn.setActive(JS_serverList.rowCount() > 0);
- }
- //----------------------------------------
- function onServerQueryStatus(%status, %msg, %value)
- {
- echo("ServerQuery: " SPC %status SPC %msg SPC %value);
- // Update query status
- // States: start, update, ping, query, done
- // value = % (0-1) done for ping and query states
- if (!JS_queryStatus.isVisible())
- JS_queryStatus.setVisible(true);
- switch$ (%status) {
- case "start":
- JoinServerJoinBtn.setActive(false);
- JoinServerQryInternetBtn.setActive(false);
- JS_statusText.setText(%msg);
- JS_statusBar.setValue(0);
- JS_serverList.clear();
- case "ping":
- JS_statusText.setText("Ping Servers");
- JS_statusBar.setValue(%value);
- case "query":
- JS_statusText.setText("Query Servers");
- JS_statusBar.setValue(%value);
- case "done":
- JoinServerQryInternetBtn.setActive(true);
- JS_queryStatus.setVisible(false);
- JS_status.setText(%msg);
- JoinServerMenu.update();
- }
- }
|