import { writable } from "svelte/store"; import buildings from "./buildings"; import { createBuilding } from "./create"; import type { Building } from "./types"; import { getTilesAtDistance } from "./hexgrid"; type Board = { [key: number]: { [key: number]: number; } } export interface VillageState { buildings: Building[]; resources: { wood: number; stone: number; iron: number; food: number; culture: number; }; villageTiles: Board; outsideTiles: Board; } export const DEFAULT_TILE = -1; export const VILLAGE_TILE = -2; function getInitialVillageBoard() { const board: Board = { 0: { 0: DEFAULT_TILE }, }; for (let i = 1; i <= 2; i++) { getTilesAtDistance(i).forEach(tile => { if (board[tile.y] === undefined) { board[tile.y] = {}; } board[tile.y][tile.x] = DEFAULT_TILE; }); } return board; } function getInitialOutsideBoard() { const board: Board = { 0: { 0: VILLAGE_TILE }, }; for (let i = 1; i <= 2; i++) { getTilesAtDistance(i).forEach(tile => { if (board[tile.y] === undefined) { board[tile.y] = {}; } board[tile.y][tile.x] = DEFAULT_TILE; }); } return board; } function getInitialState() { const townhall = createBuilding(buildings.townhall); const state = { buildings: [ townhall, ], resources: { wood: 60, stone: 60, iron: 60, food: 50, culture: 0, }, villageTiles: getInitialVillageBoard(), outsideTiles: getInitialOutsideBoard(), }; state.villageTiles[0][0] = townhall.id; return state; } const village = writable(getInitialState()); export default village;