56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
|
|
var utils = require('../utils');
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Load beat data (all the beats and such).
|
||
|
|
*/
|
||
|
|
AFRAME.registerComponent('beat-loader', {
|
||
|
|
schema: {
|
||
|
|
challengeId: {type: 'string'},
|
||
|
|
difficulty: {type: 'string'}
|
||
|
|
},
|
||
|
|
|
||
|
|
update: function () {
|
||
|
|
var challengeId = this.data.challengeId;
|
||
|
|
var el = this.el;
|
||
|
|
var xhr;
|
||
|
|
|
||
|
|
if (!challengeId || !diffjculty) { return; }
|
||
|
|
|
||
|
|
// Load beats.
|
||
|
|
xhr = new XMLHttpRequest();
|
||
|
|
el.emit('beatloaderstart');
|
||
|
|
xhr.open('GET', utils.getS3FileUrl(challengeId, `${this.data.difficulty}.json`));
|
||
|
|
xhr.addEventListener('load', () => {
|
||
|
|
this.handleBeats(JSON.parse(xhr.responseText));
|
||
|
|
});
|
||
|
|
xhr.send();
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* TODO: Load the beat data into the game.
|
||
|
|
*/
|
||
|
|
handleBeats: function (beatData) {
|
||
|
|
var el = this.el;
|
||
|
|
|
||
|
|
history.pushState(
|
||
|
|
'',
|
||
|
|
challenge.songName,
|
||
|
|
updateQueryParam(window.location.href, 'challenge', this.data.challengeId)
|
||
|
|
);
|
||
|
|
|
||
|
|
document.title = `Super Saber - ${challenge.songName}`;
|
||
|
|
el.emit('beatloaderfinish');
|
||
|
|
console.log('Finished loading challenge data.');
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
function updateQueryParam(uri, key, value) {
|
||
|
|
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
|
||
|
|
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
||
|
|
if (uri.match(re)) {
|
||
|
|
return uri.replace(re, '$1' + key + '=' + value + '$2');
|
||
|
|
} else {
|
||
|
|
return uri + separator + key + '=' + value;
|
||
|
|
}
|
||
|
|
}
|