diff --git a/AquaNet/src/components/MapDetails.svelte b/AquaNet/src/components/MapDetails.svelte index 6beb555d..9ef6d9be 100644 --- a/AquaNet/src/components/MapDetails.svelte +++ b/AquaNet/src/components/MapDetails.svelte @@ -4,7 +4,7 @@ import { slide } from "svelte/transition"; import { DATA_HOST } from "../libs/config"; import { t } from "../libs/i18n"; - import { type GameName, getMult } from "../libs/scoring"; + import { type GameName, getMult, roundFloor } from "../libs/scoring"; import { coverNotFound } from "../libs/ui"; import type { MusicMeta } from "../libs/generalTypes"; import { tooltip } from "../libs/ui"; @@ -35,7 +35,7 @@ {("" + getMult(mapData[3], game)[2]).replace("p", "+")} - {(mapData[3] / 10000).toFixed(1)}% + {roundFloor(mapData[3], game, 1)}% {#if game === 'mai2'} diff --git a/AquaNet/src/libs/scoring.ts b/AquaNet/src/libs/scoring.ts index 8d0817b4..e672ea01 100644 --- a/AquaNet/src/libs/scoring.ts +++ b/AquaNet/src/libs/scoring.ts @@ -66,7 +66,6 @@ const multTable = { ] } - export function getMult(achievement: number, game: GameName) { achievement /= 10000 const mt = multTable[game] @@ -75,3 +74,12 @@ export function getMult(achievement: number, game: GameName) { } return [ 0, 0, 0 ] } + +export function roundFloor(achievement: number, game: GameName, digits = 2) { + achievement /= 10000 + // Round, but if the rounded number reaches the next rank, use floor instead + const mult = getMult(achievement, game); + const rounded = achievement.toFixed(digits); + if (getMult(+rounded, game)[2] === mult[2]) return rounded; + return (+rounded - Math.pow(10, -digits)).toFixed(digits); +} diff --git a/AquaNet/src/pages/UserHome.svelte b/AquaNet/src/pages/UserHome.svelte index 7bdaa557..166da993 100644 --- a/AquaNet/src/pages/UserHome.svelte +++ b/AquaNet/src/pages/UserHome.svelte @@ -16,7 +16,7 @@ import moment from "moment"; import 'chartjs-adapter-moment'; import { CARD, DATA, GAME, USER } from "../libs/sdk"; - import { type GameName, getMult } from "../libs/scoring"; + import { type GameName, getMult, roundFloor } from "../libs/scoring"; import StatusOverlays from "../components/StatusOverlays.svelte"; import Icon from "@iconify/svelte"; import { GAME_TITLE, t } from "../libs/i18n"; @@ -271,11 +271,13 @@ {("" + getMult(r.achievement, game)[2]).replace("p", "+")} - {(r.achievement / 10000).toFixed(2)}% + + {roundFloor(r.achievement, game, 1)}% + {#if game === 'mai2' || game === 'wacca'} 0} class="dx-change"> - {(r.afterRating - r.beforeRating).toFixed(0)} + {r.afterRating === r.beforeRating ? '-' : (r.afterRating - r.beforeRating).toFixed(0)} {/if}