86 lines
1.6 KiB
TypeScript
86 lines
1.6 KiB
TypeScript
// https://github.com/hardcpp/BeatSaberPlus/wiki/%5BEN%5D-Song-Overlay
|
|
|
|
export interface HandshakeEvent {
|
|
_type: "handshake";
|
|
protocolVersion: number;
|
|
gameVersion: string;
|
|
playerName: string;
|
|
playerPlatformId: string;
|
|
}
|
|
|
|
export interface GameStateEvent {
|
|
_type: "event";
|
|
_event: "gameState";
|
|
gameStateChanged: "Menu" | "Playing";
|
|
}
|
|
|
|
export interface ResumeEvent {
|
|
_type: "event";
|
|
_event: "resume";
|
|
resumeTime: number;
|
|
}
|
|
|
|
export interface PauseEvent {
|
|
_type: "event";
|
|
_event: "pause";
|
|
pauseTime: number;
|
|
}
|
|
|
|
export interface MapInfoChangedEvent {
|
|
_type: "event";
|
|
_event: "mapInfo";
|
|
mapInfoChanged: {
|
|
level_id: string;
|
|
name: string;
|
|
sub_name: string;
|
|
artist: string;
|
|
mapper: string;
|
|
characteristic: string;
|
|
difficulty: string;
|
|
duration: number;
|
|
BPM: number;
|
|
PP: number;
|
|
BSRKey: string;
|
|
coverRaw: string;
|
|
time: number;
|
|
timeMultiplier: number;
|
|
};
|
|
}
|
|
|
|
export interface ScoreEvent {
|
|
_type: "event";
|
|
_event: "score";
|
|
scoreEvent: {
|
|
time: number;
|
|
score: number;
|
|
accuracy: number;
|
|
combo: number;
|
|
missCount: number;
|
|
currentHealth: number;
|
|
};
|
|
}
|
|
|
|
export type BeatSaberPlusEvent =
|
|
| HandshakeEvent
|
|
| GameStateEvent
|
|
| ResumeEvent
|
|
| PauseEvent
|
|
| MapInfoChangedEvent
|
|
| ScoreEvent;
|
|
export type MapInfo = MapInfoChangedEvent["mapInfoChanged"];
|
|
export type Score = ScoreEvent["scoreEvent"];
|
|
|
|
/** Chat request / queue JSON (e.g. ChatRequest.json beside the overlay) */
|
|
export interface ChatRequestEntry {
|
|
key: string;
|
|
rqt: number;
|
|
rqn: string;
|
|
npr: string;
|
|
msg: string;
|
|
}
|
|
|
|
export interface ChatRequestPayload {
|
|
queue: ChatRequestEntry[];
|
|
history: ChatRequestEntry[];
|
|
}
|