UNPKG

boardgame.io

Version:
50 lines (47 loc) 1.56 kB
import { q as Setup, d as Enhance, E as EnhanceCtx, f as Flush } from './turn-order-dce10a02.js'; import { P as ProcessGameConfig } from './reducer-b11048c2.js'; /* * Copyright 2020 The boardgame.io Authors * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ /** * Creates the initial game state. */ function InitializeGame({ game, numPlayers, setupData, }) { game = ProcessGameConfig(game); if (!numPlayers) { numPlayers = 2; } let ctx = game.flow.ctx(numPlayers); let state = { // User managed state. G: {}, // Framework managed state. ctx, // Plugin related state. plugins: {}, }; // Run plugins over initial state. state = Setup(state, { game }); state = Enhance(state, { game, playerID: undefined }); const enhancedCtx = EnhanceCtx(state); state.G = game.setup(enhancedCtx, setupData); let initial = { ...state, // List of {G, ctx} pairs that can be undone. _undo: [], // List of {G, ctx} pairs that can be redone. _redo: [], // A monotonically non-decreasing ID to ensure that // state updates are only allowed from clients that // are at the same version that the server. _stateID: 0, }; initial = game.flow.init(initial); initial = Flush(initial, { game }); return initial; } export { InitializeGame as I };