Files
sharechess/src/state.ts
Maciej Caderek 0d3d7f6143 WIP
2022-02-19 04:53:42 +01:00

66 lines
1.3 KiB
TypeScript

import isMobile from "is-mobile";
import { createStore } from "solid-js/store";
import Game from "./game/Game";
import loadConfig from "./persistance/loadConfig";
import { BoardConfig, GameConfig } from "./types";
const mobile = isMobile();
const saved = loadConfig();
const initialBoardConfig: BoardConfig = {
size: 1024,
tiles: 8,
boardStyle: "standard",
piecesStyle: "tatiana",
showBorder: !mobile,
showExtraInfo: true,
showMaterial: true,
showMoveIndicator: true,
showChecks: true,
showCoords: true,
flipped: false,
anonymous: false,
};
const initialGameConfig: GameConfig = {
titleScreen: true,
format: "GIF",
picSize: "M",
animationSize: "M",
};
export type State = {
boardConfig: BoardConfig;
gameConfig: GameConfig;
game: Game;
pgn: string;
fen: string;
moves: string[];
ply: number;
mobile: boolean;
activeTab: "game" | "load";
playing: boolean;
};
const initialState: State = {
boardConfig: {
...initialBoardConfig,
...saved.boardConfig,
anonymous: false,
},
gameConfig: { ...initialGameConfig, ...saved.gameConfig },
game: new Game(),
pgn: "",
fen: "",
moves: [],
ply: 0,
mobile,
activeTab: "load",
playing: false,
};
const [state, setState] = createStore(initialState);
export { state, setState };