maps models

This commit is contained in:
MathieuG-P
2022-11-06 01:33:29 +01:00
parent 788b7598b0
commit dd7bc3556d
3 changed files with 183 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
export interface BsvMapDetail {
automapper: boolean,
createdAt: BsvInstant,
curatedAt: BsvInstant,
curator: BsvUserDetail,
deletedAt: BsvInstant,
description: string,
id: string,
lastPublishedAt: BsvInstant,
metadata: BsvMapDetailMetadata,
name: string,
qualified: boolean,
ranked: boolean,
stats: BsvMapStats,
tags: string[],
updatedAt: BsvInstant,
uploaded: BsvInstant,
uploader: BsvUserDetail,
versions: BsvMapVersion[],
}
export interface BsvInstant {
epochSeconds: number,
nanosecondsOfSecond: number,
value: string
}
export interface BsvUserDetail {
admin: boolean,
avatar: string,
curator: boolean,
description: string,
email: string,
followData: BsvUserFollowData,
hash: string,
id: number,
name: string,
stats: BsvUserStats,
testplay: boolean,
type: string,
uniqueSet: boolean,
uploadLimit: number,
verifiedMapper: boolean
}
export interface BsvUserFollowData {
followers: number,
following: boolean,
follows: number
}
export interface BsvUserStats {
avgBpm: number,
avgDuration: number,
avgScore: number,
diffStats: BsvUserDiffStats,
firstUpload: BsvInstant,
lastUpload: BsvInstant,
rankedMaps: number,
totalDownvotes: number,
totalMaps: number,
totalUpvotes: number
}
export interface BsvUserDiffStats {
easy: number,
expert: number,
expertPlus: number,
hard: number,
normal: number,
total: number
}
export interface BsvMapDetailMetadata {
bpm: number,
duration: number,
levelAuthorName: string,
songAuthorName: string,
songName: string,
songSubName: string
}
export interface BsvMapStats {
downloads: number,
downvotes: number,
plays: number,
score: number,
scoreOneDP: number,
upvotes: number,
}
export interface BsvMapVersion {
coverURL: string,
createdAt: BsvInstant,
diffs: BsvMapDifficulty[],
downloadURL: string,
feedback: string,
hash: string,
key: string,
previewURL: string,
sageScore: number,
scheduledAt: BsvInstant,
state: string,
testplayAt: BsvInstant,
testplays: BsvMapTestplay[],
}
export interface BsvMapTestplay {
createdAt: BsvInstant,
feedback: string,
feedbackAt: BsvInstant,
user: BsvUserDetail,
video: string
}
export interface BsvMapDifficulty {
bombs: number,
characteristic: string,
chroma: boolean,
cinema: boolean,
difficulty: string,
events: number,
length: number,
maxScore: number,
me: boolean,
ne: boolean,
njs: number,
notes: number,
nps: number,
obstacles: number,
offset: number,
paritySummary: BsvMapParitySummary,
seconds: number,
stars: number
}
export interface BsvMapParitySummary {
errors: number,
resets: number,
warns: number,
}
@@ -0,0 +1,10 @@
import { BsvMapDetail } from "./beat-saver.model";
import { RawMapInfoData } from "./raw-map.model";
export interface BsmLocalMap {
hash: string,
coverUrl: string,
songUrl: string,
rawInfo: RawMapInfoData,
bsaverInfo?: BsvMapDetail
}
+32
View File
@@ -0,0 +1,32 @@
export interface RawMapInfoData<T = unknown> {
_version: string,
_songName: string,
_songSubName: string,
_songAuthorName: string,
_levelAuthorName: string,
_beatsPerMinute: number,
_shuffle: number,
_shufflePeriod: number,
_previewStartTime: number,
_previewDuration: number,
_songFilename: string,
_coverImageFilename: string,
_environmentName: string,
_allDirectionsEnvironmentName: string,
_songTimeOffset: number,
_customData: T,
_difficultyBeatmapSets: RawDifficultySet[]
}
export interface RawDifficultySet {
_beatmapCharacteristicName: string,
_difficultyBeatmaps: RawMapDifficulty[]
}
export interface RawMapDifficulty {
_difficulty: string,
_difficultyRank: string,
_beatmapFilename: string,
_noteJumpMovementSpeed: number,
_noteJumpStartBeatOffset: number
}