SquadJS/squad-server/layers/layer.js
ect0s 5964b37769 Attempt Fix vehicle filtering for maps with 0 tanks or helicopters
2.12 Squad, some layers have no vehicles, so when reading JSON from the wiki team we reject a promise because no data[t].vehicles property, this sets to empty array before we attempt a filter.

Should stop promise rejection during startup
2022-02-12 13:59:11 -05:00

43 lines
1.3 KiB
JavaScript

export default class Layer {
constructor(data) {
this.name = data.Name;
this.classname = data.levelName;
this.layerid = data.rawName;
this.map = {
name: data.mapName
};
this.gamemode = data.gamemode;
this.gamemodeType = data.type;
this.version = data.layerVersion;
this.size = data.mapSize;
this.sizeType = data.mapSizeType;
this.numberOfCapturePoints = parseInt(data.capturePoints);
this.lighting = {
name: data.lighting,
classname: data.lightingLevel
};
this.teams = [];
for (const t of ['team1', 'team2']) {
this.teams.push({
faction: data[t].faction,
name: data[t].teamSetupName,
tickets: data[t].tickets,
commander: data[t].commander,
vehicles: (data[t].vehicles || []).map((vehicle) => ({
name: vehicle.type,
classname: vehicle.rawType,
count: vehicle.count,
spawnDelay: vehicle.delay,
respawnDelay: vehicle.respawnTime
})),
numberOfTanks: (data[t].vehicles || []).filter((v) => {
return v.icon.match(/tank/);
}).length,
numberOfHelicopters: (data[t].vehicles || []).filter((v) => {
return v.icon.match(/helo/);
}).length
});
}
}
}