1
0
mirror of https://github.com/XLabsProject/iw4x-rawfiles.git synced 2023-08-02 15:02:11 +02:00
iw4x-rawfiles/iw4x/html/script.js
2023-03-28 18:07:11 +01:00

107 lines
2.6 KiB
JavaScript

window.address = location.hostname + (location.port ? ':' + location.port : '');
window.origin = location.protocol + '//' + window.address;
function toBool (data)
{
if (data > 0)
{
return "Yes";
}
return "No";
}
function getFfType (data)
{
switch(data)
{
case 0:
return "Disabled";
case 1:
return "Enabled";
case 2:
return "Reflected";
case 3:
return "Shared";
default:
return "Disabled";
}
}
function getServerInfo(status, countPlayers)
{
var mod = status.fs_game;
if (!mod)
{
mod = "";
}
var row = "<tr>";
row += "<td><b>Map:</b> " + status.mapname + "</td><td><b>Gametype:</b> " + status.g_gametype + "</td><td><b>Players:</b> " + countPlayers + "/" + status.sv_maxclients + "</td>";
row += "</tr><tr>"
row += "<td><b>Mod:</b> " + mod.replace(/^mods\//g, "") + "</td><td><b>Security Level:</b> " + status.sv_securityLevel + "</td><td><b>Password Protected:</b> " + toBool(status.isPrivate) + "</td>";
row += "</tr><tr>"
row += "<td><b>Hardcore Mode:</b> " + toBool(status.g_hardcore) + "</td><td><b>KillCam:</b> " + toBool(status.scr_game_allowkillcam) + "</td><td><b>Friendly Fire:</b> " + getFfType(status.scr_team_fftype) + "</td>";
row += "</tr>"
$("#serverinfo").append(row);
}
function buildPlayerList(players)
{
for (var i = 0; i < players.length; ++i)
{
var row = "<tr>";
row += "<td>" + players[i].name + "</td>";
row += "<td>" + players[i].test_client + "</td>";
row += "<td>" + players[i].score + "</td>";
row += "<td>" + players[i].ping + "</td>";
row += "</tr>";
$("#players").append(row);
}
if (players.length == 0)
{
$("#playertable").fadeOut(1);
}
}
function buildPage(data)
{
// Get dvar sv_hostname and remove color codes
var hostname = (data["status"]["sv_hostname"]).replace(/\^[0-9:;c]/g, "");
// Set title
document.title = hostname
$("#servername").text(document.title);
getServerInfo(data["status"], data["players"].length);
buildPlayerList(data["players"]);
$('body').fadeIn(300);
}
$(document).ready(function()
{
$("#connect").click(function()
{
location.replace("iw4x://" + window.address);
});
$.getJSON(origin + "/info", function(data)
{
console.log(data);
setTimeout(buildPage.bind(undefined, data), 10);
}).fail(function()
{
alert("An error occured while updating the server information!");
});
$("#footer").click(function()
{
location.replace("https://xlabs.dev");
});
});