From cc19d2ee8cda6d20b8ecfabf64b2d0ccab46c36e Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Fri, 21 Jul 2023 00:33:23 +0100 Subject: [PATCH] fix: allow midi for bms7k and bms14k --- common/src/config/game-support/bms.ts | 4 ++-- .../import-types/ir/beatoraja/converter.ts | 12 ++++++++++-- .../score-import/import-types/ir/beatoraja/parser.ts | 2 +- .../score-import/import-types/ir/beatoraja/types.ts | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/common/src/config/game-support/bms.ts b/common/src/config/game-support/bms.ts index afb5cd1e9..508d64469 100644 --- a/common/src/config/game-support/bms.ts +++ b/common/src/config/game-support/bms.ts @@ -338,7 +338,7 @@ export const BMS_7K_CONF = { scoreMeta: z.strictObject({ random: RANDOM_SCHEMA.optional().nullable(), - inputDevice: z.enum(["BM_CONTROLLER", "KEYBOARD"]).optional().nullable(), + inputDevice: z.enum(["BM_CONTROLLER", "KEYBOARD", "MIDI"]).optional().nullable(), client: z.enum(["lr2oraja", "LR2"]).optional().nullable(), gauge: z.enum(["EASY", "NORMAL", "HARD", "EX-HARD"]).optional().nullable(), }), @@ -356,7 +356,7 @@ export const BMS_14K_CONF = { scoreMeta: z.strictObject({ random: z.tuple([RANDOM_SCHEMA, RANDOM_SCHEMA]).optional().nullable(), - inputDevice: z.enum(["BM_CONTROLLER", "KEYBOARD"]).optional().nullable(), + inputDevice: z.enum(["BM_CONTROLLER", "KEYBOARD", "MIDI"]).optional().nullable(), client: z.enum(["lr2oraja", "LR2"]).optional().nullable(), gauge: z.enum(["EASY", "NORMAL", "HARD", "EX-HARD"]).optional().nullable(), }), diff --git a/server/src/lib/score-import/import-types/ir/beatoraja/converter.ts b/server/src/lib/score-import/import-types/ir/beatoraja/converter.ts index 9e96cf298..60d75bbdb 100644 --- a/server/src/lib/score-import/import-types/ir/beatoraja/converter.ts +++ b/server/src/lib/score-import/import-types/ir/beatoraja/converter.ts @@ -15,7 +15,7 @@ import type { DryScore } from "../../../framework/common/types"; import type { ConverterFunction } from "../../common/types"; import type { BeatorajaChart, BeatorajaContext, BeatorajaScore } from "./types"; import type { KtLogger } from "lib/logger/logger"; -import type { ChartDocument, SongDocument, Playtypes } from "tachi-common"; +import type { ChartDocument, SongDocument, Playtypes, Playtype } from "tachi-common"; import type { Mutable } from "utils/types"; const LAMP_LOOKUP = { @@ -164,8 +164,16 @@ export const ConverterIRBeatoraja: ConverterFunction | null; } else { + let playtype: Playtypes["pms"]; + // It's still called BM_CONTROLLER even though its popn! - const playtype = data.deviceType === "BM_CONTROLLER" ? "Controller" : "Keyboard"; + if (data.deviceType === "BM_CONTROLLER") { + playtype = "Controller"; + } else if (data.deviceType === "KEYBOARD") { + playtype = "Keyboard"; + } else { + throw new InvalidScoreFailure("MIDI is not allowed for PMS scores."); + } chart = (await FindChartOnSHA256Playtype(game, data.sha256, playtype)) as ChartDocument< "pms:Controller" | "pms:Keyboard" diff --git a/server/src/lib/score-import/import-types/ir/beatoraja/parser.ts b/server/src/lib/score-import/import-types/ir/beatoraja/parser.ts index 40464af66..5759ffdeb 100644 --- a/server/src/lib/score-import/import-types/ir/beatoraja/parser.ts +++ b/server/src/lib/score-import/import-types/ir/beatoraja/parser.ts @@ -13,7 +13,7 @@ const PR_BEATORAJA_SCORE = { exscore: p.isPositiveInteger, passnotes: p.isPositiveInteger, gauge: p.or(p.isBetween(0, 100), p.is(-1)), - deviceType: p.isIn("BM_CONTROLLER", "KEYBOARD"), + deviceType: p.isIn("BM_CONTROLLER", "KEYBOARD", "MIDI"), minbp: p.or(p.isPositiveInteger, p.is(-1)), option: p.isInteger, diff --git a/server/src/lib/score-import/import-types/ir/beatoraja/types.ts b/server/src/lib/score-import/import-types/ir/beatoraja/types.ts index b3b080203..3561c0495 100644 --- a/server/src/lib/score-import/import-types/ir/beatoraja/types.ts +++ b/server/src/lib/score-import/import-types/ir/beatoraja/types.ts @@ -32,7 +32,7 @@ export interface BeatorajaScore { exscore: integer; passnotes: integer; gauge: number; - deviceType: "BM_CONTROLLER" | "KEYBOARD"; + deviceType: "BM_CONTROLLER" | "KEYBOARD" | "MIDI"; minbp: integer; option: integer;