import { useGameStore } from "~/store/game.store"; import type { GameDeleteEvent, GameEndTurnEvent, GameJoinEvent, GameMessageDeleteEvent, GameMessageEvent, GameStartEvent, } from "../events/game.events"; import type { GameResponseDTO } from "../events/dto/gameresponse.dto"; import { useUserStore } from "~/store/user.store"; export const handlers = { joingame: (event: GameJoinEvent) => { const gameStore = useGameStore(); gameStore.game.players.push(event.player); }, start: (event: GameStartEvent) => { const gameStore = useGameStore(); gameStore.game.started = true; gameStore.game.currentPlayer = event.currentPlayer; gameStore.currentWord = null; }, delete: (event: GameDeleteEvent) => { const gameStore = useGameStore(); gameStore.game = {} as GameResponseDTO; alert("Game deleted"); navigateTo("/"); }, message: (event: GameMessageEvent) => { const gameStore = useGameStore(); gameStore.game.messages.push(event.message); if (!event.message.authorId) { const player = gameStore.game.players.find( (p) => p.userId == event.message.value ); if (player) { player.score++; } } }, deleteMessage: (event: GameMessageDeleteEvent) => { const gameStore = useGameStore(); const index = gameStore.game.messages.findIndex( (m) => m.id == event.messageId ); gameStore.game.messages.splice(index, 1); }, endTurn: (event: GameEndTurnEvent) => { const gameStore = useGameStore(); const userStore = useUserStore(); gameStore.game.players.forEach((p) => (p.hasGuessed = false)); gameStore.game.currentConcepts = []; gameStore.game.messages = []; gameStore.game.currentPlayer = event.currentPlayer; if (userStore.self && userStore.self.id == event.currentPlayer.userId) { void gameStore.getCurrentWord(gameStore.game.id); } }, };