-
Notifications
You must be signed in to change notification settings - Fork 1
/
scoresdb.js
60 lines (56 loc) · 1.43 KB
/
scoresdb.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class scoresdb extends buffer{
constructor(a){
super(a);
}
parseScore(i=this.i){
this.i=i;
let score = {};
score.Mode = this.parseByte();
score.Version = this.parseInt();
score.Hash = this.parseOsuStr();
score.Player = this.parseOsuStr();
score.ReplayHash = this.parseOsuStr();
score["300"] = this.parseShort();
score["100"] = this.parseShort();
score["50"] = this.parseShort();
score.Geki = this.parseShort();
score.Katu = this.parseShort();
score.Miss = this.parseShort();
score.Score = this.parseInt();
score.Combo = this.parseShort();
score.FullCombo = this.parseBool();
score.Mods = this.parseInt();
this.parseOsuStr();
score.Date = this.parseLong();
this.i+=4;
score.ScoreID = this.parseLong();
if(score.Mods & 8388608)
score.AddModInfo = this.parseDouble();
return score;
}
parseMapScores(i=this.i){
this.i=i;
let map = {};
map.Hash = this.parseOsuStr();
map.scores = new Array(this.parseInt());
for(let i = 0; i != map.scores.length; i++)
map.scores[i] = this.parseScore();
return map;
}
parseScoresDBHeader(i=this.i){
this.i=i;
let q = {};
q.version = this.parseInt();
q.maps = this.parseInt();
return q;
}
parseScoresDB(i=this.i){
this.i=i;
let q = this.parseScoresDBHeader();
q.maps = Array(q.maps);
for(let i = 0; i != q.maps.length; i++){
q.maps[i] = this.parseMapScores();
}
return q;
}
}