KevinBlast/marble/client/ui/joinServerGui.gui

356 lines
9.8 KiB
Plaintext
Raw Normal View History

2024-03-10 20:27:00 -04:00
//--- OBJECT WRITE BEGIN ---
new GuiChunkedBitmapCtrl(JoinServerGui) {
profile = "GuiContentProfile";
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "640 480";
minExtent = "8 8";
visible = "1";
helpTag = "0";
bitmap = "./background.jpg";
useVariable = "0";
tile = "0";
new GuiControl() {
profile = "GuiWindowProfile";
horizSizing = "center";
vertSizing = "center";
position = "92 86";
extent = "455 308";
minExtent = "8 8";
visible = "1";
helpTag = "0";
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "14 42";
extent = "30 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Pass";
maxLength = "255";
};
new GuiButtonCtrl(JS_queryMaster) {
profile = "GuiButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "164 272";
extent = "127 23";
minExtent = "8 8";
visible = "1";
command = "Canvas.getContent().query();";
helpTag = "0";
text = "Query Master";
};
new GuiButtonCtrl(JS_joinServer) {
profile = "GuiButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "318 272";
extent = "127 23";
minExtent = "8 8";
visible = "1";
command = "Canvas.getContent().join();";
helpTag = "0";
text = "Join Server";
active = "0";
};
new GuiScrollCtrl() {
profile = "GuiScrollProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "10 75";
extent = "437 186";
minExtent = "8 8";
visible = "1";
helpTag = "0";
willFirstRespond = "1";
hScrollBar = "dynamic";
vScrollBar = "alwaysOn";
constantThumbHeight = "0";
defaultLineHeight = "15";
childMargin = "0 0";
new GuiTextListCtrl(JS_serverList) {
profile = "GuiTextArrayProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "419 8";
minExtent = "8 8";
visible = "1";
helpTag = "0";
enumerate = "0";
resizeCell = "1";
columns = "0 40 195 260 325 385";
fitParentWidth = "1";
clipColumnText = "0";
noDuplicates = "false";
};
};
new GuiTextEditCtrl() {
profile = "GuiTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "98 15";
extent = "134 16";
minExtent = "8 8";
visible = "1";
variable = "pref::Player::Name";
helpTag = "0";
maxLength = "255";
historySize = "0";
password = "0";
tabComplete = "0";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "12 11";
extent = "79 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Player Name:";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "269 42";
extent = "44 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Players";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "335 42";
extent = "44 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Version";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "412 42";
extent = "35 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Game";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "212 42";
extent = "26 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Ping";
maxLength = "255";
};
new GuiTextCtrl() {
profile = "GuiTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "72 42";
extent = "74 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
text = "Server Name";
maxLength = "255";
};
new GuiButtonCtrl() {
profile = "GuiButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "10 272";
extent = "127 23";
minExtent = "8 8";
visible = "1";
command = "Canvas.getContent().exit();";
helpTag = "0";
text = "<< Back";
};
new GuiControl(JS_queryStatus) {
profile = "GuiWindowProfile";
horizSizing = "center";
vertSizing = "center";
position = "72 129";
extent = "310 50";
minExtent = "8 8";
visible = "0";
helpTag = "0";
new GuiButtonCtrl(JS_cancelQuery) {
profile = "GuiButtonProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "9 15";
extent = "64 20";
minExtent = "8 8";
visible = "1";
command = "Canvas.getContent().cancel();";
helpTag = "0";
text = "Cancel";
};
new GuiProgressCtrl(JS_statusBar) {
profile = "GuiProgressProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "84 15";
extent = "207 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
};
new GuiTextCtrl(JS_statusText) {
profile = "GuiProgressTextProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "85 14";
extent = "205 20";
minExtent = "8 8";
visible = "1";
helpTag = "0";
maxLength = "255";
};
};
};
};
//--- OBJECT WRITE END ---
//----------------------------------------
function JoinServerGui::onWake()
{
// Double check the status. Tried setting this the control
// inactive to start with, but that didn't seem to work.
JS_joinServer.setActive(JS_serverList.rowCount() > 0);
}
//----------------------------------------
function JoinServerGui::query(%this)
{
queryMasterServer(
28000, // 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 JoinServerGui::cancel(%this)
{
cancelServerQuery();
}
//----------------------------------------
function JoinServerGui::join(%this)
{
cancelServerQuery();
%id = JS_serverList.getSelectedId();
// The server info index is stored in the row along with the
// rest of displayed info.
%index = getField(JS_serverList.getRowTextById(%id),6);
if (setServerInfo(%index)) {
%conn = new GameConnection(ServerConnection);
%conn.setConnectArgs($pref::Player::Name);
%conn.setJoinPassword($Client::Password);
%conn.connect($ServerInfo::Address);
}
}
//----------------------------------------
function JoinServerGui::exit(%this)
{
cancelServerQuery();
Canvas.setContent(mainMenuGui);
}
//----------------------------------------
function JoinServerGui::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::Password? "Yes": "No") TAB
$ServerInfo::Name TAB
$ServerInfo::Ping TAB
$ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
$ServerInfo::Version TAB
$ServerInfo::GameType TAB
%i); // ServerInfo index stored also
}
JS_serverList.sort(0);
JS_serverList.setSelectedRow(0);
JS_serverList.scrollVisible(0);
JS_joinServer.setActive(JS_serverList.rowCount() > 0);
}
//----------------------------------------
function onServerQueryStatus(%status, %msg, %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_joinServer.setActive(false);
JS_queryMaster.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":
JS_queryMaster.setActive(true);
JS_queryStatus.setVisible(false);
JoinServerGui.update();
}
}