Improved script loading, added loading progress bar.

This commit is contained in:
Robbie Antenesse 2016-04-14 14:54:56 -06:00
parent 98280fc465
commit 5224f69de2
1 changed files with 38 additions and 4 deletions

View File

@ -10,6 +10,7 @@ Oversimplified.canvas = null;
Oversimplified.context = null; Oversimplified.context = null;
Oversimplified.nextID = 0; Oversimplified.nextID = 0;
Oversimplified.loadingScripts = []; Oversimplified.loadingScripts = [];
Oversimplified.loadedScripts = [];
Oversimplified.emptyImage = new Image(); Oversimplified.emptyImage = new Image();
Oversimplified.emptyImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA="; Oversimplified.emptyImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=";
Oversimplified.emptyImage.width = 1; Oversimplified.emptyImage.width = 1;
@ -18,6 +19,7 @@ Oversimplified.emptyImage.height = 1;
// Settings Namespace // Settings Namespace
Oversimplified.Settings = { Oversimplified.Settings = {
defaultStep : 1/30, defaultStep : 1/30,
numberOfScriptsToLoad : 0,
soundVolume : 0.75, soundVolume : 0.75,
musicVolume : 0.75, musicVolume : 0.75,
preventRightClick : true preventRightClick : true
@ -32,7 +34,7 @@ Oversimplified.timestamp = function() {
Oversimplified.now = null; Oversimplified.now = null;
Oversimplified.dateTime = 0; Oversimplified.dateTime = 0;
Oversimplified.lastFrame = Oversimplified.timestamp(); Oversimplified.lastFrame = Oversimplified.timestamp();
Oversimplified.step = Oversimplified.Settings.defaultStep; //seconds per frame Oversimplified.step = Oversimplified.Settings.defaultStep; //seconds per frame, i.e. one 30th of a second passes each frame.
// Camera Object // Camera Object
Oversimplified.camera = { Oversimplified.camera = {
@ -1585,7 +1587,9 @@ Oversimplified.SetCanvasToCameraSize = function () {
// Defines the order of operations for the Frame. // Defines the order of operations for the Frame.
Oversimplified.Frame = function () { Oversimplified.Frame = function () {
if (Oversimplified.loadingScripts.length == 0) { if ((Oversimplified.Settings.numberOfScriptsToLoad > 0 && Oversimplified.loadedScripts.length == Oversimplified.Settings.numberOfScriptsToLoad) ||
(Oversimplified.Settings.numberOfScriptsToLoad <= 0 &&Oversimplified.loadingScripts.length == 0))
{
Oversimplified.now = Oversimplified.timestamp(); Oversimplified.now = Oversimplified.timestamp();
Oversimplified.dateTime = Oversimplified.dateTime + Math.min(1, (Oversimplified.now - Oversimplified.lastFrame) / 1000); Oversimplified.dateTime = Oversimplified.dateTime + Math.min(1, (Oversimplified.now - Oversimplified.lastFrame) / 1000);
while (Oversimplified.dateTime > Oversimplified.step) { while (Oversimplified.dateTime > Oversimplified.step) {
@ -1596,7 +1600,34 @@ Oversimplified.Frame = function () {
} }
Oversimplified.lastFrame = Oversimplified.now; Oversimplified.lastFrame = Oversimplified.now;
} else { } else {
if (Oversimplified.DEBUG.showMessages) console.log("Loading scripts: " + Oversimplified.loadingScripts.toString()); if (Oversimplified.DEBUG.showMessages) {
var debugMessage = "Loaded " + Oversimplified.loadedScripts.length.toString();
debugMessage += (Oversimplified.Settings.numberOfScriptsToLoad > 0) ? " of " + Oversimplified.Settings.numberOfScriptsToLoad.toString() : "";
debugMessage += " scripts:\n" + Oversimplified.loadedScripts.toString() + ".\nWaiting for:\n" + Oversimplified.loadingScripts.toString();
console.log(debugMessage);
}
if (Oversimplified.Settings.numberOfScriptsToLoad > 0) {
var percentage = Oversimplified.loadedScripts.length / Oversimplified.Settings.numberOfScriptsToLoad;
var barHeight = 32;
var maxBarWidth = Math.round(Oversimplified.camera.width * 0.6);
var barWidth = Math.round(maxBarWidth * percentage);
var barX = Math.round(Oversimplified.camera.width * 0.2);
var barY = Math.round(Oversimplified.camera.height * 0.5) - Math.round(barHeight / 2);
var saveFillStyle = OS.context.fillStyle;
var saveStrokeStyle = OS.context.strokeStyle;
OS.context.fillStyle = "#DD5511";
OS.context.fillRect(barX, barY, barWidth, barHeight);
OS.context.strokeStyle= "#882200";
OS.context.lineWidth=5;
OS.context.strokeRect(barX, barY, maxBarWidth, barHeight);
OS.context.fillStyle = saveFillStyle;
OS.context.strokeStyle = saveStrokeStyle;
}
} }
requestAnimationFrame(Oversimplified.Frame); requestAnimationFrame(Oversimplified.Frame);
@ -1726,6 +1757,7 @@ Oversimplified.AddScript = function (pathToScript, mainFunction) {
} }
} }
Oversimplified.loadedScripts.push(pathToScript);
Oversimplified.loadingScripts.splice(Oversimplified.loadingScripts.indexOf(pathToScript), 1); Oversimplified.loadingScripts.splice(Oversimplified.loadingScripts.indexOf(pathToScript), 1);
}; };
document.body.appendChild(script); document.body.appendChild(script);
@ -1733,7 +1765,9 @@ Oversimplified.AddScript = function (pathToScript, mainFunction) {
// Callback function that prevents any added scripts from executing until all scripts are loaded. // Callback function that prevents any added scripts from executing until all scripts are loaded.
Oversimplified.WaitForScriptsToLoad = function (Function) { Oversimplified.WaitForScriptsToLoad = function (Function) {
if (Oversimplified.loadingScripts.length > 0) { if (Oversimplified.DEBUG.showMessages && Oversimplified.Settings.numberOfScriptsToLoad > 0) console.log("Waiting for " + (Oversimplified.Settings.numberOfScriptsToLoad - Oversimplified.loadedScripts.length).toString() + " scripts to load");
if (Oversimplified.loadingScripts.length > 0)
{
setTimeout(function(){Oversimplified.WaitForScriptsToLoad(Function)}, 0.1); setTimeout(function(){Oversimplified.WaitForScriptsToLoad(Function)}, 0.1);
} else { } else {
Function(); Function();