Fix raw player subobject in fivem, assettocorsa, gamespy2 Fixes #222

Clarify nodejs 12 requirement for gamedig 3 Fixes #220
Release 3.0.1
This commit is contained in:
Michael Morrison 2021-04-10 22:27:33 -05:00
parent d65a24dc18
commit fec5a1fac6
6 changed files with 25 additions and 20 deletions

View file

@ -1,5 +1,10 @@
### 3.0.1
* Clarified that nodejs 12 is now required for gamedig 3
* Fixed misc player fields not going into `raw` subobject in `assettocorsa`, `fivem`, and `gamespy2`
### 3.0.0 ### 3.0.0
Major Changes: Major Changes:
* **NodeJS 12 is now required**
* The `name` field is now guaranteed to exist on all player objects. If a player's name is unknown, the `name` will be an empty string. * The `name` field is now guaranteed to exist on all player objects. If a player's name is unknown, the `name` will be an empty string.
* All non-`name` player fields have been moved into a `raw` sub-field. This means that, like the `raw` subobject of the parent * All non-`name` player fields have been moved into a `raw` sub-field. This means that, like the `raw` subobject of the parent
response, all non-`name` fields are now considered to be unstable and may be changed during minor releases of GameDig. response, all non-`name` fields are now considered to be unstable and may be changed during minor releases of GameDig.

8
package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "gamedig", "name": "gamedig",
"version": "2.0.21", "version": "3.0.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -51,9 +51,9 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "8.10.61", "version": "12.20.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.61.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.7.tgz",
"integrity": "sha512-l+zSbvT8TPRaCxL1l9cwHCb0tSqGAGcjPJFItGGYat5oCTiq1uQQKYg5m7AF1mgnEBzFXGLJ2LRmNjtreRX76Q==" "integrity": "sha512-gWL8VUkg8VRaCAUgG9WmhefMqHmMblxe2rVpMF86nZY/+ZysU+BkAp+3cz03AixWDSSz0ks5WX59yAhv/cDwFA=="
}, },
"@types/responselike": { "@types/responselike": {
"version": "1.0.0", "version": "1.0.0",

View file

@ -24,7 +24,7 @@
], ],
"main": "lib/index.js", "main": "lib/index.js",
"author": "GameDig Contributors", "author": "GameDig Contributors",
"version": "3.0.0", "version": "3.0.1",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/gamedig/node-gamedig.git" "url": "https://github.com/gamedig/node-gamedig.git"
@ -34,7 +34,7 @@
}, },
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=8.0.0" "node": ">=12.0.0"
}, },
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.3", "cheerio": "^1.0.0-rc.3",
@ -61,6 +61,6 @@
], ],
"devDependencies": { "devDependencies": {
"@types/cheerio": "^0.22.21", "@types/cheerio": "^0.22.21",
"@types/node": "^8.10.61" "@types/node": "^12.20.7"
} }
} }

View file

@ -23,18 +23,17 @@ class AssettoCorsa extends Core {
state.raw.carInfo = carInfo.Cars; state.raw.carInfo = carInfo.Cars;
state.raw.serverInfo = serverInfo; state.raw.serverInfo = serverInfo;
state.players = carInfo.Cars.reduce((r, e) => { for (const car of carInfo.Cars) {
if (e.IsConnected) { if (car.IsConnected) {
r.push({ state.players.push({
name: e.DriverName, name: car.DriverName,
car: e.Model, car: car.Model,
skin: e.Skin, skin: car.Skin,
nation: e.DriverNation, nation: car.DriverNation,
team: e.DriverTeam team: car.DriverTeam
}); });
} }
return r; }
}, state.players);
} }
} }

View file

@ -25,7 +25,6 @@ class FiveM extends Quake2 {
responseType: 'json' responseType: 'json'
}); });
state.raw.players = json; state.raw.players = json;
state.players = [];
for (const player of json) { for (const player of json) {
state.players.push({name: player.name, ping: player.ping}); state.players.push({name: player.name, ping: player.ping});
} }

View file

@ -29,7 +29,9 @@ class Gamespy2 extends Core {
{ {
const body = await this.sendPacket([0, 0xff, 0]); const body = await this.sendPacket([0, 0xff, 0]);
const reader = this.reader(body); const reader = this.reader(body);
state.players = this.readFieldData(reader); for (const rawPlayer of this.readFieldData(reader)) {
state.players.push(rawPlayer);
}
} }
// Parse teams // Parse teams