Improved script loading, added loading progress bar.
This commit is contained in:
		
							parent
							
								
									98280fc465
								
							
						
					
					
						commit
						5224f69de2
					
				
					 1 changed files with 38 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -10,6 +10,7 @@ Oversimplified.canvas = null;
 | 
			
		|||
Oversimplified.context = null;
 | 
			
		||||
Oversimplified.nextID = 0;
 | 
			
		||||
Oversimplified.loadingScripts = [];
 | 
			
		||||
Oversimplified.loadedScripts = [];
 | 
			
		||||
Oversimplified.emptyImage = new Image();
 | 
			
		||||
Oversimplified.emptyImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=";
 | 
			
		||||
Oversimplified.emptyImage.width = 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +19,7 @@ Oversimplified.emptyImage.height = 1;
 | 
			
		|||
// Settings Namespace
 | 
			
		||||
Oversimplified.Settings = {
 | 
			
		||||
    defaultStep : 1/30,
 | 
			
		||||
    numberOfScriptsToLoad : 0,
 | 
			
		||||
    soundVolume : 0.75,
 | 
			
		||||
    musicVolume : 0.75,
 | 
			
		||||
    preventRightClick : true
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +34,7 @@ Oversimplified.timestamp = function() {
 | 
			
		|||
Oversimplified.now = null;
 | 
			
		||||
Oversimplified.dateTime = 0;
 | 
			
		||||
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
 | 
			
		||||
Oversimplified.camera = {
 | 
			
		||||
| 
						 | 
				
			
			@ -1585,7 +1587,9 @@ Oversimplified.SetCanvasToCameraSize = function () {
 | 
			
		|||
 | 
			
		||||
// Defines the order of operations for the Frame.
 | 
			
		||||
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.dateTime = Oversimplified.dateTime + Math.min(1, (Oversimplified.now - Oversimplified.lastFrame) / 1000);
 | 
			
		||||
        while (Oversimplified.dateTime > Oversimplified.step) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1596,7 +1600,34 @@ Oversimplified.Frame = function () {
 | 
			
		|||
        }
 | 
			
		||||
        Oversimplified.lastFrame = Oversimplified.now;
 | 
			
		||||
    } 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);
 | 
			
		||||
| 
						 | 
				
			
			@ -1726,6 +1757,7 @@ Oversimplified.AddScript = function (pathToScript, mainFunction) {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        Oversimplified.loadedScripts.push(pathToScript);
 | 
			
		||||
        Oversimplified.loadingScripts.splice(Oversimplified.loadingScripts.indexOf(pathToScript), 1);
 | 
			
		||||
    };
 | 
			
		||||
    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.
 | 
			
		||||
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);
 | 
			
		||||
    } else {
 | 
			
		||||
        Function();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue