From 27a182f4340b808ececb0bec331e928b79dc789d Mon Sep 17 00:00:00 2001 From: Pablu23 Date: Mon, 13 Oct 2025 16:17:43 +0200 Subject: [PATCH] Revert gamemode being its own Object to only being a id, also added websocket startGame integration --- src/lib/websocketClient.svelte.ts | 5 +++++ src/routes/game/+page.svelte | 2 -- src/routes/lobby/[id]/+page.server.ts | 3 +-- src/routes/lobby/[id]/+page.svelte | 12 +++++++----- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lib/websocketClient.svelte.ts b/src/lib/websocketClient.svelte.ts index d116048..42f7ebc 100644 --- a/src/lib/websocketClient.svelte.ts +++ b/src/lib/websocketClient.svelte.ts @@ -9,6 +9,7 @@ export class WebsocketClient { selectedPlaylistId: '' }); socket: WebSocket | null = null; + onGameStart: () => void = () => {}; connect(url: string): void { if (this.socket) this.socket.close(); @@ -50,6 +51,10 @@ export class WebsocketClient { case 'settingsUpdate': this.gameSettings = message.settings; break; + + case 'startGame': + this.onGameStart() + break; } } catch (error) { console.error('Failed to parse WebSocket message:', error); diff --git a/src/routes/game/+page.svelte b/src/routes/game/+page.svelte index a76bc8c..31aae6b 100644 --- a/src/routes/game/+page.svelte +++ b/src/routes/game/+page.svelte @@ -13,7 +13,6 @@ // Game $state let currentPlayerId = $state('test1'); - let cards = $state([]); let placedCards = $state([]); let currentCard = $state(null); let dragPosition = $state<{ x: number; y: number } | null>(null); @@ -216,7 +215,6 @@ onMount(() => { // Set up initial game $state placedCards = [mockCards[0], mockCards[1]]; - cards = mockCards.slice(2); currentCard = mockCards[3]; // Set up event listeners for drag and drop diff --git a/src/routes/lobby/[id]/+page.server.ts b/src/routes/lobby/[id]/+page.server.ts index 5204563..c884453 100644 --- a/src/routes/lobby/[id]/+page.server.ts +++ b/src/routes/lobby/[id]/+page.server.ts @@ -1,7 +1,6 @@ import { redirect } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; -import type { User } from '../../../app'; -import type { Playlist, Settings } from '$lib/types'; +import type { User, Playlist, Settings } from '../../../app'; import { env } from '$env/dynamic/public'; export const load: PageServerLoad = async ({ params, fetch, locals: { user } }) => { diff --git a/src/routes/lobby/[id]/+page.svelte b/src/routes/lobby/[id]/+page.svelte index bc9820d..bcb06ff 100644 --- a/src/routes/lobby/[id]/+page.svelte +++ b/src/routes/lobby/[id]/+page.svelte @@ -14,6 +14,11 @@ let { data }: PageProps = $props(); + wsClient.onGameStart = () => { + console.log('Game starting'); + goto('/game'); + }; + let lobbyCode = $state(data.lobby.id); let isHost = $state(data.user.email === data.lobby.host.email); // Assume current user is host for this example @@ -39,7 +44,7 @@ type: 'startGame', settings: wsClient.gameSettings }); - // In a real app, this would navigate to the game screen + // goto('/game'); } function copyLobbyCode() { @@ -49,12 +54,10 @@ function leaveLobby() { wsClient.sendMessage({ - type: 'leaveGame', - player: data.user.email + type: 'leaveGame' }); wsClient.disconnect(); goto('/'); - // In a real app, you'd likely redirect to another page here } onMount(() => { @@ -70,7 +73,6 @@ onDestroy(() => { // Clean up WebSocket connection when component is destroyed - leaveLobby(); });