jka-core
Version:
Library for working with Jedi Academy servers
91 lines (90 loc) • 4.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStatusParser = void 0;
const index_1 = require("../../index");
const index_2 = require("../../../index");
const getStatusRaw_parser_1 = require("./getStatusRaw.parser");
const cvarsTypeHashMap = {
str: [
index_2.EGetStatusFields.SV_HOSTNAME,
index_2.EGetStatusFields.MAPNAME,
index_2.EGetStatusFields.G_GAMETYPE,
index_2.EGetStatusFields.G_SIEGE_TEAM1,
index_2.EGetStatusFields.G_SIEGE_TEAM2,
index_2.EGetStatusFields.GAMENAME,
],
strToInt: [
index_2.EGetStatusFields.SV_MAXCLIENTS,
index_2.EGetStatusFields.TIMELIMIT,
index_2.EGetStatusFields.FRAGLIMIT,
index_2.EGetStatusFields.DUEL_FRAGLIMIT,
index_2.EGetStatusFields.G_MAX_GAME_CLIENTS,
index_2.EGetStatusFields.G_SIEGE_RESPAWN,
index_2.EGetStatusFields.G_FORCEREGENTIME,
index_2.EGetStatusFields.SV_MAX_PING,
index_2.EGetStatusFields.SV_MIN_PING,
index_2.EGetStatusFields.SV_MAX_RATE,
index_2.EGetStatusFields.G_MAX_FORCE_RANK,
index_2.EGetStatusFields.CAPTURELIMIT,
index_2.EGetStatusFields.DMFLAGS,
index_2.EGetStatusFields.G_MAX_HOLOCRON_CARRY,
index_2.EGetStatusFields.PROTOCOL,
index_2.EGetStatusFields.SV_PRIVATE_CLIENTS,
index_2.EGetStatusFields.BOT_MINPLAYERS,
],
strToFloat: [
index_2.EGetStatusFields.G_SABERWALLDAMAGESCALE,
],
bitfields: [
index_2.EGetStatusFields.G_FORCEPOWERDISABLE,
index_2.EGetStatusFields.G_WEAPONDISABLE,
index_2.EGetStatusFields.G_DUEL_WEAPON_DISABLE,
],
booleans: [
index_2.EGetStatusFields.G_DEBUGMELEE,
index_2.EGetStatusFields.G_JEDI_VMERC,
index_2.EGetStatusFields.G_SIEGE_TEAM_SWITCH,
index_2.EGetStatusFields.G_STEPSLIDEFIX,
index_2.EGetStatusFields.SV_ALLOW_DOWNLOAD,
index_2.EGetStatusFields.SV_FLOOD_PROTECT,
index_2.EGetStatusFields.G_NEEDPASS,
index_2.EGetStatusFields.G_FORCE_BASED_TEAMS,
index_2.EGetStatusFields.G_PRIVATE_DUEL,
index_2.EGetStatusFields.G_NO_SPEC_MOVE,
index_2.EGetStatusFields.G_ALLOW_NPC,
index_2.EGetStatusFields.G_SHOW_DUEL_HEALTHS,
],
};
function getStatusParser(strToParse) {
const getStatusRawParsed = (0, getStatusRaw_parser_1.getStatusRawParser)(strToParse);
let result = {
cvars: {},
clients: [],
};
cvarsTypeHashMap.str.forEach((field) => {
result.cvars[field] = getStatusRawParsed.cvars[field];
});
cvarsTypeHashMap.strToInt.forEach((field) => {
result.cvars[field] = (0, index_1.parseIntOtherwiseNull)(getStatusRawParsed.cvars[field]);
});
cvarsTypeHashMap.strToFloat.forEach((field) => {
result.cvars[field] = (0, index_1.parseFloatOtherwiseNull)(getStatusRawParsed.cvars[field]);
});
cvarsTypeHashMap.booleans.forEach((field) => {
result.cvars[field] = (0, index_1.parseBooleanOtherwiseNull)(getStatusRawParsed.cvars[field]);
});
result.cvars[index_2.EGetStatusFields.G_FORCEPOWERDISABLE]
= new index_2.Bitfield(parseInt(getStatusRawParsed.cvars[index_2.EGetStatusFields.G_FORCEPOWERDISABLE]), index_2.FORCEPOWER_DISABLE_VALUES.length, index_2.FORCEPOWER_DISABLE_VALUES);
result.cvars[index_2.EGetStatusFields.G_WEAPONDISABLE]
= new index_2.Bitfield(parseInt(getStatusRawParsed.cvars[index_2.EGetStatusFields.G_WEAPONDISABLE]), index_2.WEAPON_DISABLE_VALUES.length, index_2.WEAPON_DISABLE_VALUES);
result.cvars[index_2.EGetStatusFields.G_DUEL_WEAPON_DISABLE]
= new index_2.Bitfield(parseInt(getStatusRawParsed.cvars[index_2.EGetStatusFields.G_WEAPONDISABLE]), index_2.WEAPON_DISABLE_VALUES.length, index_2.WEAPON_DISABLE_VALUES);
result.clients = getStatusRawParsed.clients.map((el) => ({
name: el.name,
ping: (0, index_1.parseIntOtherwiseNull)(el.ping),
score: (0, index_1.parseIntOtherwiseNull)(el.score),
isBot: (0, index_1.parseIntOtherwiseNull)(el.ping) === 0,
}));
return result;
}
exports.getStatusParser = getStatusParser;