Files
plugins/dancearound@asphyxia/models.ts
Avimitin 79b530ecdc Add DANCE aROUND game service
Implement card registration, persistent profiles and scores, local catalog unlocks, cabinet telemetry, and bounded motion storage. Read the installed Unity MDB at runtime so the public plugin contains no generated installation data or maintainer tooling.

Co-authored-by: Codex <codex@openai.com>
2026-08-31 13:37:44 +08:00

167 lines
3.2 KiB
TypeScript

export type FumenType = 'BASIC' | 'ADVANCED' | 'MASTER';
export interface PrivacySetting {
publishSetting: number;
}
export interface DancerGrade {
grade: number;
gvGauge: number;
achievedGv: number;
receivedGv: number;
increaseGv: number;
}
export interface AvatarSetting {
physique: number;
skinColor: number;
face: number;
eyeColor: number;
hairstyle: number;
hairColor: number;
costumeUpper: number;
costumeLower: number;
accessoryHead: number;
accessoryFace: number;
accessoryBody: number;
accessoryHand: number;
baseChara: number;
}
export interface PlayOptionSetting {
noteSpeed: number;
noteSize: number;
judgeSeType: number;
judgeSeVolume: number;
judgeTiming: number;
noteTiming: number;
guide: number;
invert: number;
stealth: number;
timelineDisplay: number;
avatarAction: number;
timelineModelDirection: number;
avatarModelDirection: number;
}
export interface PlayInfo {
locationId: string;
modeId: number;
styleId: number;
folderId: number;
musicId: number;
fumenType: FumenType;
startDate: number;
endDate: number;
lightPlayCount: number;
standardPlayCount: number;
trainingPlayCount: number;
pcbId: string;
softcode: string;
}
export interface UnlockMusicEntry {
musicId: number;
fumens: FumenType[];
}
export interface ViewFlagEntry {
viewId: string;
flag: number;
}
export interface MusicUnlockGaugeEntry {
eventId: string;
progress: number;
}
export interface DeltaEntry {
name: string;
income: number;
expense: number;
}
export interface ProfileDocument {
collection: 'profile';
schemaVersion: number;
name: string;
dataId: string;
cardNumber: string;
userCode: number;
dancerId: string;
privacy: PrivacySetting;
dancerGrade: DancerGrade;
avatar: AvatarSetting;
playOption: PlayOptionSetting;
playInfo: PlayInfo;
unlockedMusics: UnlockMusicEntry[];
viewFlags: ViewFlagEntry[];
musicUnlockGauges: MusicUnlockGaugeEntry[];
deltaGroup: DeltaEntry[];
loginCount: number;
createdAt: number;
updatedAt: number;
}
export interface StageResult {
musicId: number;
fumenType: FumenType;
clearStatus: number;
score: number;
rank: number;
combo: number;
perfect: number;
great: number;
good: number;
bad: number;
}
export interface MusicScoreEntry extends StageResult {
gameStartDate: number;
mode: number;
style: number;
stageNo: number;
playCount: number;
playDate: number;
bestScoreDate: number;
pcbId: string;
locationId: string;
shopName: string;
recordCount: number;
gvScore: number;
dropFrame: number;
dropFrameMax: number;
dropCount: number;
videoKey: string;
}
export interface ScoreDocument {
collection: 'scores';
schemaVersion: number;
entries: MusicScoreEntry[];
updatedAt: number;
}
export interface MotionEntry {
motionId: string;
active: boolean;
publishSetting: number;
playCount: number;
totalGv: number;
playResult: StageResult;
playDate: number;
locationId: string;
shopName: string;
avatar: AvatarSetting;
motionFullBase64: string;
motionPreviewBase64: string;
createdAt: number;
}
export interface MotionDocument {
collection: 'motions';
schemaVersion: number;
entries: MotionEntry[];
updatedAt: number;
}