2024-07-05 15:37:29 +02:00

59 lines
1.5 KiB
TypeScript

import { ref } from 'vue'
import { defineStore } from 'pinia'
import type { GameSessionState, GameState, Movement, PlayerState } from '@/common/interfaces'
export const useGameStore = defineStore('game', () => {
const sessionState = ref<GameSessionState | undefined>(undefined)
const gameState = ref<GameState | undefined>(undefined)
const playerState = ref<PlayerState | undefined>(undefined)
const canMakeMove = ref(false)
const canSelectTile = ref(false)
const moveToMake = ref<Movement | undefined>(undefined)
const incomingFreeEnds = ref<[number, number] | undefined>(undefined)
function updateSessionState(newState: GameSessionState) {
sessionState.value = newState
}
function updateGameState(newState: GameState) {
gameState.value = newState
}
function updatePlayerState(newState: PlayerState) {
playerState.value = newState
}
function updateCanMakeMove(value: boolean) {
canMakeMove.value = value
}
function setMoveToMake(move: Movement) {
moveToMake.value = move
}
function updateCanSelectTile(value: boolean) {
canSelectTile.value = value
}
function setIncomingFreeEnds(freeEnds: [number, number]) {
incomingFreeEnds.value = freeEnds
}
return {
sessionState,
gameState,
playerState,
canMakeMove,
moveToMake,
incomingFreeEnds,
canSelectTile,
updateSessionState,
updateGameState,
updatePlayerState,
updateCanMakeMove,
setMoveToMake,
setIncomingFreeEnds,
updateCanSelectTile
}
})