|
|
@ -2,8 +2,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
const playerArrayContains = require('./util').playerArrayContains;
|
|
|
|
const playerArrayContains = require('./util').playerArrayContains;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const WHITESPACE = ' ';
|
|
|
|
|
|
|
|
|
|
|
|
const parseWarLog = (lineArray, war) => {
|
|
|
|
const parseWarLog = (lineArray, war) => {
|
|
|
|
const nameToLongError = 'Error: ENAMETOOLONG: name too long, open \'';
|
|
|
|
const NAME_TOO_LONG_ERROR = 'Error: ENAMETOOLONG: name too long, open \'';
|
|
|
|
|
|
|
|
|
|
|
|
const stats = {
|
|
|
|
const stats = {
|
|
|
|
war: war,
|
|
|
|
war: war,
|
|
|
|
clean: [],
|
|
|
|
clean: [],
|
|
|
@ -29,8 +32,8 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* sanitize nameTooLongError coming up in first line
|
|
|
|
* sanitize nameTooLongError coming up in first line
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (line.includes(nameToLongError)) {
|
|
|
|
if (line.includes(NAME_TOO_LONG_ERROR)) {
|
|
|
|
line = line.substring(line.indexOf(nameToLongError) + nameToLongError.length);
|
|
|
|
line = line.substring(line.indexOf(NAME_TOO_LONG_ERROR) + NAME_TOO_LONG_ERROR.length);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -45,7 +48,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
|
|
|
|
|
|
|
|
stats.kills.push({
|
|
|
|
stats.kills.push({
|
|
|
|
war: war._id,
|
|
|
|
war: war._id,
|
|
|
|
time: getFullTimeDate(war.date, line.split(' ')[5]),
|
|
|
|
time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]),
|
|
|
|
shooter: shooter ? shooter.name : null,
|
|
|
|
shooter: shooter ? shooter.name : null,
|
|
|
|
target: target ? target.name : null,
|
|
|
|
target: target ? target.name : null,
|
|
|
|
friendlyFire: shooter ? target.fraction === shooter.fraction : false,
|
|
|
|
friendlyFire: shooter ? target.fraction === shooter.fraction : false,
|
|
|
@ -58,7 +61,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
else if (line.includes('(Budget)')) {
|
|
|
|
else if (line.includes('(Budget)')) {
|
|
|
|
stats.clean.push(line);
|
|
|
|
stats.clean.push(line);
|
|
|
|
const budg = line.split(' ');
|
|
|
|
const budg = line.split(WHITESPACE);
|
|
|
|
if (line.includes('Startbudget')) {
|
|
|
|
if (line.includes('Startbudget')) {
|
|
|
|
stats.war['budgetBlufor'] = transformMoneyString(budg[9]);
|
|
|
|
stats.war['budgetBlufor'] = transformMoneyString(budg[9]);
|
|
|
|
stats.war['budgetOpfor'] = transformMoneyString(budg[12].slice(0,-1));
|
|
|
|
stats.war['budgetOpfor'] = transformMoneyString(budg[12].slice(0,-1));
|
|
|
@ -85,7 +88,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
|
|
|
|
|
|
|
|
stats.flag.push({
|
|
|
|
stats.flag.push({
|
|
|
|
war: war._id,
|
|
|
|
war: war._id,
|
|
|
|
time: getFullTimeDate(war.date, line.split(' ')[5]),
|
|
|
|
time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]),
|
|
|
|
player: playerName,
|
|
|
|
player: playerName,
|
|
|
|
flagFraction: flagFraction,
|
|
|
|
flagFraction: flagFraction,
|
|
|
|
capture: capture
|
|
|
|
capture: capture
|
|
|
@ -97,7 +100,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
else if (line.includes('(Punkte)')) {
|
|
|
|
else if (line.includes('(Punkte)')) {
|
|
|
|
stats.clean.push(line);
|
|
|
|
stats.clean.push(line);
|
|
|
|
const pt = line.split(' ');
|
|
|
|
const pt = line.split(WHITESPACE);
|
|
|
|
|
|
|
|
|
|
|
|
if (line.includes('Endpunktestand')) {
|
|
|
|
if (line.includes('Endpunktestand')) {
|
|
|
|
stats.war['ptBlufor'] = parseInt(pt[9]);
|
|
|
|
stats.war['ptBlufor'] = parseInt(pt[9]);
|
|
|
@ -112,11 +115,11 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* RESPAWN
|
|
|
|
* RESPAWN
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
// else if (line.includes('Respawn')) {
|
|
|
|
else if (line.includes('(Respawn)')) {
|
|
|
|
// const resp = line.split(' ');
|
|
|
|
const resp = line.split(WHITESPACE);
|
|
|
|
// const playerName = line.substring(line.lastIndexOf('Spieler:') + 9, line.lastIndexOf('- Kosten') -1);
|
|
|
|
const playerName = line.substring(line.lastIndexOf('Spieler:') + 9, line.lastIndexOf('- Kosten') -1);
|
|
|
|
// stats.respawn.push(getRespawnEntry(resp, playerName, war._id, war.date));
|
|
|
|
stats.respawn.push(getRespawnEntry(resp, playerName, war._id, war.date));
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* REVIVE
|
|
|
|
* REVIVE
|
|
|
@ -132,7 +135,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
|
|
|
|
|
|
|
|
stats.revive.push({
|
|
|
|
stats.revive.push({
|
|
|
|
war: war._id,
|
|
|
|
war: war._id,
|
|
|
|
time: getFullTimeDate(war.date, line.split(' ')[5]),
|
|
|
|
time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]),
|
|
|
|
stabilized: stabilized,
|
|
|
|
stabilized: stabilized,
|
|
|
|
medic: medic.name,
|
|
|
|
medic: medic.name,
|
|
|
|
patient: patient.name,
|
|
|
|
patient: patient.name,
|
|
|
@ -153,7 +156,7 @@ const parseWarLog = (lineArray, war) => {
|
|
|
|
|
|
|
|
|
|
|
|
stats.transport.push({
|
|
|
|
stats.transport.push({
|
|
|
|
war: war._id,
|
|
|
|
war: war._id,
|
|
|
|
time: getFullTimeDate(war.date, line.split(' ')[5]),
|
|
|
|
time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]),
|
|
|
|
driver: driver ? driver.name : null,
|
|
|
|
driver: driver ? driver.name : null,
|
|
|
|
passenger: passenger ? passenger.name : null,
|
|
|
|
passenger: passenger ? passenger.name : null,
|
|
|
|
fraction: driver ? driver.fraction : 'NONE',
|
|
|
|
fraction: driver ? driver.fraction : 'NONE',
|
|
|
@ -217,7 +220,7 @@ const getBudgetEntry = (budg, warId, warDate) => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const getPlayerAndFractionFromString = (nameAndFractionString) => {
|
|
|
|
const getPlayerAndFractionFromString = (nameAndFractionString) => {
|
|
|
|
const nameArray = nameAndFractionString.split(' ');
|
|
|
|
const nameArray = nameAndFractionString.split(WHITESPACE);
|
|
|
|
const fraction = nameArray[nameArray.length - 1] !== '(ENEMY)' ? nameArray[nameArray.length - 1] === '(WEST)' ? 'BLUFOR' : 'OPFOR' : undefined;
|
|
|
|
const fraction = nameArray[nameArray.length - 1] !== '(ENEMY)' ? nameArray[nameArray.length - 1] === '(WEST)' ? 'BLUFOR' : 'OPFOR' : undefined;
|
|
|
|
const name = nameAndFractionString.substring(0, nameAndFractionString.indexOf(nameArray[nameArray.length - 1]) - 1);
|
|
|
|
const name = nameAndFractionString.substring(0, nameAndFractionString.indexOf(nameArray[nameArray.length - 1]) - 1);
|
|
|
|
// do not return player for 'Selbstverschulden' or 'Error: No unit'
|
|
|
|
// do not return player for 'Selbstverschulden' or 'Error: No unit'
|
|
|
|