From dd7bc3556d2ba955b8a1c36efafe636d6c5bfc62 Mon Sep 17 00:00:00 2001 From: MathieuG-P Date: Sun, 6 Nov 2022 01:33:29 +0100 Subject: [PATCH] maps models --- src/shared/models/maps/beat-saver.model.ts | 141 ++++++++++++++++++ .../models/maps/bsm-local-map.interface.ts | 10 ++ src/shared/models/maps/raw-map.model.ts | 32 ++++ 3 files changed, 183 insertions(+) create mode 100644 src/shared/models/maps/beat-saver.model.ts create mode 100644 src/shared/models/maps/bsm-local-map.interface.ts create mode 100644 src/shared/models/maps/raw-map.model.ts diff --git a/src/shared/models/maps/beat-saver.model.ts b/src/shared/models/maps/beat-saver.model.ts new file mode 100644 index 00000000..f6f2f665 --- /dev/null +++ b/src/shared/models/maps/beat-saver.model.ts @@ -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, +} \ No newline at end of file diff --git a/src/shared/models/maps/bsm-local-map.interface.ts b/src/shared/models/maps/bsm-local-map.interface.ts new file mode 100644 index 00000000..4c7e5558 --- /dev/null +++ b/src/shared/models/maps/bsm-local-map.interface.ts @@ -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 +} \ No newline at end of file diff --git a/src/shared/models/maps/raw-map.model.ts b/src/shared/models/maps/raw-map.model.ts new file mode 100644 index 00000000..f54cf17e --- /dev/null +++ b/src/shared/models/maps/raw-map.model.ts @@ -0,0 +1,32 @@ +export interface RawMapInfoData { + _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 +} \ No newline at end of file