BBIY/src/bootstrap.js

56 lines
1.3 KiB
JavaScript
Raw Normal View History

game.bootstrap = (function() {
const scripts = [
{ src: ['src/game.js'], id: 'game' },
];
const assets = {
bigblue: 'assets/image/bigblue.png',
};
const loadScripts = function(onDone) {
while (scripts.length) {
let script = scripts.shift();
require(script.src, () => {
onDone(script);
});
}
console.log('scripts loaded');
}
const loadAsset = (source) => {
let fileExtension = source.substr(source.lastIndexOf('.') + 1);
return fetch(source)
.then((r) => r.blob())
.then((r) => {
let asset;
if (["png", "jpg", "jpeg"].includes(fileExtension)) {
asset = new Image();
} else if (["mp3"].includes(fileExtension)) {
asset = new Audio();
}
asset.src = URL.createObjectURL(r);
return asset;
})
}
const loadAssets = function() {
const promises = [];
for (let key in assets) {
promises.push(loadAsset(assets[key], (asset) => {
game.assets[key] = asset;
}, (error) => {
console.log(error)
}));
}
return Promise.all(Object.keys(assets).map((key) => {
return loadAsset(assets[key]).then((asset) => game.assets[key] = asset);
}));
}
game.assets = {};
loadAssets().then(() => {
loadScripts((script) => {
game.initialize();
});
})
})();