import { ChatMessage, LocalClient, PeerClient, PeerServer } from "@/network"; import Vue from "vue"; import { MutationTree } from "vuex"; import { ClientNetworkState, ConnectionStatus, NetworkState, ServerNetworkState } from "./types"; const mutations: MutationTree = { becomeServer(state, payload: { local: LocalClient; server: PeerServer }) { state.peerType = "server"; state.players = [payload.local.name]; (state as ServerNetworkState).local = payload.local; (state as ServerNetworkState).server = payload.server; }, becomeClient(state, payload: { peer: PeerClient; id: string }) { state.peerType = "client"; (state as ClientNetworkState).connectionStatus = "connecting"; (state as ClientNetworkState).peer = payload.peer; (state as ClientNetworkState).serverID = payload.id; }, connectionStatusChanged(state, status: ConnectionStatus) { (state as ClientNetworkState).connectionStatus = status; }, connectionError(state, error) { (state as ClientNetworkState).connectionStatus = "error"; (state as ClientNetworkState).connectionError = error; }, receivedChatMessage(state, message: ChatMessage) { state.chatLog.push(message); }, serverAssignedID(state, id: string) { state.serverID = id; }, playerListChanged(state, players: string[]) { Vue.set(state, "players", players); } }; export default mutations;