mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Also fixes behavior handling of menu input buttons not refreshing reliably Adds ability to define a control on a MenuList to act as a highlighter over the currently selected control Cleaned up BaseUI pages to use UINavigation which reduced a lot of duplication of elements and code
141 lines
4 KiB
Plaintext
141 lines
4 KiB
Plaintext
|
|
function JoinServerMenu::onWake(%this)
|
|
{
|
|
}
|
|
|
|
function JoinServerMenu::onOpen(%this)
|
|
{
|
|
JoinServerList.setAsActiveMenuList();
|
|
|
|
$activeMenuButtonContainer-->button1.set("btn_y", "R", "Refresh", "JoinServerMenu.refresh();");
|
|
$activeMenuButtonContainer-->button2.set("btn_a", "Q", "Query LAN", "JoinServerMenu.queryLan();");
|
|
$activeMenuButtonContainer-->button3.set("btn_x", "E", "Query Online", "JoinServerMenu.query();");
|
|
$activeMenuButtonContainer-->button4.set("btn_start", "Return", "Join", "JoinServerMenu.join();");
|
|
$activeMenuButtonContainer-->button5.set("btn_b", "Escape", "Back", "cancelServerQuery(); " @ %this @ ".navigation.popPage();");
|
|
}
|
|
|
|
//----------------------------------------
|
|
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= JoinServerList.getActiveRow();
|
|
|
|
// 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::update(%this)
|
|
{
|
|
// Copy the servers into the server list.
|
|
JS_queryStatus.setVisible(false);
|
|
JoinServerList.clear();
|
|
%sc = getServerCount();
|
|
for( %i = 0; %i < %sc; %i ++ ) {
|
|
setServerInfo(%i);
|
|
%serverBtn = new GuiButtonCtrl(){
|
|
text = $ServerInfo::Name TAB
|
|
$ServerInfo::Ping TAB
|
|
$ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
|
|
$ServerInfo::Version TAB
|
|
$ServerInfo::MissionName;
|
|
profile = GuiJoinServerButtonProfile;
|
|
extent = JoinServerList.extent.x SPC 30;
|
|
};
|
|
JoinServerList.add(%serverBtn);
|
|
}
|
|
|
|
$activeMenuButtonContainer-->button4.setActive(JoinServerList.getCount() > 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":
|
|
JS_statusText.setText(%msg);
|
|
JS_statusBar.setValue(0);
|
|
JoinServerList.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":
|
|
JS_queryStatus.setVisible(false);
|
|
JS_status.setText(%msg);
|
|
JoinServerMenu.update();
|
|
}
|
|
}
|