[+] Show rating

This commit is contained in:
Azalea
2024-02-08 03:18:55 -05:00
parent e161890eaa
commit 8b5ef24681

View File

@@ -8,25 +8,25 @@
} }
const multTable = [ const multTable = [
[100.5, 22.4], [100.5, 22.4, "SSSp"],
[100, 21.6], [100, 21.6, "SSS"],
[99.5, 21.1], [99.5, 21.1, "SSp"],
[99, 20.8], [99, 20.8, "SS"],
[98, 20.3], [98, 20.3, "Sp"],
[97, 20], [97, 20, "S"],
[94, 16.8], [94, 16.8, "AAA"],
[90, 15.2], [90, 15.2, "AA"],
[80, 13.6] [80, 13.6, "A"]
] ]
function getMult(achievement: number) { function getMult(achievement: number) {
achievement /= 10000 achievement /= 10000
for (let i = 0; i < multTable.length; i++) { for (let i = 0; i < multTable.length; i++) {
if (achievement >= multTable[i][0]) { if (achievement >= (multTable[i][0] as number)) {
return multTable[i][1] return multTable[i]
} }
} }
return 0 return [0, 0, 0]
} }
// Parse rating // Parse rating
@@ -41,15 +41,17 @@
} }
music.note = music.notes[x[1]] music.note = music.notes[x[1]]
const mult = getMult(x[3])
return { return {
music: music, music: music,
musicId: x[0], musicId: x[0],
difficulty: x[1], difficulty: x[1],
todo: x[2], // TODO: Figure out what this is todo: x[2], // TODO: Figure out what this is
achievement: x[3], achievement: x[3],
calc: getMult(x[3]) * music.note.lv calc: (mult[1] as number) * music.note.lv,
rank: mult[2]
} }
}) }).filter(x => x)
} }
interface ParsedRating { interface ParsedRating {
@@ -68,7 +70,8 @@
musicId: number, musicId: number,
difficulty: number, difficulty: number,
achievement: number, achievement: number,
calc: number calc: number,
rank: string
} }
let parsedRatings: { let parsedRatings: {
@@ -82,6 +85,8 @@
old: parseRatings(data.rating, musicInfo), old: parseRatings(data.rating, musicInfo),
new: parseRatings(data.ratingNew, musicInfo) new: parseRatings(data.ratingNew, musicInfo)
} }
console.log(parsedRatings)
}) })
</script> </script>
@@ -89,34 +94,27 @@
<div> <div>
<!-- Display all parsed ratings --> <!-- Display all parsed ratings -->
{#if parsedRatings} {#if parsedRatings}
<div> {#each [{title: "Old", data: parsedRatings.old}, {title: "New", data: parsedRatings.new}] as section}
<h2>Old</h2> <h2>{section.title}</h2>
<div class="rating-cards"> <div class="rating-cards">
{#each parsedRatings.old as rating} {#each section.data as rating}
<div class="level-{rating.difficulty}"> <div class="level-{rating.difficulty}">
<img class="cover" src={`${data_host}/maimai/assetbundle/jacket_s/00${rating.musicId.toString().padStart(6, '0').substring(2)}.png`} alt=""> <img class="cover" src={`${data_host}/maimai/assetbundle/jacket_s/00${rating.musicId.toString().padStart(6, '0').substring(2)}.png`} alt="">
<div class="detail"> <div class="detail">
<span class="name">{rating.music.name}</span> <span class="name">{rating.music.name}</span>
<span>{(rating.achievement / 10000).toFixed(2)}%</span> <span class="rating">
<span>{(rating.achievement / 10000).toFixed(2)}%</span>
<img class="rank" src={`${data_host}/maimai/sprites/rankimage/UI_GAM_Rank_${rating.rank}.png`} alt="">
</span>
<span>{rating.calc.toFixed(1)}</span> <span>{rating.calc.toFixed(1)}</span>
</div> </div>
<img class="ver" src={`${data_host}/maimai/sprites/tab/title/UI_CMN_TabTitle_MaimaiTitle_Ver${rating.music.ver.toString().substring(0, 3)}.png`} alt=""> <img class="ver" src={`${data_host}/maimai/sprites/tab/title/UI_CMN_TabTitle_MaimaiTitle_Ver${rating.music.ver.toString().substring(0, 3)}.png`} alt="">
<div class="lv">{rating.music.note.lv}</div> <div class="lv">{rating.music.note.lv}</div>
</div> </div>
{/each} {/each}
</div> </div>
</div> {/each}
<div>
<h2>New</h2>
<div>
{#each parsedRatings.new as rating}
<div>
</div>
{/each}
</div>
</div>
{/if} {/if}
</div> </div>
@@ -147,20 +145,27 @@
&.level-3 &.level-3
--lv-color: #e881ff --lv-color: #e881ff
img
object-fit: cover
pointer-events: none
img.cover img.cover
width: 100% width: 100%
height: 100% height: 100%
object-fit: cover
border-radius: calc($border-radius - 3px) border-radius: calc($border-radius - 3px)
pointer-events: none
img.ver img.ver
position: absolute position: absolute
top: -20px top: -20px
left: -30px left: -30px
height: 50px height: 50px
object-fit: cover
pointer-events: none //img.rank
// position: absolute
// bottom: 20px
// right: 45px
// z-index: 5
// height: 30px
// Information // Information
.detail .detail
@@ -191,6 +196,11 @@
font-size: 1.2rem font-size: 1.2rem
font-weight: bold font-weight: bold
.rating
display: flex
img
height: 1.5em
.lv .lv
position: absolute position: absolute
bottom: 0 bottom: 0
@@ -203,10 +213,6 @@
font-size: 1.3rem font-size: 1.3rem
&:before &:before
content: "Lv " content: "Lv"
font-size: 0.8rem font-size: 0.8rem
</style> </style>