mirror of
https://github.com/IllusionMan1212/adventures-of-kuroneko.git
synced 2026-10-24 02:12:36 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
ig.module(
|
||||
'impact.loader'
|
||||
)
|
||||
.requires(
|
||||
'impact.image',
|
||||
'impact.font',
|
||||
'impact.sound'
|
||||
)
|
||||
.defines(function(){ "use strict";
|
||||
|
||||
ig.Loader = ig.Class.extend({
|
||||
resources: [],
|
||||
|
||||
gameClass: null,
|
||||
status: 0,
|
||||
done: false,
|
||||
|
||||
_unloaded: [],
|
||||
_drawStatus: 0,
|
||||
_intervalId: 0,
|
||||
_loadCallbackBound: null,
|
||||
|
||||
|
||||
init: function( gameClass, resources ) {
|
||||
this.gameClass = gameClass;
|
||||
this.resources = resources;
|
||||
this._loadCallbackBound = this._loadCallback.bind(this);
|
||||
|
||||
for( var i = 0; i < this.resources.length; i++ ) {
|
||||
this._unloaded.push( this.resources[i].path );
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
load: function() {
|
||||
ig.system.clear( '#000' );
|
||||
|
||||
if( !this.resources.length ) {
|
||||
this.end();
|
||||
return;
|
||||
}
|
||||
|
||||
for( var i = 0; i < this.resources.length; i++ ) {
|
||||
this.loadResource( this.resources[i] );
|
||||
}
|
||||
this._intervalId = setInterval( this.draw.bind(this), 16 );
|
||||
},
|
||||
|
||||
|
||||
loadResource: function( res ) {
|
||||
res.load( this._loadCallbackBound );
|
||||
},
|
||||
|
||||
|
||||
end: function() {
|
||||
if( this.done ) { return; }
|
||||
|
||||
this.done = true;
|
||||
clearInterval( this._intervalId );
|
||||
ig.system.setGame( this.gameClass );
|
||||
},
|
||||
|
||||
|
||||
draw: function() {
|
||||
this._drawStatus += (this.status - this._drawStatus)/5;
|
||||
var s = ig.system.scale;
|
||||
var w = ig.system.width * 0.6;
|
||||
var h = ig.system.height * 0.1;
|
||||
var x = ig.system.width * 0.5-w/2;
|
||||
var y = ig.system.height * 0.5-h/2;
|
||||
|
||||
ig.system.context.fillStyle = '#000';
|
||||
ig.system.context.fillRect( 0, 0, 480, 320 );
|
||||
|
||||
ig.system.context.fillStyle = '#fff';
|
||||
ig.system.context.fillRect( x*s, y*s, w*s, h*s );
|
||||
|
||||
ig.system.context.fillStyle = '#000';
|
||||
ig.system.context.fillRect( x*s+s, y*s+s, w*s-s-s, h*s-s-s );
|
||||
|
||||
ig.system.context.fillStyle = '#fff';
|
||||
ig.system.context.fillRect( x*s, y*s, w*s*this._drawStatus, h*s );
|
||||
},
|
||||
|
||||
|
||||
_loadCallback: function( path, status ) {
|
||||
if( status ) {
|
||||
this._unloaded.erase( path );
|
||||
}
|
||||
else {
|
||||
throw( 'Failed to load resource: ' + path );
|
||||
}
|
||||
|
||||
this.status = 1 - (this._unloaded.length / this.resources.length);
|
||||
if( this._unloaded.length == 0 ) { // all done?
|
||||
setTimeout( this.end.bind(this), 250 );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user