UNPKG

jka-core

Version:

Library for working with Jedi Academy servers

91 lines (90 loc) 4.18 kB
"use strict"; 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;