From 649aa94dcf6942361082c7a90cdc7997a9821644 Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 19:47:00 -0800 Subject: [PATCH 1/8] Add support for specifying max number of players via "/create-table" URL (?maxPlayers= or ?numPlayers=) --- packages/client/src/lobby/url.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index 3c04f74d2..828a76f64 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -1,4 +1,5 @@ import type { ServerCommandWelcomeData } from "@hanabi-live/data"; +import { DEFAULT_CREATE_TABLE_MAX_PLAYERS } from "@hanabi-live/data"; import { DEFAULT_VARIANT_NAME } from "@hanabi-live/game"; import { parseIntSafe } from "complete-common"; import { globals } from "../Globals"; @@ -32,6 +33,10 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const detrimentalCharacters = urlParams.get("detrimentalCharacters") === "true"; const password = urlParams.get("password") ?? ""; + const maxPlayers = + urlParams.get("maxPlayers") ?? + urlParams.get("numPlayers") ?? + DEFAULT_CREATE_TABLE_MAX_PLAYERS; globals.conn!.send("tableCreate", { name, @@ -50,6 +55,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { detrimentalCharacters, }, password, + maxPlayers: maxPlayers, }); return; } @@ -89,7 +95,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const shadowingPlayerIndexString = shadowMatch[1]; if (shadowingPlayerIndexString !== undefined) { const shadowingPlayerIndexInt = parseIntSafe( - shadowingPlayerIndexString, + shadowingPlayerIndexString ); if ( shadowingPlayerIndexInt !== undefined && @@ -110,7 +116,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/(shared-)?replay/123" URL. const replayMatch = /\/(?:shared-)?replay\/(\d+)/.exec( - window.location.pathname, + window.location.pathname ); if (replayMatch !== null) { const databaseIDString = replayMatch[1]; @@ -134,7 +140,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/replay-json/string" or // "/shared-replay-json/string" URL. const replayJSONMatch = /\/(?:shared-)?replay-json\/([\d,A-Za-z-]+)$/.exec( - window.location.pathname, + window.location.pathname ); if (replayJSONMatch !== null) { const gameJSONStringCompressed = replayJSONMatch[1]; From a225ef19ab43d7c6934200f3ede84dc7602549ff Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 19:53:12 -0800 Subject: [PATCH 2/8] (Update to fix lint.) --- packages/client/src/lobby/url.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index 828a76f64..d9d5a7b42 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -55,7 +55,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { detrimentalCharacters, }, password, - maxPlayers: maxPlayers, + maxPlayers, }); return; } From 027f59482d3fbcb31fd1100669e7aa966e69827f Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 20:48:13 -0800 Subject: [PATCH 3/8] parseIntSafe --- packages/client/src/lobby/url.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index d9d5a7b42..d8d6fc4d2 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -34,9 +34,9 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { urlParams.get("detrimentalCharacters") === "true"; const password = urlParams.get("password") ?? ""; const maxPlayers = - urlParams.get("maxPlayers") ?? - urlParams.get("numPlayers") ?? - DEFAULT_CREATE_TABLE_MAX_PLAYERS; + parseIntSafe( + urlParams.get("maxPlayers") ?? urlParams.get("numPlayers") + ) ?? DEFAULT_CREATE_TABLE_MAX_PLAYERS; globals.conn!.send("tableCreate", { name, From 301397ed2dda3c4c5678b1e9fd7b9d26377400ca Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 20:53:02 -0800 Subject: [PATCH 4/8] Lint --- packages/client/src/lobby/url.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index d8d6fc4d2..4504664f1 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -33,10 +33,11 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const detrimentalCharacters = urlParams.get("detrimentalCharacters") === "true"; const password = urlParams.get("password") ?? ""; - const maxPlayers = - parseIntSafe( - urlParams.get("maxPlayers") ?? urlParams.get("numPlayers") - ) ?? DEFAULT_CREATE_TABLE_MAX_PLAYERS; + const maxPlayers = parseIntSafe( + urlParams.get("maxPlayers") ?? + urlParams.get("numPlayers") ?? + DEFAULT_CREATE_TABLE_MAX_PLAYERS.toString() + ); globals.conn!.send("tableCreate", { name, @@ -95,7 +96,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const shadowingPlayerIndexString = shadowMatch[1]; if (shadowingPlayerIndexString !== undefined) { const shadowingPlayerIndexInt = parseIntSafe( - shadowingPlayerIndexString + shadowingPlayerIndexString, ); if ( shadowingPlayerIndexInt !== undefined && @@ -116,7 +117,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/(shared-)?replay/123" URL. const replayMatch = /\/(?:shared-)?replay\/(\d+)/.exec( - window.location.pathname + window.location.pathname, ); if (replayMatch !== null) { const databaseIDString = replayMatch[1]; @@ -140,7 +141,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/replay-json/string" or // "/shared-replay-json/string" URL. const replayJSONMatch = /\/(?:shared-)?replay-json\/([\d,A-Za-z-]+)$/.exec( - window.location.pathname + window.location.pathname, ); if (replayJSONMatch !== null) { const gameJSONStringCompressed = replayJSONMatch[1]; From 1eefc34057555a67c34e9ea6daa03fd37b0cd987 Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 20:57:02 -0800 Subject: [PATCH 5/8] Lint attempt fix --- packages/client/src/lobby/url.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index 4504664f1..0c6aef4dd 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -1,5 +1,7 @@ -import type { ServerCommandWelcomeData } from "@hanabi-live/data"; -import { DEFAULT_CREATE_TABLE_MAX_PLAYERS } from "@hanabi-live/data"; +import { + DEFAULT_CREATE_TABLE_MAX_PLAYERS, + type ServerCommandWelcomeData, +} from "@hanabi-live/data"; import { DEFAULT_VARIANT_NAME } from "@hanabi-live/game"; import { parseIntSafe } from "complete-common"; import { globals } from "../Globals"; @@ -96,7 +98,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const shadowingPlayerIndexString = shadowMatch[1]; if (shadowingPlayerIndexString !== undefined) { const shadowingPlayerIndexInt = parseIntSafe( - shadowingPlayerIndexString, + shadowingPlayerIndexString ); if ( shadowingPlayerIndexInt !== undefined && @@ -117,7 +119,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/(shared-)?replay/123" URL. const replayMatch = /\/(?:shared-)?replay\/(\d+)/.exec( - window.location.pathname, + window.location.pathname ); if (replayMatch !== null) { const databaseIDString = replayMatch[1]; @@ -141,7 +143,7 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { // Automatically go into a replay if we are using a "/replay-json/string" or // "/shared-replay-json/string" URL. const replayJSONMatch = /\/(?:shared-)?replay-json\/([\d,A-Za-z-]+)$/.exec( - window.location.pathname, + window.location.pathname ); if (replayJSONMatch !== null) { const gameJSONStringCompressed = replayJSONMatch[1]; From 2ad36059ce133bfd17aee96dd6e9656db3df8e29 Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 21:08:16 -0800 Subject: [PATCH 6/8] Idk what is wrong... just throwing spaghetti at the wall. --- packages/client/src/lobby/url.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index 0c6aef4dd..b001f4574 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -35,11 +35,10 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const detrimentalCharacters = urlParams.get("detrimentalCharacters") === "true"; const password = urlParams.get("password") ?? ""; - const maxPlayers = parseIntSafe( - urlParams.get("maxPlayers") ?? - urlParams.get("numPlayers") ?? - DEFAULT_CREATE_TABLE_MAX_PLAYERS.toString() - ); + const maxPlayers = + parseIntSafe( + urlParams.get("maxPlayers") ?? urlParams.get("numPlayers") + ) ?? DEFAULT_CREATE_TABLE_MAX_PLAYERS; globals.conn!.send("tableCreate", { name, From 0b639672beef767921da708209f8fac25d325ec1 Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 21:10:02 -0800 Subject: [PATCH 7/8] More spaghetti --- packages/client/src/lobby/url.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index b001f4574..d8d6fc4d2 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -1,7 +1,5 @@ -import { - DEFAULT_CREATE_TABLE_MAX_PLAYERS, - type ServerCommandWelcomeData, -} from "@hanabi-live/data"; +import type { ServerCommandWelcomeData } from "@hanabi-live/data"; +import { DEFAULT_CREATE_TABLE_MAX_PLAYERS } from "@hanabi-live/data"; import { DEFAULT_VARIANT_NAME } from "@hanabi-live/game"; import { parseIntSafe } from "complete-common"; import { globals } from "../Globals"; From 97592b567c666841580f7fcb4924f4eb38213adf Mon Sep 17 00:00:00 2001 From: NZadeh Date: Sun, 2 Feb 2025 21:24:28 -0800 Subject: [PATCH 8/8] More spaghetti --- packages/client/src/lobby/url.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/client/src/lobby/url.ts b/packages/client/src/lobby/url.ts index d8d6fc4d2..1ef55e1e2 100644 --- a/packages/client/src/lobby/url.ts +++ b/packages/client/src/lobby/url.ts @@ -33,10 +33,11 @@ export function parseAndGoto(data: ServerCommandWelcomeData): void { const detrimentalCharacters = urlParams.get("detrimentalCharacters") === "true"; const password = urlParams.get("password") ?? ""; - const maxPlayers = - parseIntSafe( - urlParams.get("maxPlayers") ?? urlParams.get("numPlayers") - ) ?? DEFAULT_CREATE_TABLE_MAX_PLAYERS; + const maxPlayers = parseIntSafe( + urlParams.get("maxPlayers") ?? + urlParams.get("numPlayers") ?? + DEFAULT_CREATE_TABLE_MAX_PLAYERS.toString() + ); globals.conn!.send("tableCreate", { name,