57 lines
1.0 KiB
TypeScript
57 lines
1.0 KiB
TypeScript
import {
|
|
PeerClient,
|
|
PeerServer,
|
|
LocalClient,
|
|
RoomInfo,
|
|
PeerMetadata
|
|
} from "@/network";
|
|
import Peer from "peerjs";
|
|
|
|
export interface ChatMessage {
|
|
who: string;
|
|
to: string;
|
|
message: string;
|
|
}
|
|
|
|
export interface SharedNetworkState {
|
|
chatLog: ChatMessage[];
|
|
}
|
|
|
|
export interface NoNetworkState extends SharedNetworkState {
|
|
peerType: "none";
|
|
}
|
|
|
|
export interface ClientNetworkState extends SharedNetworkState {
|
|
peerType: "client";
|
|
connectionStatus: "connecting" | "connected" | "disconnected" | "error";
|
|
connectionError?: Error;
|
|
peer: PeerClient;
|
|
}
|
|
|
|
export interface ServerNetworkState extends SharedNetworkState {
|
|
peerType: "server";
|
|
server: PeerServer;
|
|
local: LocalClient;
|
|
}
|
|
|
|
export type NetworkState =
|
|
| NoNetworkState
|
|
| ClientNetworkState
|
|
| ServerNetworkState;
|
|
|
|
export interface StartServerOptions {
|
|
roomInfo: RoomInfo;
|
|
playerInfo: PeerMetadata;
|
|
|
|
// Testing utils
|
|
_customPeer?: Peer;
|
|
}
|
|
|
|
export interface ConnectOptions {
|
|
serverID: string;
|
|
playerInfo: PeerMetadata;
|
|
|
|
// Testing utils
|
|
_customPeer?: Peer;
|
|
}
|