47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { MutationTree } from "vuex";
|
|
import {
|
|
NetworkState,
|
|
ServerNetworkState,
|
|
ClientNetworkState,
|
|
ConnectionStatus
|
|
} from "./types";
|
|
import { LocalClient, PeerServer, PeerClient, ChatMessage } from "@/network";
|
|
|
|
const mutations: MutationTree<NetworkState> = {
|
|
becomeServer(state, payload: { local: LocalClient; server: PeerServer }) {
|
|
state.peerType = "server";
|
|
(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[]) {
|
|
state.players = players;
|
|
}
|
|
};
|
|
|
|
export default mutations;
|