local vs network session

This commit is contained in:
Thilo Behnke
2022-06-19 22:13:10 +02:00
parent 460799c024
commit 842f65d16c
2 changed files with 15 additions and 8 deletions

View File

@@ -28,19 +28,19 @@
}
function createSession() {
$network.loading = true;
sessionStore.createSession().then(() => {
sessionStore.createNetworkSession().then(() => {
$network.loading = false;
})
}
function joinSession(sessionId) {
$network.loading = true;
sessionStore.joinSession(sessionId).then(() => {
sessionStore.joinNetworkSession(sessionId).then(() => {
$network.loading = false;
})
}
function watchSession(sessionId) {
$network.loading = true;
sessionStore.watchSession(sessionId).then(() => {
sessionStore.watchNetworkSession(sessionId).then(() => {
$network.loading = false;
})
}

View File

@@ -5,7 +5,7 @@ export enum SessionState {
}
export enum SessionType {
HOST = 'HOST', PEER = 'PEER', OBSERVER = 'OBSERVER'
LOCAL = 'LOCAL', HOST = 'HOST', PEER = 'PEER', OBSERVER = 'OBSERVER'
}
export type Player = {
@@ -16,13 +16,19 @@ export type Observer = {
id: string
}
export type Session = {
export type LocalSession = {
state: SessionState
}
export type NetworkSession = {
session_id: string,
state: SessionState,
players: Player[],
observers: Observer[]
}
export type Session = LocalSession | NetworkSession;
export type SessionStore = {
session?: Session,
sessionType?: SessionType
@@ -42,9 +48,10 @@ function makeSessionStore() {
return {
subscribe,
createSession: () => createSession().then(session => update(() => ({session, sessionType: SessionType.HOST}))),
joinSession: (sessionId) => joinSession(sessionId).then(session => update(() => ({session, sessionType: SessionType.PEER}))),
watchSession: (sessionId) => watchSession(sessionId).then(session => update(() => ({session, sessionType: SessionType.OBSERVER}))),
createLocalSession: () => update(() => ({session: {state: SessionState.RUNNING}})),
createNetworkSession: () => createSession().then(session => update(() => ({session, sessionType: SessionType.HOST}))),
joinNetworkSession: (sessionId) => joinSession(sessionId).then(session => update(() => ({session, sessionType: SessionType.PEER}))),
watchNetworkSession: (sessionId) => watchSession(sessionId).then(session => update(() => ({session, sessionType: SessionType.OBSERVER}))),
reset: () => set(initialValue())
}
}