61 lines
No EOL
1.4 KiB
TypeScript
61 lines
No EOL
1.4 KiB
TypeScript
// src/lib/types/match.ts
|
|
import type { Map, User, RealtimeScore, Push_SongFinished } from 'moons-ta-client';
|
|
import type { BeatSaverMap } from '$lib/services/beatsaver.js';
|
|
|
|
export interface CustomMap {
|
|
taData: Map;
|
|
beatsaverData: BeatSaverMap;
|
|
}
|
|
|
|
export interface RealTimeScoreForPlayers {
|
|
player: User;
|
|
recentScore: RealtimeScore;
|
|
}
|
|
|
|
export interface ScoreWithAccuracy extends Push_SongFinished {
|
|
accuracy: string;
|
|
}
|
|
|
|
export interface PreviousResults {
|
|
taData: Map;
|
|
beatsaverData: BeatSaverMap;
|
|
scores: ScoreWithAccuracy[];
|
|
completionType: 'Completed' | 'Still Awaiting Scores' | 'Exited To Menu';
|
|
}
|
|
|
|
export enum MapDifficulty {
|
|
"Easy" = 0,
|
|
"Normal" = 1,
|
|
"Hard" = 2,
|
|
"Expert" = 3,
|
|
"ExpertPlus" = 4,
|
|
}
|
|
|
|
export const colorPresets = {
|
|
primary: 'var(--accent-glow)',
|
|
secondary: 'var(--text-secondary)',
|
|
success: '#4CAF50',
|
|
warning: '#FFC107',
|
|
error: '#F44336',
|
|
info: '#2196F3',
|
|
default: 'var(--text-primary)'
|
|
} as const;
|
|
|
|
export type ColorPreset = keyof typeof colorPresets;
|
|
export type ButtonType = 'primary' | 'secondary' | 'text' | 'outlined';
|
|
|
|
export interface ButtonConfig {
|
|
text: string;
|
|
type: ButtonType;
|
|
href?: string;
|
|
color?: ColorPreset;
|
|
icon?: string;
|
|
action?: () => void;
|
|
}
|
|
|
|
export interface CustomTAMapPool {
|
|
guid: string;
|
|
name: string;
|
|
image: Uint8Array;
|
|
maps: CustomMap[];
|
|
} |