Files
Bridge-Multi/src-shared/interfaces/songDetails.interface.ts
2023-11-28 19:50:45 -06:00

95 lines
1.9 KiB
TypeScript

/**
* Represents a single chart version.
*/
export interface VersionResult {
versionID: number
chartID: number
songID: number
latestVersionID: number
latestSetlistVersionID: number
name: string
chartName: string
artist: string
album: string
genre: string
year: string
songDataIncorrect: boolean
driveData: DriveChart & { inChartPack: boolean }
md5: string
lastModified: string
icon: string
charters: string
charterIDs: string
tags: string | null
songLength: number
diff_band: number
diff_guitar: number
diff_bass: number
diff_rhythm: number
diff_drums: number
diff_keys: number
diff_guitarghl: number
diff_bassghl: number
chartData: ChartData
}
export interface DriveChart {
source: DriveSource
isArchive: boolean
downloadPath: string
filesHash: string
folderName: string
folderID: string
files: DriveFile[]
}
export interface DriveSource {
isSetlistSource: boolean
isDriveFileSource?: boolean
setlistIcon?: string
sourceUserIDs: number[]
sourceName: string
sourceDriveID: string
proxyLink?: string
}
export interface DriveFile {
id: string
name: string
mimeType: string
webContentLink: string
modifiedTime: string
md5Checksum: string
size: string
}
export interface ChartData {
hasSections: boolean
hasStarPower: boolean
hasForced: boolean
hasTap: boolean
hasOpen: {
[instrument: string]: boolean
}
hasSoloSections: boolean
hasLyrics: boolean
is120: boolean
hasBrokenNotes: boolean
noteCounts: {
[instrument in Instrument]: {
[difficulty in ChartedDifficulty]: number
}
}
/** number of seconds */
length: number
/** number of seconds */
effectiveLength: number
}
export type Instrument = 'guitar' | 'bass' | 'rhythm' | 'keys' | 'drums' | 'guitarghl' | 'bassghl' | 'vocals' | 'undefined'
export type ChartedDifficulty = 'x' | 'h' | 'm' | 'e'
export function getInstrumentIcon(instrument: Instrument) {
return `${instrument}.png`
}