From ce856d637d705fbb5e5cbaeef78fc0d6b7b0c73b Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Thu, 6 Jan 2022 07:42:06 +0000 Subject: [PATCH] Fix the rest of the jubeat class implementations. --- server/src/lib/constants/classes.ts | 13 ++++++ .../user-game-stats/builtin-class-handlers.ts | 43 +++++++++++++++---- .../framework/user-game-stats/classes.ts | 5 ++- .../framework/user-game-stats/rating.ts | 1 + 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/server/src/lib/constants/classes.ts b/server/src/lib/constants/classes.ts index c76034c76..f41857992 100644 --- a/server/src/lib/constants/classes.ts +++ b/server/src/lib/constants/classes.ts @@ -195,3 +195,16 @@ export enum POPN_CLASSES { HERMIT, GOD, } + +export enum JUBEAT_COLOURS { + BLACK, + YELLOW_GREEN, + GREEN, + LIGHT_BLUE, + BLUE, + VIOLET, + PURPLE, + PINK, + ORANGE, + GOLD, +} diff --git a/server/src/lib/score-import/framework/user-game-stats/builtin-class-handlers.ts b/server/src/lib/score-import/framework/user-game-stats/builtin-class-handlers.ts index ef083abd0..aee714ad7 100644 --- a/server/src/lib/score-import/framework/user-game-stats/builtin-class-handlers.ts +++ b/server/src/lib/score-import/framework/user-game-stats/builtin-class-handlers.ts @@ -1,6 +1,7 @@ import { CHUNITHM_COLOURS, GitadoraColours, + JUBEAT_COLOURS, POPN_CLASSES, SDVXVFClasses, WACCA_COLOURS, @@ -199,13 +200,37 @@ function ChuniRatingToColour(rating: number) { return CHUNITHM_COLOURS.BLUE; } -// export function CalculateJubeatColour( -// game: Game, -// playtype: Playtypes[Game], -// userID: integer, -// ratings: Record -// ): GameClasses<"jubeat:Single"> { -// throw new Error("Not implemented."); -// } +export function CalculateJubeatColour( + game: Game, + playtype: Playtypes[Game], + userID: integer, + ratings: Record +) { + const colour = JubilityToColour(ratings.jubility); -// function JubilityToColour(jb: number) {} + return { colour }; +} + +function JubilityToColour(jubility: number) { + if (jubility >= 9500) { + return JUBEAT_COLOURS.GOLD; + } else if (jubility >= 8500) { + return JUBEAT_COLOURS.ORANGE; + } else if (jubility >= 7000) { + return JUBEAT_COLOURS.PINK; + } else if (jubility >= 5500) { + return JUBEAT_COLOURS.PURPLE; + } else if (jubility >= 4000) { + return JUBEAT_COLOURS.VIOLET; + } else if (jubility >= 2500) { + return JUBEAT_COLOURS.BLUE; + } else if (jubility >= 1500) { + return JUBEAT_COLOURS.LIGHT_BLUE; + } else if (jubility >= 750) { + return JUBEAT_COLOURS.GREEN; + } else if (jubility >= 250) { + return JUBEAT_COLOURS.YELLOW_GREEN; + } + + return JUBEAT_COLOURS.BLACK; +} diff --git a/server/src/lib/score-import/framework/user-game-stats/classes.ts b/server/src/lib/score-import/framework/user-game-stats/classes.ts index 76f7a8cad..ef9ca264b 100644 --- a/server/src/lib/score-import/framework/user-game-stats/classes.ts +++ b/server/src/lib/score-import/framework/user-game-stats/classes.ts @@ -8,6 +8,7 @@ import { ReturnClassIfGreater } from "utils/class"; import { CalculateChunithmColour, CalculateGitadoraColour, + CalculateJubeatColour, CalculatePopnClass, CalculateSDVXClass, CalculateWACCAColour, @@ -57,7 +58,9 @@ const STATIC_CLASS_HANDLERS: ClassHandlerMap = { wacca: { Single: CalculateWACCAColour, }, - jubeat: null, + jubeat: { + Single: CalculateJubeatColour, + }, }; /** diff --git a/server/src/lib/score-import/framework/user-game-stats/rating.ts b/server/src/lib/score-import/framework/user-game-stats/rating.ts index 2ebec1278..0a8fa3567 100644 --- a/server/src/lib/score-import/framework/user-game-stats/rating.ts +++ b/server/src/lib/score-import/framework/user-game-stats/rating.ts @@ -161,6 +161,7 @@ const RatingFunctions: RatingFunctions = { jubeat: { Single: async (g, p, u, l) => ({ jubility: await CalculateJubility(g, p, u, l), + naiveJubility: await LazySumN("jubility", 60)(g, p, u), }), }, };