mirror of
https://github.com/asphyxia-core/plugins.git
synced 2026-09-07 18:55:29 -05:00
Initial BeatStream support.
This commit is contained in:
47
bst@asphyxia/models/bst2/event_params.ts
Normal file
47
bst@asphyxia/models/bst2/event_params.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { BigIntProxy, boolme, KITEM2, KM, s32me, u64me } from "../../utility/mapping"
|
||||
|
||||
export interface IFloorInfectionEventParams {
|
||||
id: number
|
||||
musicList: number
|
||||
isCompleted: boolean
|
||||
}
|
||||
export const FloorInfectionEventParamsMap: KM<IFloorInfectionEventParams> = {
|
||||
id: s32me("infection_id", 20),
|
||||
musicList: s32me("music_list", 7),
|
||||
isCompleted: boolme("is_complete", true)
|
||||
}
|
||||
|
||||
export interface IBst2EventParams {
|
||||
playerId: number
|
||||
startTime: bigint | BigIntProxy
|
||||
hasRbCollaboration: boolean
|
||||
hasPopnCollaboration: boolean
|
||||
floorInfection: { event: IFloorInfectionEventParams }
|
||||
museca: { isPlayedMuseca: boolean }
|
||||
}
|
||||
export const Bst2EventParamsMap: KM<IBst2EventParams> = {
|
||||
playerId: s32me("plyid"),
|
||||
startTime: u64me("start_time"),
|
||||
hasRbCollaboration: boolme("reflec_collabo", true),
|
||||
hasPopnCollaboration: boolme("pop_collabo", true),
|
||||
floorInfection: { event: FloorInfectionEventParamsMap, $targetKey: "floor_infection" },
|
||||
museca: { isPlayedMuseca: boolme("is_play_museca", true) },
|
||||
}
|
||||
|
||||
export interface IBst2EventControl {
|
||||
type: number
|
||||
phase: number
|
||||
}
|
||||
export const Bst2EventControlMap: KM<IBst2EventControl> = {
|
||||
type: s32me(),
|
||||
phase: s32me()
|
||||
}
|
||||
|
||||
let kEventControl: KITEM2<IBst2EventControl>[]
|
||||
export function getKEventControl(): KITEM2<IBst2EventControl>[] {
|
||||
if (kEventControl == null) {
|
||||
kEventControl = []
|
||||
for (let i = 0; i <= 40; i++) for (let j = 0; j <= 25; j++) kEventControl.push(<any>{ type: K.ITEM("s32", i), phase: K.ITEM("s32", j) })
|
||||
}
|
||||
return kEventControl
|
||||
}
|
||||
262
bst@asphyxia/models/bst2/profile.ts
Normal file
262
bst@asphyxia/models/bst2/profile.ts
Normal file
@@ -0,0 +1,262 @@
|
||||
import { BigIntProxy, boolme, colme, ignoreme, KM, s16me, s32me, s8me, strme, u16me, u64me, u8me } from "../../utility/mapping"
|
||||
import { FixedSizeArray } from "../../utility/type"
|
||||
import { ICollection } from "../utility/definitions"
|
||||
|
||||
export interface IBst2Account extends ICollection<"bst.bst2.player.account"> {
|
||||
userId: number
|
||||
isTakeOver: number
|
||||
playerId: number
|
||||
continueCount: number
|
||||
playCount: number
|
||||
playCountToday: number
|
||||
crd: number
|
||||
brd: number
|
||||
dayCount: number
|
||||
refid: string
|
||||
lobbyId: string
|
||||
mode: number
|
||||
version: number
|
||||
pp: boolean
|
||||
ps: boolean
|
||||
pay: number
|
||||
payedPlayCount: number
|
||||
standardTime: bigint | BigIntProxy
|
||||
intrvld?: number
|
||||
previousStartTime?: bigint | BigIntProxy
|
||||
ea?: boolean
|
||||
}
|
||||
export const Bst2AccountMap: KM<IBst2Account> = {
|
||||
collection: colme<IBst2Account>("bst.bst2.player.account"),
|
||||
userId: s32me("usrid"),//
|
||||
isTakeOver: s32me("is_takeover"),//
|
||||
playerId: s32me("plyid"),
|
||||
continueCount: s32me("continue_cnt"),
|
||||
playCount: s32me("tpc"),//
|
||||
playCountToday: s32me("dpc"),//
|
||||
crd: s32me(),//
|
||||
brd: s32me(),//
|
||||
dayCount: s32me("tdc"),//
|
||||
refid: strme("rid"),
|
||||
lobbyId: strme("lid", "Asphyxia"),
|
||||
mode: u8me(null, 2),
|
||||
version: s16me("ver"),//
|
||||
pp: boolme(),
|
||||
ps: boolme(),
|
||||
pay: s16me(),
|
||||
payedPlayCount: s16me("pay_pc"),
|
||||
standardTime: u64me("st", BigInt(Date.now())),//
|
||||
intrvld: s32me(),//
|
||||
previousStartTime: u64me("pst"),//
|
||||
ea: boolme()//
|
||||
}
|
||||
|
||||
export interface IBst2Base extends ICollection<"bst.bst2.player.base"> {
|
||||
name: string
|
||||
brnk: number
|
||||
bcnum: number
|
||||
lcnum: number
|
||||
volt: number
|
||||
gold: number
|
||||
lastMusicId: number
|
||||
lastChart: number
|
||||
lastSort: number
|
||||
lastTab: number
|
||||
splv: number
|
||||
preference: number
|
||||
lcid: number
|
||||
hat: number
|
||||
}
|
||||
export const Bst2BaseMap: KM<IBst2Base> = {
|
||||
collection: colme<IBst2Base>("bst.bst2.player.base"),
|
||||
name: strme(),
|
||||
brnk: s8me(),
|
||||
bcnum: s8me(),
|
||||
lcnum: s8me(),
|
||||
volt: s32me(),
|
||||
gold: s32me(),
|
||||
lastMusicId: s32me("lmid"),
|
||||
lastChart: s8me("lgrd"),
|
||||
lastSort: s8me("lsrt"),
|
||||
lastTab: s8me("ltab"),
|
||||
splv: s8me(),
|
||||
preference: s8me("pref"),
|
||||
lcid: s32me(),
|
||||
hat: s32me()
|
||||
}
|
||||
|
||||
export interface IBst2Survey extends ICollection<"bst.bst2.player.survey"> {
|
||||
motivate: number
|
||||
}
|
||||
export const Bst2SurveyMap: KM<IBst2Survey> = {
|
||||
collection: colme<IBst2Survey>("bst.bst2.player.survey"),
|
||||
motivate: s8me()
|
||||
}
|
||||
|
||||
export interface IBst2UnlockingInfo extends ICollection<"bst.bst2.player.unlockingInfo"> {
|
||||
type: number
|
||||
id: number
|
||||
param: number
|
||||
count: number
|
||||
}
|
||||
export const Bst2UnlockingInfoMap: KM<IBst2UnlockingInfo> = {
|
||||
collection: colme<IBst2UnlockingInfo>("bst.bst2.player.unlockingInfo"),
|
||||
type: s32me(),
|
||||
id: s32me(),
|
||||
param: s32me(),
|
||||
count: s32me()
|
||||
}
|
||||
|
||||
export interface IBst2Customization extends ICollection<"bst.bst2.player.customization"> {
|
||||
custom: FixedSizeArray<number, 16>
|
||||
}
|
||||
export const Bst2CustomizationMap: KM<IBst2Customization> = {
|
||||
collection: colme<IBst2Customization>("bst.bst2.player.customization"),
|
||||
custom: u16me(null, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
|
||||
}
|
||||
|
||||
export interface IBst2Tips extends ICollection<"bst.bst2.player.tips"> {
|
||||
lastTips: number
|
||||
}
|
||||
export const Bst2TipsMap: KM<IBst2Tips> = {
|
||||
collection: colme<IBst2Tips>("bst.bst2.player.tips"),
|
||||
lastTips: s32me("last_tips")
|
||||
}
|
||||
|
||||
export interface IBst2Hacker extends ICollection<"bst.bst2.player.hacker"> {
|
||||
id: number
|
||||
state0: number
|
||||
state1: number
|
||||
state2: number
|
||||
state3: number
|
||||
state4: number
|
||||
updateTime: bigint | BigIntProxy
|
||||
}
|
||||
export const Bst2HackerMap: KM<IBst2Hacker> = {
|
||||
collection: colme<IBst2Hacker>("bst.bst2.player.hacker"),
|
||||
id: s32me(),
|
||||
state0: s8me(),
|
||||
state1: s8me(),
|
||||
state2: s8me(),
|
||||
state3: s8me(),
|
||||
state4: s8me(),
|
||||
updateTime: u64me("update_time")
|
||||
}
|
||||
|
||||
export interface IBst2CrysisLog extends ICollection<"bst.bst2.player.event.crysis"> {
|
||||
id: number
|
||||
stageId: number
|
||||
step: number
|
||||
gauge: number
|
||||
state: number
|
||||
}
|
||||
export const Bst2CrysisLogMap: KM<IBst2CrysisLog> = {
|
||||
collection: colme<IBst2CrysisLog>("bst.bst2.player.event.crysis"),
|
||||
id: s32me(),
|
||||
stageId: s32me("stage_no"),
|
||||
step: s8me(),
|
||||
gauge: s32me("r_gauge"),
|
||||
state: s8me("r_state")
|
||||
}
|
||||
|
||||
export interface IBst2Bisco extends ICollection<"bst.bst2.player.bisco"> {
|
||||
bnum: number
|
||||
jbox: number
|
||||
}
|
||||
export const Bst2BiscoMap: KM<IBst2Bisco> = {
|
||||
collection: colme<IBst2Bisco>("bst.bst2.player.bisco"),
|
||||
bnum: s32me(),
|
||||
jbox: s32me(),
|
||||
}
|
||||
|
||||
export interface IBst2MusicRecord extends ICollection<"bst.bst2.playData.musicRecord#userId"> {
|
||||
musicId: number
|
||||
chart: number
|
||||
playCount: number
|
||||
clearCount: number
|
||||
gaugeTimes10: number
|
||||
score: number
|
||||
grade: number
|
||||
medal: number
|
||||
combo: number
|
||||
userId: number
|
||||
updateTime: number
|
||||
lastPlayTime: number
|
||||
}
|
||||
export const Bst2MusicRecordMap: KM<IBst2MusicRecord> = {
|
||||
collection: colme<IBst2MusicRecord>("bst.bst2.playData.musicRecord#userId"),
|
||||
musicId: s32me("music_id"),
|
||||
chart: s32me("note_level"),
|
||||
playCount: s32me("play_count"),
|
||||
clearCount: s32me("clear_count"),
|
||||
gaugeTimes10: s32me("best_gauge"),
|
||||
score: s32me("best_score"),
|
||||
grade: s32me("best_grade"),
|
||||
medal: s32me("best_medal"),
|
||||
combo: ignoreme(),
|
||||
userId: ignoreme(),
|
||||
updateTime: ignoreme(),
|
||||
lastPlayTime: ignoreme()
|
||||
}
|
||||
|
||||
export interface IBst2Course extends ICollection<"bst.bst2.playData.course#userId"> {
|
||||
courseId: number
|
||||
playCount: number
|
||||
isTouched: boolean
|
||||
clearType: number
|
||||
gauge: number
|
||||
score: number
|
||||
grade: number
|
||||
medal: number
|
||||
combo: number
|
||||
userId: number
|
||||
updateTime: number
|
||||
lastPlayTime: number
|
||||
}
|
||||
export const Bst2CourseMap: KM<IBst2Course> = {
|
||||
collection: colme<IBst2Course>("bst.bst2.playData.course#userId"),
|
||||
courseId: s32me("course_id"),
|
||||
playCount: s32me("play"),
|
||||
isTouched: boolme("is_touch"),
|
||||
clearType: s32me("clear"),
|
||||
gauge: s32me("gauge"),
|
||||
score: s32me(),
|
||||
grade: s32me(),
|
||||
medal: s32me(),
|
||||
combo: s32me(),
|
||||
userId: ignoreme(),
|
||||
updateTime: ignoreme(),
|
||||
lastPlayTime: ignoreme()
|
||||
}
|
||||
|
||||
export interface IBst2Player {
|
||||
pdata: {
|
||||
account: IBst2Account
|
||||
base: IBst2Base
|
||||
opened: {}
|
||||
survey: IBst2Survey
|
||||
item: { info?: IBst2UnlockingInfo[] }
|
||||
customize: IBst2Customization
|
||||
tips: IBst2Tips
|
||||
hacker: { info?: IBst2Hacker[] }
|
||||
playLog: { crysis?: IBst2CrysisLog[] }
|
||||
bisco: { pinfo: IBst2Bisco }
|
||||
record: { rec?: IBst2MusicRecord[] }
|
||||
course: { record?: IBst2Course[] }
|
||||
}
|
||||
}
|
||||
export const Bst2PlayerMap: KM<IBst2Player> = {
|
||||
pdata: {
|
||||
account: Bst2AccountMap,
|
||||
base: Bst2BaseMap,
|
||||
opened: {},
|
||||
survey: Bst2SurveyMap,
|
||||
item: { info: { 0: Bst2UnlockingInfoMap } },
|
||||
customize: Bst2CustomizationMap,
|
||||
tips: Bst2TipsMap,
|
||||
hacker: { info: { 0: Bst2HackerMap } },
|
||||
playLog: { crysis: { 0: Bst2CrysisLogMap }, $targetKey: "play_log" },
|
||||
bisco: { pinfo: Bst2BiscoMap },
|
||||
record: { rec: { 0: Bst2MusicRecordMap } },
|
||||
course: { record: { 0: Bst2CourseMap } }
|
||||
}
|
||||
}
|
||||
80
bst@asphyxia/models/bst2/stagelog.ts
Normal file
80
bst@asphyxia/models/bst2/stagelog.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { colme, ignoreme, KM, s32me, strme } from "../../utility/mapping"
|
||||
import { ICollection } from "../utility/definitions"
|
||||
|
||||
export interface IBst2StageLog extends ICollection<"bst.bst2.playData.stageLog#userId"> {
|
||||
playerId: number
|
||||
continueCount: number
|
||||
stageId: number
|
||||
userId: number
|
||||
lobbyId: string
|
||||
musicId: number
|
||||
chart: number
|
||||
gaugeTimes10: number
|
||||
score: number
|
||||
combo: number
|
||||
grade: number
|
||||
medal: number
|
||||
fantasticCount: number
|
||||
greatCount: number
|
||||
fineCount: number
|
||||
missCount: number
|
||||
isCourseStage: boolean
|
||||
time: number
|
||||
}
|
||||
export const Bst2StageLogMap: KM<IBst2StageLog> = {
|
||||
collection: colme<IBst2StageLog>("bst.bst2.playData.stageLog#userId"),
|
||||
playerId: s32me("play_id"),
|
||||
continueCount: s32me("continue_count"),
|
||||
stageId: s32me("stage_no"),
|
||||
userId: s32me("user_id"),
|
||||
lobbyId: strme("location_id"),
|
||||
musicId: s32me("select_music_id"),
|
||||
chart: s32me("select_grade"),
|
||||
gaugeTimes10: s32me("result_clear_gauge"),
|
||||
score: s32me("result_score"),
|
||||
combo: s32me("result_max_combo"),
|
||||
grade: s32me("result_grade"),
|
||||
medal: s32me("result_medal"),
|
||||
fantasticCount: s32me("result_fanta"),
|
||||
greatCount: s32me("result_great"),
|
||||
fineCount: s32me("result_fine"),
|
||||
missCount: s32me("result_miss"),
|
||||
isCourseStage: ignoreme(),
|
||||
time: ignoreme(),
|
||||
}
|
||||
|
||||
export interface IBst2CourseLog extends ICollection<"bst.bst2.playData.courseLog#userId"> {
|
||||
playerId: number
|
||||
continueCount: number
|
||||
userId: number
|
||||
courseId: number
|
||||
gauge: number
|
||||
score: number
|
||||
grade: number
|
||||
medal: number
|
||||
combo: number
|
||||
fantasticCount: number
|
||||
greatCount: number
|
||||
fineCount: number
|
||||
missCount: number
|
||||
lobbyId: string
|
||||
time: number
|
||||
}
|
||||
export const Bst2CourseLogMap: KM<IBst2CourseLog> = {
|
||||
collection: colme<IBst2CourseLog>("bst.bst2.playData.courseLog#userId"),
|
||||
playerId: s32me("play_id"),
|
||||
continueCount: s32me("continue_count"),
|
||||
userId: s32me("user_id"),
|
||||
courseId: s32me("course_id"),
|
||||
lobbyId: strme("lid"),
|
||||
gauge: s32me(),
|
||||
score: s32me(),
|
||||
combo: s32me(),
|
||||
grade: s32me(),
|
||||
medal: s32me(),
|
||||
fantasticCount: s32me("fanta"),
|
||||
greatCount: s32me("great"),
|
||||
fineCount: s32me("fine"),
|
||||
missCount: s32me("miss"),
|
||||
time: ignoreme()
|
||||
}
|
||||
5
bst@asphyxia/models/utility/batch.ts
Normal file
5
bst@asphyxia/models/utility/batch.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { ICollection } from "./definitions"
|
||||
|
||||
export interface IBatchResult extends ICollection<"bst.batchResult"> {
|
||||
batchId: string
|
||||
}
|
||||
3
bst@asphyxia/models/utility/definitions.d.ts
vendored
Normal file
3
bst@asphyxia/models/utility/definitions.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export interface ICollection<TCollectionName extends string> {
|
||||
collection: TCollectionName
|
||||
}
|
||||
5
bst@asphyxia/models/utility/plugin_version.ts
Normal file
5
bst@asphyxia/models/utility/plugin_version.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { ICollection } from "./definitions"
|
||||
|
||||
export interface IPluginVersion<TMajor extends number = number, TMinor extends number = number, TRevision extends number = number> extends ICollection<"bst.pluginVersion"> {
|
||||
version: string
|
||||
}
|
||||
14
bst@asphyxia/models/utility/webui_message.ts
Normal file
14
bst@asphyxia/models/utility/webui_message.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { ICollection } from "./definitions"
|
||||
|
||||
export interface IWebUIMessage extends ICollection<"utility.webuiMessage"> {
|
||||
message: string
|
||||
type: WebUIMessageType
|
||||
refid?: string
|
||||
version: number
|
||||
}
|
||||
|
||||
export enum WebUIMessageType {
|
||||
info = 0,
|
||||
success = 1,
|
||||
error = 2
|
||||
}
|
||||
Reference in New Issue
Block a user