perf: remove some if statements in gamespy 2

This commit is contained in:
CosminPerRam 2024-02-24 18:59:17 +02:00
parent 96289b2b00
commit fb6a5a1c7a
2 changed files with 12 additions and 14 deletions

View File

@ -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`.

View File

@ -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)
}