diff --git a/src/model/Repository.ts b/src/model/Repository.ts index 122aed8d..97835752 100644 --- a/src/model/Repository.ts +++ b/src/model/Repository.ts @@ -1,6 +1,6 @@ import { Game, GameId, initGame } from "../game" import { API } from "./api" -import { allLaws, Law, LawId } from "../laws" +import { LawId } from "../laws" import { Event } from "../events" import { getState } from "../lib/random" @@ -52,7 +52,6 @@ export default function RepositoryFactory({ }, async saveGame(game: Game): Promise { - game.prngState = getState() storage.setItem("game", JSON.stringify(game)) try { api.saveGame(game) // We don't await here, b/c saving could take place in the background and can even be retried later diff --git a/src/store/actions.ts b/src/store/actions.ts index a0221281..441725fc 100644 --- a/src/store/actions.ts +++ b/src/store/actions.ts @@ -7,7 +7,7 @@ import { Event } from "../events" import { LawId } from "../laws" import { Change, applyEffects, createBaseValues } from "../params" import { steps } from "../tourSteps" -import { seedWithGame } from "../lib/random" +import { getState, seedWithGame } from "../lib/random" interface Router { push: (path: string) => void @@ -29,6 +29,7 @@ export function ActionFactory(router: Router, repository: Repository) { try { const game = await repository.loadGame(payload.gameId) seedWithGame(game) + game.prngState = getState() await repository.saveGame(game) router.push("/games/" + game.id) context.commit("setGameState", { game }) @@ -56,6 +57,7 @@ export function ActionFactory(router: Router, repository: Repository) { .map((law) => ({ lawId: law.id, effectiveSince: law.effectiveSince })) game.acceptedLaws = [...filteredLawRefs, newLawRef] const event = prepareNextStep(game) + game.prngState = getState() await repository.saveGame(game) context.commit("setGameState", { game }) context.dispatch("applyEvent", { event }) @@ -66,6 +68,7 @@ export function ActionFactory(router: Router, repository: Repository) { const game = { ...(context.state.game as Game) } game.rejectedLaws = [...game.rejectedLaws, payload.lawId] await repository.decisionMade(game, payload.lawId, false) + game.prngState = getState() await repository.saveGame(game) context.commit("setGameState", { game }) }, @@ -74,6 +77,7 @@ export function ActionFactory(router: Router, repository: Repository) { const game = { ...(context.state.game as Game) } await repository.decisionMade(game, "sitOut", true) const event = prepareNextStep(game) + game.prngState = getState() await repository.saveGame(game) context.commit("setGameState", { game }) context.dispatch("applyEvent", { event }) @@ -84,6 +88,7 @@ export function ActionFactory(router: Router, repository: Repository) { const laws = game.acceptedLaws.map(getAcceptedLaw) game.currentYear++ game.values = Calculator.calculateNextYear(game, laws, game.currentYear) + game.prngState = getState() await repository.saveGame(game) context.commit("setGameState", { game }) }, @@ -99,6 +104,7 @@ export function ActionFactory(router: Router, repository: Repository) { acknowledgeEvent(context: Context, event: Event) { const game = { ...(context.state.game as Game) } game.events.find((e) => e.id === event.id)!.acknowledged = true + game.prngState = getState() repository.saveGame(game) context.commit("setGameState", { game }) }, @@ -106,7 +112,7 @@ export function ActionFactory(router: Router, repository: Repository) { applyEffects(context: Context, payload: { changes: Change[] }) { const affectedContext = { dispatch: context.dispatch, values: createBaseValues(context.state.game!.values) } applyEffects(affectedContext, payload.changes) - const game = { ...context.state.game, values: affectedContext.values } as Game + const game = { ...context.state.game, values: affectedContext.values, prngState: getState() } as Game repository.saveGame(game) context.commit("setGameState", { game }) },