From 6396bfcf72901b01c0ebb0ab8567442a2dbceebf Mon Sep 17 00:00:00 2001 From: schneefux Date: Mon, 11 Jun 2018 13:35:04 +0200 Subject: Sort Levels in highlights by relative level --- src/ReportService.js | 17 ++++++----------- src/maps/maps.js | 11 +++++++++++ 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/ReportService.js b/src/ReportService.js index ed0200c..4a722bb 100644 --- a/src/ReportService.js +++ b/src/ReportService.js @@ -47,17 +47,12 @@ for(let mode of modes) { topLegendaryWins.set(mode, reports.get(mode) .filter((entry) => maps.getTalentRarity(entry.Talent) == 'Legendary' && 100 * playersPerMatch * entry.Count / totalPicks.get(mode)) .sort((entry1, entry2) => entry2.Winner - entry1.Winner)[0]); - topLeveledUp.set(mode, reports.get(mode).sort((entry1, entry2) => { - if (!entry1.Level) return 1; - if (!entry2.Level) return -1; - return entry1.Level < entry2.Level ? 1 : -1; - })[0]); - topLeveledDown.set(mode, reports.get(mode).sort((entry1, entry2) => { - if (!entry1.Level) return 1; - if (!entry2.Level) return -1; - - return entry1.Level < entry2.Level ? -1 : 1; - })[0]); + topLeveledUp.set(mode, reports.get(mode) + .filter((entry) => maps.getTalentRarity(entry.Talent) != 'None') + .sort((entry1, entry2) => maps.getScaledLevel(entry2) - maps.getScaledLevel(entry1))[0]); + topLeveledDown.set(mode, reports.get(mode) + .filter((entry) => maps.getTalentRarity(entry.Talent) != 'None') + .sort((entry1, entry2) => maps.getScaledLevel(entry1) - maps.getScaledLevel(entry2))[0]); if (actors.length == 0) { actors = [...new Set(reports.get(mode).map((entry) => entry.Actor))]; diff --git a/src/maps/maps.js b/src/maps/maps.js index 9bd252e..14eead1 100644 --- a/src/maps/maps.js +++ b/src/maps/maps.js @@ -43,6 +43,16 @@ function getTalentRarity(talent) { } } +function getScaledLevel(entry) { + switch (getTalentRarity(entry.Talent)) { + case 'unknown': + case 'None': return -1; + case 'Rare': return entry.Level / 20; + case 'Epic': return entry.Level / 10; + case 'Legendary': return entry.Level / 5; + } +}; + function getTalentRarityIndex(talent) { return ['None', 'Rare', 'Epic', 'Legendary']; } @@ -67,6 +77,7 @@ module.exports = { getTalentName, getTalentRarity, getTalentRarityIndex, + getScaledLevel, getHero, getMode, hasTalents, -- cgit v1.3.1