mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Cleaned up some unneeded fields in the gui files Fixed up querying presentation for joinServerMenu Removed usages of background image in favor of guiProfiles for various menus Implemented optionsMenu traversing options categories along with required keybinds Adjusted some guiProfiles' font sizes to improve legibility on smaller displays
272 lines
8 KiB
Plaintext
272 lines
8 KiB
Plaintext
|
|
function JoinServerMenu::onWake(%this)
|
|
{
|
|
$MenuList = JoinServerList;
|
|
JoinServerList.listPosition = 0;
|
|
|
|
JoinServerList.syncGui();
|
|
}
|
|
|
|
if(!isObject( JoinServerActionMap ) )
|
|
{
|
|
new ActionMap(JoinServerActionMap){};
|
|
|
|
JoinServerActionMap.bindCmd( keyboard, q, "JoinServerMenu.query();" );
|
|
JoinServerActionMap.bindCmd( gamepad, btn_x, "JoinServerMenu.query();" );
|
|
|
|
JoinServerActionMap.bindCmd( keyboard, e, "JoinServerMenu.queryLan();" );
|
|
JoinServerActionMap.bindCmd( gamepad, btn_y, "JoinServerMenu.queryLan();" );
|
|
|
|
JoinServerActionMap.bindCmd( keyboard, Enter, "JoinServerMenu::join();" );
|
|
JoinServerActionMap.bindCmd( gamepad, btn_a, "JoinServerMenu::join();" );
|
|
}
|
|
|
|
//----------------------------------------
|
|
function JoinServerMenu::query(%this)
|
|
{
|
|
//Nuke the current list and indicate we're working on a query...
|
|
JoinServerList.clear();
|
|
|
|
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)
|
|
{
|
|
//Nuke the current list and indicate we're working on a query...
|
|
JoinServerList.clear();
|
|
|
|
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();
|
|
JoinGame(JoinServerList.listPosition);
|
|
}
|
|
|
|
//----------------------------------------
|
|
function JoinServerMenu::refresh(%this)
|
|
{
|
|
cancelServerQuery();
|
|
%index = JoinServerList.listPosition;
|
|
|
|
// 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);
|
|
|
|
%serverEntry = %this.addServerEntry();
|
|
%serverEntry-->serverNameTxt.text = $ServerInfo::Name;
|
|
%serverEntry-->serverDetailsTxt.text = $ServerInfo::MissionName @ " | v" @ $ServerInfo::Version @ " | " @ $ServerInfo::MissionType;
|
|
%serverEntry-->pingTxt.text = $ServerInfo::Ping @ " ms";
|
|
%serverEntry-->playerCountTxt.text = $ServerInfo::PlayerCount @ "|" @ $ServerInfo::MaxPlayers;
|
|
|
|
%serverEntry.resize(0, 0, JoinServerList.extent.x, %serverEntry.extent.y);
|
|
|
|
JoinServerList.add(%serverEntry);
|
|
}
|
|
|
|
JoinServerList.syncGui();
|
|
}
|
|
|
|
//----------------------------------------
|
|
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":
|
|
MessagePopup("", %msg, 5000);
|
|
JoinServerList.clear();
|
|
|
|
case "ping":
|
|
MessagePopup("", "Pinging Servers", 5000);
|
|
|
|
case "query":
|
|
MessagePopup("", "Querying Servers", 5000);
|
|
|
|
case "done":
|
|
MessagePopup("", %msg, 1000);
|
|
JoinServerMenu.update();
|
|
}
|
|
}
|
|
|
|
function JoinServerMenu::addServerEntry(%this)
|
|
{
|
|
%entry = new GuiContainer() {
|
|
position = "0 0";
|
|
extent = "900 40";
|
|
profile = GuiMenuDefaultProfile;
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "bottom";
|
|
class = "JoinServerServerEntry";
|
|
|
|
new GuiButtonCtrl() {
|
|
profile = GuiMenuButtonProfile;
|
|
position = "0 0";
|
|
extent = "900 40";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
internalName = "button";
|
|
class = "JoinServerEntryButton";
|
|
};
|
|
|
|
new GuiTextCtrl() {
|
|
position = "0 0";
|
|
extent = "700 20";
|
|
profile = "MenuSubHeaderText";
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
internalName = "serverNameTxt";
|
|
};
|
|
new GuiTextCtrl() {
|
|
position = $optionsEntryPad SPC 17;
|
|
extent = "700 18";
|
|
profile = "GuiMLTextProfile";
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
internalName = "serverDetailsTxt";
|
|
};
|
|
|
|
new GuiTextCtrl() {
|
|
position = "700 0";
|
|
extent = "70 40";
|
|
horizSizing = "left";
|
|
vertSizing = "center";
|
|
profile = "MenuSubHeaderCenteredText";
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
internalName = "pingTxt";
|
|
};
|
|
|
|
new GuiTextCtrl() {
|
|
position = "770 0";
|
|
extent = "130 40";
|
|
horizSizing = "left";
|
|
vertSizing = "center";
|
|
profile = "MenuSubHeaderCenteredText";
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
internalName = "playerCountTxt";
|
|
};
|
|
};
|
|
|
|
return %entry;
|
|
}
|
|
|
|
function JoinServerEntryButton::onHighlighted(%this, %highlighted)
|
|
{
|
|
%container = %this.getParent();
|
|
|
|
%container-->serverNameTxt.profile = %highlighted ? MenuSubHeaderTextHighlighted : MenuSubHeaderText;
|
|
%container-->serverDetailsTxt.profile = %highlighted ? GuiMLTextProfileHighlighted : GuiMLTextProfile;
|
|
%container-->pingTxt.profile = %highlighted ? MenuSubHeaderCenteredTextHighlighted : MenuSubHeaderCenteredText;
|
|
%container-->playerCountTxt.profile = %highlighted ? MenuSubHeaderCenteredTextHighlighted : MenuSubHeaderCenteredText;
|
|
}
|
|
|
|
function JoinServerMenu::addStatusEntry(%this)
|
|
{
|
|
%entry = new GuiContainer() {
|
|
position = "0 0";
|
|
extent = "900 40";
|
|
profile = GuiMenuDefaultProfile;
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "bottom";
|
|
class = "JoinServerStatusEntry";
|
|
|
|
new GuiTextCtrl() {
|
|
position = "0 0";
|
|
extent = "730 20";
|
|
profile = "MenuSubHeaderCenteredText";
|
|
tooltipProfile = "GuiToolTipProfile";
|
|
internalName = "statusTxt";
|
|
};
|
|
};
|
|
|
|
return %entry;
|
|
}
|
|
|
|
function JoinServerStatusEntry::updateProgress(%this)
|
|
{
|
|
%this-->statusText.text = %this-->statusText.text @ "."; //ellipses.......
|
|
|
|
%this.schedule(500, "updateProgress");
|
|
}
|
|
|
|
function JoinServerList::syncGui(%this)
|
|
{
|
|
%this.callOnChildren("setHighlighted", false);
|
|
|
|
if(%this.listPosition < %this.getCount())
|
|
{
|
|
%btn = %this.getObject(%this.listPosition);
|
|
%btn-->button.setHighlighted(true);
|
|
}
|
|
|
|
//
|
|
//Update the button imagery to comply to the last input device we'd used
|
|
%device = Canvas.getLastInputDevice();
|
|
if(%device $= "mouse")
|
|
%device = "keyboard";
|
|
|
|
JoinServerBackBtn.setBitmap(BaseUIActionMap.getCommandButtonBitmap(%device, "BaseUIBackOut"));
|
|
JoinServerJoinBtn.setBitmap(JoinServerActionMap.getCommandButtonBitmap(%device, "JoinServerMenu::join();"));
|
|
JoinServerQLanBtn.setBitmap(JoinServerActionMap.getCommandButtonBitmap(%device, "JoinServerMenu.queryLan();"));
|
|
JoinServerQServerBtn.setBitmap(JoinServerActionMap.getCommandButtonBitmap(%device, "JoinServerMenu.query();"));
|
|
|
|
|
|
JoinServerJoinBtn.setActive(JoinServerList.getCount() > 0);
|
|
} |