diff --git a/CHANGELOG.md b/CHANGELOG.md index 9892568..6438451 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * TeamSpeak 2 - Fixed how `state.name` is set (By @podrivo #544) * Grand Theft Auto: San Andreas OpenMP - Fixed `state.players` returning an empty array (By @Focus04 #547) * Perf: Re-write of the `core` class. +* Perf: Remove many if statements from `GameSpy2`. ## 5.0.0-beta.2 * Fixed support for projects using `require`. diff --git a/protocols/gamespy2.js b/protocols/gamespy2.js index 22c814c..71014e8 100644 --- a/protocols/gamespy2.js +++ b/protocols/gamespy2.js @@ -110,26 +110,23 @@ export default class gamespy2 extends Core { const units = [] while (!reader.done()) { const unit = {} - for (let iField = 0; iField < fields.length; iField++) { - let key = fields[iField] + for (let index = 0; index < fields.length; index++) { + let key = fields[index] let value = reader.string() - if (!value && iField === 0) return units + if (!value && index === 0) return units this.logger.debug('value:' + value) - if (key === 'player_') key = 'name' - else if (key === 'score_') key = 'score' - else if (key === 'deaths_') key = 'deaths' - else if (key === 'ping_') key = 'ping' - else if (key === 'team_') key = 'team' - else if (key === 'kills_') key = 'kills' + + // many fields end with "_" + if (key.endsWith('_')) { + key = key.slice(0, -1) + } + + if (key === 'player') key = 'name' else if (key === 'team_t') key = 'name' else if (key === 'tickets_t') key = 'tickets' - if ( - key === 'score' || key === 'deaths' || - key === 'ping' || key === 'team' || - key === 'kills' || key === 'tickets' - ) { + if (['score', 'deaths', 'ping', 'team', 'kills', 'tickets'].includes(key)) { if (value === '') continue value = parseInt(value) }