diff --git a/client/svelte-client/src/components/NetworkSessionWrapper.svelte b/client/svelte-client/src/components/NetworkSessionWrapper.svelte index 15db7dc..d4f4668 100644 --- a/client/svelte-client/src/components/NetworkSessionWrapper.svelte +++ b/client/svelte-client/src/components/NetworkSessionWrapper.svelte @@ -16,6 +16,8 @@ let cachedSessionId; let relevantKeyboardEvents: Readable; + // TODO: objects must come from events for peer and observer + $: if(!cachedSessionId && session) { cachedSessionId = session.session_id; console.log("NetworkSessionWrapper ready, now setting up sessionEvents") @@ -24,21 +26,17 @@ relevantKeyboardEvents = getPlayerKeyboardInputs(session.you.nr); } - $: if(session && session.state === SessionState.RUNNING) { - // TODO: Include objects - switch(session.type) { - case SessionType.HOST: - console.debug("sending host snapshot") - networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, objects: $gameField, player_id: session.you.id, ts: Date.now()}) - break; - case SessionType.PEER: - console.debug("sending peer snapshot") - networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, player_id: session.you.id, ts: Date.now()}) - break; - default: - // noop - } + $: if(session && session.type === SessionType.HOST && session.state === SessionState.RUNNING) { + console.debug("sending host snapshot") + networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, objects: $gameField, player_id: session.you.id, ts: Date.now()}) } + + // TODO: keyboard events must be sent every tick, not only if a key is pressed + $: if(session && session.type === SessionType.PEER && session.state === SessionState.RUNNING) { + console.debug("sending host snapshot") + networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, player_id: session.you.id, ts: Date.now()}) + } + {#if !session} diff --git a/client/svelte-client/src/store/session.ts b/client/svelte-client/src/store/session.ts index 90ab3b7..4f78522 100644 --- a/client/svelte-client/src/store/session.ts +++ b/client/svelte-client/src/store/session.ts @@ -58,13 +58,17 @@ function createNetworkEvents() { }) const interval = setInterval(() => { + const cachedSessionId = get(sessionId); + if (!cachedSessionId) { + return; + } const last = get(lastSnapshot); const now = Date.now(); if (last && now - last.ts < 1_000) { return } console.debug("sending heartbeat") - const heartbeat: Message = {msg_type: MessageType.Heartbeat, payload: {session_id: get(sessionId), player_id: get(playerId), ts: now}}; + const heartbeat: Message = {msg_type: MessageType.Heartbeat, payload: {session_id: cachedSessionId, player_id: get(playerId), ts: now}}; sendMessage(heartbeat); }, 1_000)