[+] Setting of score rounding and fix bugs

This commit is contained in:
Clansty
2024-08-08 14:49:20 +08:00
parent d0aecc76ed
commit a6a8734599
9 changed files with 106 additions and 8 deletions

View File

@@ -38,7 +38,7 @@
{/each}
</div>
<StatusOverlays {error} loading={!gameFields.length && !!submitting}/>
<StatusOverlays {error} loading={!gameFields.length || !!submitting}/>
<style lang="sass">
.fields

View File

@@ -2,8 +2,56 @@
import { fade } from "svelte/transition";
import { FADE_IN, FADE_OUT } from "../libs/config";
import GameSettingFields from "./GameSettingFields.svelte";
import { ts } from "../libs/i18n";
import useLocalStorage from "../libs/hooks/useLocalStorage.svelte";
const rounding = useLocalStorage("rounding", true);
</script>
<div out:fade={FADE_OUT} in:fade={FADE_IN}>
<div out:fade={FADE_OUT} in:fade={FADE_IN} class="fields">
<GameSettingFields game="general"/>
<div class="field">
<div class="bool">
<input id="rounding" type="checkbox" bind:checked={rounding.value}/>
<label for="rounding">
<span class="name">{ts(`settings.fields.rounding.name`)}</span>
<span class="desc">{ts(`settings.fields.rounding.desc`)}</span>
</label>
</div>
</div>
</div>
<style lang="sass">
.fields
display: flex
flex-direction: column
gap: 12px
.bool
display: flex
align-items: center
gap: 1rem
label
display: flex
flex-direction: column
.desc
opacity: 0.6
.field
display: flex
flex-direction: column
label
max-width: max-content
> div:not(.bool)
display: flex
align-items: center
gap: 1rem
margin-top: 0.5rem
> input
flex: 1
</style>

View File

@@ -8,6 +8,7 @@
import { coverNotFound } from "../libs/ui";
import type { MusicMeta } from "../libs/generalTypes";
import { tooltip } from "../libs/ui";
import useLocalStorage from "../libs/hooks/useLocalStorage.svelte";
export let g: string
export let meta: MusicMeta
@@ -16,6 +17,9 @@
let mapData = g.split(":").map(Number)
let mult = getMult(mapData[3], game)
let mapRank: number | undefined = meta?.notes?.[mapData[1] === 10 ? 0 : mapData[1]]?.lv
const rounding = useLocalStorage("rounding", true);
console.log(rounding.value)
let gameIndexMap = {
'mai2': 3,
@@ -42,7 +46,11 @@
<span class={`rank-${getMult(mapData[gameIndex], game)[2].toString()[0]}`}>
<span class="rank-text">{("" + getMult(mapData[gameIndex], game)[2]).replace("p", "+")}</span>
<span class="rank-num" use:tooltip={(mapData[gameIndex] / 10000).toFixed(4)}>
<span class="rank-num" use:tooltip={(mapData[gameIndex] / 10000).toFixed(4)}>
{
rounding.value ?
roundFloor(mapData[gameIndex], game, 1) :
(mapData[gameIndex] / 10000).toFixed(4)
}%
</span>
</span>