diff --git a/index.d.ts b/index.d.ts index fa4488b..dc79c51 100644 --- a/index.d.ts +++ b/index.d.ts @@ -214,6 +214,7 @@ export class Game { start: Date; end: Date; mods: Constants['Mods'][] // Array of `Constants.Mods` required for all players + cleanMods: string[]; } @@ -252,6 +253,8 @@ export class Score { mods: string[] | string; + cleanMods: string[]; + accuracy: undefined | string | number; } diff --git a/lib/Base/Game.js b/lib/Base/Game.js index 4ef3caf..a9120d8 100644 --- a/lib/Base/Game.js +++ b/lib/Base/Game.js @@ -1,5 +1,6 @@ const MultiplayerScore = require('./MultiplayerScore.js'); const Constants = require('../Constants.js'); +const { cleanMods } = require('../utils.js'); /** * A multiplayer game @@ -59,6 +60,11 @@ class Game { return this._mods; } + + + get cleanMods() { + return cleanMods(mods); + } } module.exports = Game; diff --git a/lib/Base/Score.js b/lib/Base/Score.js index a90bf3c..c6ae718 100644 --- a/lib/Base/Score.js +++ b/lib/Base/Score.js @@ -1,4 +1,4 @@ -const { getNumeric } = require('../utils.js'); +const { getNumeric, cleanMods } = require('../utils.js'); const { Mods, AccuracyMethods } = require('../Constants.js'); /** @@ -86,6 +86,10 @@ class Score { return this._mods; } + get cleanMods() { + return cleanMods(mods); + } + get accuracy() { if (!this.beatmap) return undefined; diff --git a/lib/utils.js b/lib/utils.js index c1843a5..41beb72 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -3,5 +3,48 @@ module.exports = { return parseNumeric ? v => v === undefined || v === null ? v : parseFloat(v) : v => v; + }, + + cleanMods(mods){ + let cleanModsArray = []; + mods.forEach(element => { + switch (element) { + case 'FreeModAllowed': + case 'ScoreIncreaseMods': + case 'TouchDevice': + case 'KeyMod': + case 'None': element = ''; break; + + case 'NoFail': element = 'NF'; break; + case 'Easy': element = 'EZ'; break; + case 'Hidden': element = 'HD'; break; + case 'HardRock': element = 'HR'; break; + case 'SuddenDeath': element = 'SD'; break; + case 'DoubleTime': element = 'DT'; break; + case 'Relax': element = 'RX'; break; + case 'HalfTime': element = 'HT'; break; + case 'Nightcore': element = 'NC'; break; + case 'Flashlight': element = 'FL'; break; + case 'SpunOut': element = 'SO'; break; + case 'Relax2': element = 'AP'; break; + case 'Perfect': element = 'PF'; break; + case 'Key1': element = '1K'; break; + case 'Key2': element = '2K'; break; + case 'Key3': element = '3K'; break; + case 'Key4': element = '4K'; break; + case 'Key5': element = '5K'; break; + case 'Key6': element = '6K'; break; + case 'Key7': element = '7K'; break; + case 'Key8': element = '8K'; break; + case 'Key9': element = '9K'; break; + case 'FadeIn': element = 'FI'; break; + case 'Random': element = 'RD'; break; + case 'ScoreV2': element = 'ScoreV2'; break; + case 'Mirror': element = 'MR'; break; + } + if (element != '') + cleanModsArray.push(element); + }); + return cleanModsArray.length != 0 ? cleanModsArray : ''; } };