45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
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<NetworkState> = {
|
|
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;
|