diff --git a/client/src/state/progress.ts b/client/src/state/progress.ts index d622703..bee0d90 100644 --- a/client/src/state/progress.ts +++ b/client/src/state/progress.ts @@ -27,7 +27,7 @@ export interface GameProgressState { difficulty: number, openedIntro: boolean, data: WorldProgressState, - typewriterMode: boolean + typewriterMode?: boolean } /** @@ -54,7 +54,7 @@ const initalLevelProgressState: LevelProgressState = {code: "", completed: false /** Add an empty skeleton with progress for the current game */ function addGameProgress (state: ProgressState, action: PayloadAction<{game: string}>) { if (!state.games[action.payload.game]) { - state.games[action.payload.game] = {inventory: [], openedIntro: true, data: {}, difficulty: DEFAULT_DIFFICULTY, typewriterMode: true} + state.games[action.payload.game] = {inventory: [], openedIntro: true, data: {}, difficulty: DEFAULT_DIFFICULTY} } if (!state.games[action.payload.game].data) { state.games[action.payload.game].data = {} @@ -100,7 +100,7 @@ export const progressSlice = createSlice({ }, /** delete all progress for this game */ deleteProgress(state: ProgressState, action: PayloadAction<{game: string}>) { - state.games[action.payload.game] = {inventory: [], data: {}, openedIntro: true, difficulty: DEFAULT_DIFFICULTY, typewriterMode: true} + state.games[action.payload.game] = {inventory: [], data: {}, openedIntro: true, difficulty: DEFAULT_DIFFICULTY} }, /** delete progress for this level */ deleteLevelProgress(state: ProgressState, action: PayloadAction<{game: string, world: string, level: number}>) { @@ -127,6 +127,7 @@ export const progressSlice = createSlice({ addGameProgress(state, action) state.games[action.payload.game].openedIntro = action.payload.openedIntro }, + /** set the typewriter mode */ changeTypewriterMode(state: ProgressState, action: PayloadAction<{game: string, typewriterMode: boolean}>) { addGameProgress(state, action) state.games[action.payload.game].typewriterMode = action.payload.typewriterMode @@ -201,10 +202,10 @@ export function selectOpenedIntro(game: string) { } } -/** return whether the intro has been read */ +/** return typewriter mode for the current game if it exists */ export function selectTypewriterMode(game: string) { return (state) => { - return state.progress.games[game] ? state.progress.games[game].typewriterMode : true + return state.progress.games[game]?.typewriterMode ?? true } }