2015-07-17 10:22:46 +02:00
|
|
|
function Loader(){
|
|
|
|
|
|
|
|
var _this=this;
|
|
|
|
var _loadedAssets=0;
|
|
|
|
var _percentage=0;
|
|
|
|
var _nbAssets=assets.audio.length+assets.img.length+assets.fonts.length+1; //+1 for song structures
|
2018-09-05 18:46:26 +02:00
|
|
|
var _assetsDiv=document.getElementById("assets")
|
|
|
|
var _loaderPercentage
|
|
|
|
var _errorCount=0
|
|
|
|
|
2015-07-17 10:22:46 +02:00
|
|
|
this.run = function(){
|
|
|
|
|
2018-09-05 18:46:26 +02:00
|
|
|
_loaderPercentage = document.querySelector("#loader .percentage")
|
|
|
|
|
2015-07-17 10:22:46 +02:00
|
|
|
assets.fonts.forEach(function(name){
|
2018-09-05 18:46:26 +02:00
|
|
|
var font = document.createElement("h1")
|
|
|
|
font.style.fontFamily = name
|
|
|
|
font.appendChild(document.createTextNode("I am a font"))
|
|
|
|
_assetsDiv.appendChild(font)
|
|
|
|
FontDetect.onFontLoaded (name, _this.assetLoaded, _this.errorMsg, {msTimeout: 90000});
|
2015-07-17 10:22:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
assets.img.forEach(function(name){
|
|
|
|
var id = name.substr(0, name.length-4);
|
2018-09-05 18:46:26 +02:00
|
|
|
var image = document.createElement("img")
|
|
|
|
image.addEventListener("load", event=>{
|
2015-07-17 10:22:46 +02:00
|
|
|
_this.assetLoaded();
|
2018-09-05 18:46:26 +02:00
|
|
|
})
|
|
|
|
image.id = name
|
|
|
|
image.src = "/assets/img/" + name
|
|
|
|
_assetsDiv.appendChild(image)
|
|
|
|
assets.image[id] = image
|
2015-07-17 10:22:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
assets.audio.forEach(function(name){
|
|
|
|
var id = name.substr(0, name.length-4);
|
2018-08-29 07:55:16 +02:00
|
|
|
assets.sounds[id] = new Audio();
|
|
|
|
assets.sounds[id].muted = true;
|
|
|
|
assets.sounds[id].playAsset = function(){
|
|
|
|
try{
|
|
|
|
assets.sounds[id].muted = false;
|
|
|
|
assets.sounds[id].play()
|
|
|
|
}catch(e){
|
|
|
|
console.warn(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
assets.sounds[id].onloadeddata = function(){
|
2015-07-17 10:22:46 +02:00
|
|
|
_this.assetLoaded();
|
2015-07-18 04:57:56 +02:00
|
|
|
};
|
2018-08-29 07:55:16 +02:00
|
|
|
assets.sounds[id].src = '/assets/audio/'+name;
|
|
|
|
assets.sounds[id].load();
|
2015-07-17 10:22:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
$.ajax({
|
2018-09-05 18:46:26 +02:00
|
|
|
url: "/api/songs",
|
|
|
|
mimeType: "application/json",
|
|
|
|
success: function(songs){
|
2018-08-26 18:14:56 +02:00
|
|
|
assets.songs = songs;
|
2015-07-17 10:22:46 +02:00
|
|
|
_this.assetLoaded();
|
|
|
|
},
|
2018-09-05 18:46:26 +02:00
|
|
|
error: _this.errorMsg
|
2015-07-17 10:22:46 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-09-05 18:46:26 +02:00
|
|
|
this.errorMsg = function(){
|
|
|
|
if(_errorCount == 0){
|
|
|
|
_loaderPercentage.appendChild(document.createElement("br"))
|
|
|
|
_loaderPercentage.appendChild(document.createTextNode("An error occured, please refresh"))
|
|
|
|
}
|
|
|
|
_errorCount++
|
2015-07-17 10:22:46 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
this.assetLoaded = function(){
|
|
|
|
_loadedAssets++;
|
|
|
|
_percentage=parseInt((_loadedAssets*100)/_nbAssets);
|
|
|
|
$("#loader .progress").css("width", _percentage+"%");
|
2018-09-05 18:46:26 +02:00
|
|
|
_loaderPercentage.firstChild.data=_percentage+"%"
|
2015-07-17 10:22:46 +02:00
|
|
|
_this.checkIfEverythingLoaded();
|
|
|
|
}
|
|
|
|
|
|
|
|
this.checkIfEverythingLoaded = function(){
|
|
|
|
if(_percentage==100){
|
|
|
|
new Titlescreen();
|
|
|
|
//var globalScore={points:1000, great:100, good:60, fail:10, maxCombo:50, hp:90};
|
|
|
|
//new Scoresheet(null, globalScore);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$("#screen").load("/src/views/loader.html", _this.run);
|
|
|
|
|
|
|
|
}
|