mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-11 12:07:32 +08:00
[O] Advanced achievement rounding
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
import { slide } from "svelte/transition";
|
import { slide } from "svelte/transition";
|
||||||
import { DATA_HOST } from "../libs/config";
|
import { DATA_HOST } from "../libs/config";
|
||||||
import { t } from "../libs/i18n";
|
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 { coverNotFound } from "../libs/ui";
|
||||||
import type { MusicMeta } from "../libs/generalTypes";
|
import type { MusicMeta } from "../libs/generalTypes";
|
||||||
import { tooltip } from "../libs/ui";
|
import { tooltip } from "../libs/ui";
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<span class={`rank-${getMult(mapData[3], game)[2].toString()[0]}`}>
|
<span class={`rank-${getMult(mapData[3], game)[2].toString()[0]}`}>
|
||||||
|
|
||||||
<span class="rank-text">{("" + getMult(mapData[3], game)[2]).replace("p", "+")}</span>
|
<span class="rank-text">{("" + getMult(mapData[3], game)[2]).replace("p", "+")}</span>
|
||||||
<span class="rank-num" use:tooltip={(mapData[3] / 10000).toFixed(4)}>
|
<span class="rank-num" use:tooltip={(mapData[3] / 10000).toFixed(4)}>
|
||||||
{roundFloor(mapData[3], game, 1)}%
|
{roundFloor(mapData[3], game, 1)}%
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ const multTable = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function getMult(achievement: number, game: GameName) {
|
export function getMult(achievement: number, game: GameName) {
|
||||||
achievement /= 10000
|
achievement /= 10000
|
||||||
const mt = multTable[game]
|
const mt = multTable[game]
|
||||||
@@ -75,3 +74,12 @@ export function getMult(achievement: number, game: GameName) {
|
|||||||
}
|
}
|
||||||
return [ 0, 0, 0 ]
|
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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import 'chartjs-adapter-moment';
|
import 'chartjs-adapter-moment';
|
||||||
import { CARD, DATA, GAME, USER } from "../libs/sdk";
|
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 StatusOverlays from "../components/StatusOverlays.svelte";
|
||||||
import Icon from "@iconify/svelte";
|
import Icon from "@iconify/svelte";
|
||||||
import { GAME_TITLE, t } from "../libs/i18n";
|
import { GAME_TITLE, t } from "../libs/i18n";
|
||||||
@@ -271,11 +271,13 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class={`rank-${getMult(r.achievement, game)[2].toString()[0]}`}>
|
<span class={`rank-${getMult(r.achievement, game)[2].toString()[0]}`}>
|
||||||
<span class="rank-text">{("" + getMult(r.achievement, game)[2]).replace("p", "+")}</span>
|
<span class="rank-text">{("" + getMult(r.achievement, game)[2]).replace("p", "+")}</span>
|
||||||
<span class="rank-num">{(r.achievement / 10000).toFixed(2)}%</span>
|
<span class="rank-num" use:tooltip={(r.achievement / 10000).toFixed(4)}>
|
||||||
|
{roundFloor(r.achievement, game, 1)}%
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
{#if game === 'mai2' || game === 'wacca'}
|
{#if game === 'mai2' || game === 'wacca'}
|
||||||
<span class:increased={r.afterRating - r.beforeRating > 0} class="dx-change">
|
<span class:increased={r.afterRating - r.beforeRating > 0} class="dx-change">
|
||||||
{(r.afterRating - r.beforeRating).toFixed(0)}
|
{r.afterRating === r.beforeRating ? '-' : (r.afterRating - r.beforeRating).toFixed(0)}
|
||||||
</span>
|
</span>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user