From df395a613f8f863d4e94729e8467f04bb6b3d386 Mon Sep 17 00:00:00 2001 From: Raymond <101374892+raymonable@users.noreply.github.com> Date: Wed, 26 Feb 2025 21:56:35 -0500 Subject: [PATCH] fix: use rating numbers from dds, swap userplate font again changed font to Gothic A1, added new DDS to userbox (all users wishing to benefit MUST update aquabox), added rating numbers --- AquaNet/public/assets/fonts/GothicA1.woff2 | Bin 0 -> 21388 bytes .../settings/userbox/ChuniUserplate.svelte | 56 ++++++++++++++---- AquaNet/src/libs/userbox/dds.ts | 22 ++++++- AquaNet/src/libs/userbox/userbox.ts | 2 + 4 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 AquaNet/public/assets/fonts/GothicA1.woff2 diff --git a/AquaNet/public/assets/fonts/GothicA1.woff2 b/AquaNet/public/assets/fonts/GothicA1.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d288a38573867470b320f8723ab4fae633282d4c GIT binary patch literal 21388 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 - import { DDS } from "../../../libs/userbox/dds" + import { DDS, type RGB } from "../../../libs/userbox/dds" import { ddsDB } from "../../../libs/userbox/userbox" const DDSreader = new DDS(ddsDB); @@ -15,6 +15,26 @@ let ratingToString = (rating: number) => { return rating.toFixed(2) } + + interface RatingRange { + min: number, + offset: number, + color?: RGB + }; + // https://en.wikipedia.org/wiki/Chunithm#Rating + const ratingColors: RatingRange[] = ([ + {min: 0.00, offset: 4, color: {r: 0, g: 191, b: 64}}, + {min: 4.00, offset: 4, color: {r: 255, g: 111, b: 0}}, + {min: 7.00, offset: 4, color: {r: 255, g: 64, b: 64}}, + {min: 10.00, offset: 4, color: {r: 147, g: 38, b: 255}}, + {min: 12.00, offset: 3}, + {min: 13.25, offset: 2}, + {min: 14.50, offset: 1}, + {min: 15.25, offset: 0}, + {min: 16.00, offset: 5} + ]).filter(f => f.min <= chuniRating); + const ratingDigitOrder = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."] + const ratingColorData = (ratingColors[ratingColors.length - 1] ?? ratingColors[0]); {#await DDSreader?.getFile(`nameplate:${chuniNameplate.toString().padStart(8, "0")}`, `nameplate:00000001`) then nameplateURL} @@ -41,11 +61,25 @@ {chuniName} -
- RATING - - {ratingToString(chuniRating)} - +
+ + {#await DDSreader?.getFileFromSheet("surfboard:CHU_UI_Common_01_v11.dds", 485, 5 + (28 * ratingColorData.offset), 62, 15, undefined, ratingColorData.color) then url} + {#if url} + Rating + + {#each ratingToString(chuniRating).split("") as digit} + {#await DDSreader?.getFileFromSheet("surfboard:CHU_UI_Common_01_v11.dds", 552 + (24 * (ratingDigitOrder.indexOf(digit) ?? 0)), 1 + (28 * ratingColorData.offset), 16, 20, undefined, ratingColorData.color) then url} + Rating Digit + {/await} + {/each} + + {:else} + RATING + + {ratingToString(chuniRating)} + + {/if} + {/await}
@@ -54,8 +88,8 @@ @use "../../../vars" @font-face - font-family: "Zen Maru Gothic" - src: url("/assets/fonts/ZenMaru.woff2") + font-family: "Gothic A1" + src: url("/assets/fonts/GothicA1.woff2") .chuni-nameplate width: 576px @@ -83,7 +117,7 @@ top: 40px font-size: 1.15em - font-family: "Zen Maru Gothic", sans-serif + font-family: "Gothic A1", sans-serif font-weight: bold overflow-x: hidden @@ -128,7 +162,7 @@ display: flex align-items: center color: black - font-family: "Zen Maru Gothic", sans-serif + font-family: "Gothic A1", sans-serif font-weight: bold .chuni-user-name @@ -149,7 +183,7 @@ flex: 1 0 35% font-size: 0.875em text-shadow: #333 1px 1px, #333 1px -1px, #333 -1px 1px, #333 -1px -1px - color: #ddf + color: #fff .chuni-user-rating-number font-size: 1.5em diff --git a/AquaNet/src/libs/userbox/dds.ts b/AquaNet/src/libs/userbox/dds.ts index c2917aa6..2efd836a 100644 --- a/AquaNet/src/libs/userbox/dds.ts +++ b/AquaNet/src/libs/userbox/dds.ts @@ -56,6 +56,12 @@ void main() { gl_FragColor = texture2D(uTexture, vTextureCoord); }` +export interface RGB { + r: number, + g: number, + b: number +} + export class DDS { constructor(db: IDBDatabase | undefined) { this.cache = new DDSCache(db); @@ -241,13 +247,27 @@ export class DDS { * @param s Scale factor * @returns An object URL which correlates to a Blob */ - async getFileFromSheet(path: string, x: number, y: number, w: number, h: number, s?: number): Promise { + async getFileFromSheet(path: string, x: number, y: number, w: number, h: number, s?: number, color?: RGB): Promise { if (!await this.loadFile(path)) return ""; this.canvas2D.width = w * (s ?? 1); this.canvas2D.height = h * (s ?? 1); this.ctx.drawImage(this.canvasGL, x, y, w, h, 0, 0, w * (s ?? 1), h * (s ?? 1)); + if (color) { + let colorData = this.ctx.getImageData(0, 0, this.canvas2D.width, this.canvas2D.height); + for (let i = 0; colorData.data.length > i; i++) + switch (i % 4) { + case 0: + colorData.data[i] *= (color.r / 255); break; + case 1: + colorData.data[i] *= (color.g / 255); break; + case 2: + colorData.data[i] *= (color.b / 255); break; + } + this.ctx.putImageData(colorData, 0, 0); + } + /* We don't want to cache this, it's a spritesheet piece. */ return URL.createObjectURL(await this.get2DBlob("image/png") ?? new Blob([])); }; diff --git a/AquaNet/src/libs/userbox/userbox.ts b/AquaNet/src/libs/userbox/userbox.ts index 67539089..2d2a11ad 100644 --- a/AquaNet/src/libs/userbox/userbox.ts +++ b/AquaNet/src/libs/userbox/userbox.ts @@ -85,6 +85,8 @@ const DIRECTORY_PATHS = ([ ([ "CHU_UI_Common_Avatar_body_00.dds", "CHU_UI_Common_Avatar_face_00.dds", + "CHU_UI_Common_01_v11.dds", + "CHU_UI_TeamEmblem_01_v14.dds", "CHU_UI_title_rank_00_v10.dds" ]).includes(name), id: (name: string) => name