37 lines
738 B
JavaScript
37 lines
738 B
JavaScript
class HighscoreManager {
|
|
constructor() {
|
|
this._deserialize();
|
|
}
|
|
|
|
_deserialize() {
|
|
let raw = localStorage.getItem('rhythm.hst');
|
|
if(!raw) {
|
|
this._highscores = {};
|
|
this._serialize();
|
|
} else {
|
|
this._highscores = JSON.parse(atob(raw));
|
|
}
|
|
}
|
|
|
|
_serialize() {
|
|
localStorage.setItem('rhythm.hst', btoa(JSON.stringify(this._highscores)));
|
|
}
|
|
|
|
getHighscore(songId) {
|
|
return this._highscores[songId]
|
|
}
|
|
|
|
setHighscore(songId, name, score) {
|
|
let existing = this.getHighscore(songId);
|
|
if(existing != undefined && existing.score <= score)
|
|
return;
|
|
|
|
this._highscores[songId] = {
|
|
name,
|
|
score
|
|
}
|
|
this._serialize();
|
|
}
|
|
}
|
|
|
|
export default new HighscoreManager(); |