-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.min.js
1 lines (1 loc) · 41.3 KB
/
game.min.js
1
Number.prototype.map=function(a,b,c,d){return c+(d-c)*((this-a)/(b-a))};Number.prototype.limit=function(a,b){return Math.min(b,Math.max(a,this))};Number.prototype.round=function(a){a=Math.pow(10,a||0);return Math.round(this*a)/a};Number.prototype.floor=function(){return Math.floor(this)};Number.prototype.ceil=function(){return Math.ceil(this)};Number.prototype.toInt=function(){return this|0};Number.prototype.toRad=function(){return this/180*Math.PI}; Number.prototype.toDeg=function(){return 180*this/Math.PI};Array.prototype.erase=function(a){for(var b=this.length;b--;)this[b]===a&&this.splice(b,1);return this};Array.prototype.random=function(){return this[Math.floor(Math.random()*this.length)]};Function.prototype.bind=function(a){var b=this;return function(){var c=Array.prototype.slice.call(arguments);return b.apply(a||null,c)}}; (function(a){a.ig={game:null,debug:null,version:"1.19",global:a,modules:{},resources:[],ready:!1,baked:!1,nocache:"",ua:{},lib:"lib/",_current:null,_loadQueue:[],_waitForOnload:0,$:function(a){return"#"==a.charAt(0)?document.getElementById(a.substr(1)):document.getElementsByTagName(a)},$new:function(a){return document.createElement(a)},copy:function(a){if(!a||"object"!=typeof a||a instanceof HTMLElement||a instanceof ig.Class)return a;if(a instanceof Array)for(var b=[],c=0,d=a.length;c<d;c++)b[c]= ig.copy(a[c]);else for(c in b={},a)b[c]=ig.copy(a[c]);return b},merge:function(a,b){for(var c in b){var d=b[c];if("object"!=typeof d||d instanceof HTMLElement||d instanceof ig.Class)a[c]=d;else{if(!a[c]||"object"!=typeof a[c])a[c]=d instanceof Array?[]:{};ig.merge(a[c],d)}}return a},ksort:function(a){if(!a||"object"!=typeof a)return[];var b=[],c=[],d;for(d in a)b.push(d);b.sort();for(d=0;d<b.length;d++)c.push(a[b[d]]);return c},module:function(a){if(ig._current)throw"Module '"+ig._current.name+"' defines nothing"; if(ig.modules[a]&&ig.modules[a].body)throw"Module '"+a+"' is already defined";ig._current={name:a,requires:[],loaded:!1,body:null};ig.modules[a]=ig._current;ig._loadQueue.push(ig._current);return ig},requires:function(){ig._current.requires=Array.prototype.slice.call(arguments);return ig},defines:function(a){name=ig._current.name;ig._current.body=a;ig._current=null;ig._initDOMReady()},addResource:function(a){ig.resources.push(a)},setNocache:function(a){ig.nocache=a?"?"+Date.now():""},log:function(){}, show:function(){},mark:function(){},_loadScript:function(a,b){ig.modules[a]={name:a,requires:[],loaded:!1,body:null};ig._waitForOnload++;var c=ig.lib+a.replace(/\./g,"/")+".js"+ig.nocache,d=ig.$new("script");d.type="text/javascript";d.src=c;d.onload=function(){ig._waitForOnload--;ig._execModules()};d.onerror=function(){throw"Failed to load module "+a+" at "+c+" required from "+b;};ig.$("head")[0].appendChild(d)},_execModules:function(){for(var a=!1,b=0;b<ig._loadQueue.length;b++){for(var c=ig._loadQueue[b], d=!0,g=0;g<c.requires.length;g++){var i=c.requires[g];ig.modules[i]?ig.modules[i].loaded||(d=!1):(d=!1,ig._loadScript(i,c.name))}d&&c.body&&(ig._loadQueue.splice(b,1),c.loaded=!0,c.body(),a=!0,b--)}if(a)ig._execModules();else if(!ig.baked&&0==ig._waitForOnload&&0!=ig._loadQueue.length){a=[];for(b=0;b<ig._loadQueue.length;b++){d=[];i=ig._loadQueue[b].requires;for(g=0;g<i.length;g++)c=ig.modules[i[g]],(!c||!c.loaded)&&d.push(i[g]);a.push(ig._loadQueue[b].name+" (requires: "+d.join(", ")+")")}throw"Unresolved (circular?) dependencies. Most likely there's a name/path mismatch for one of the listed modules:\n"+ a.join("\n");}},_DOMReady:function(){if(!ig.modules["dom.ready"].loaded){if(!document.body)return setTimeout(ig._DOMReady,13);ig.modules["dom.ready"].loaded=!0;ig._waitForOnload--;ig._execModules()}return 0},_boot:function(){document.location.href.match(/\?nocache/)&&ig.setNocache(!0);ig.ua.pixelRatio=a.devicePixelRatio||1;ig.ua.viewport={width:a.innerWidth,height:a.innerHeight};ig.ua.screen={width:a.screen.availWidth*ig.ua.pixelRatio,height:a.screen.availHeight*ig.ua.pixelRatio};ig.ua.iPhone=/iPhone/i.test(navigator.userAgent); ig.ua.iPhone4=ig.ua.iPhone&&2==ig.ua.pixelRatio;ig.ua.iPad=/iPad/i.test(navigator.userAgent);ig.ua.android=/android/i.test(navigator.userAgent);ig.ua.iOS=ig.ua.iPhone||ig.ua.iPad;ig.ua.mobile=ig.ua.iOS||ig.ua.android},_initDOMReady:function(){ig.modules["dom.ready"]?ig._execModules():(ig._boot(),ig.modules["dom.ready"]={requires:[],loaded:!1,body:null},ig._waitForOnload++,"complete"===document.readyState?ig._DOMReady():(document.addEventListener("DOMContentLoaded",ig._DOMReady,!1),a.addEventListener("load", ig._DOMReady,!1)))}};var b=!1,c=/xyz/.test(function(){xyz})?/\bparent\b/:/.*/;a.ig.Class=function(){};var d=function(a){var b=this.prototype,d={},h;for(h in a)"function"==typeof a[h]&&"function"==typeof b[h]&&c.test(a[h])?(d[h]=b[h],b[h]=function(a,b){return function(){var c=this.parent;this.parent=d[a];var e=b.apply(this,arguments);this.parent=c;return e}}(h,a[h])):b[h]=a[h]};a.ig.Class.extend=function(a){function f(){if(!b){if(this.staticInstantiate){var a=this.staticInstantiate.apply(this,arguments); if(a)return a}for(var c in this)"object"==typeof this[c]&&(this[c]=ig.copy(this[c]));this.init&&this.init.apply(this,arguments)}return this}var j=this.prototype;b=!0;var h=new this;b=!1;for(var g in a)h[g]="function"==typeof a[g]&&"function"==typeof j[g]&&c.test(a[g])?function(a,b){return function(){var c=this.parent;this.parent=j[a];var d=b.apply(this,arguments);this.parent=c;return d}}(g,a[g]):a[g];f.prototype=h;f.constructor=f;f.extend=arguments.callee;f.inject=d;return f}})(window);ig.baked=!0; ig.module("impact.image").defines(function(){ig.Image=ig.Class.extend({data:null,width:0,height:0,loaded:!1,failed:!1,loadCallback:null,path:"",staticInstantiate:function(a){return ig.Image.cache[a]||null},init:function(a){this.path=a;this.load()},load:function(a){this.loaded?a&&a(this.path,!0):(!this.loaded&&ig.ready?(this.loadCallback=a||null,this.data=new Image,this.data.onload=this.onload.bind(this),this.data.onerror=this.onerror.bind(this),this.data.src=this.path+ig.nocache):ig.addResource(this), ig.Image.cache[this.path]=this)},reload:function(){this.loaded=!1;this.data=new Image;this.data.onload=this.onload.bind(this);this.data.src=this.path+"?"+Date.now()},onload:function(){this.width=this.data.width;this.height=this.data.height;this.loaded=!0;1!=ig.system.scale&&this.resize(ig.system.scale);this.loadCallback&&this.loadCallback(this.path,!0)},onerror:function(){this.failed=!0;this.loadCallback&&this.loadCallback(this.path,!1)},resize:function(a){var b=this.width*a,c=this.height*a,d=ig.$new("canvas"); d.width=this.width;d.height=this.height;d=d.getContext("2d");d.drawImage(this.data,0,0,this.width,this.height,0,0,this.width,this.height);var d=d.getImageData(0,0,this.width,this.height),e=ig.$new("canvas");e.width=b;e.height=c;for(var f=e.getContext("2d"),j=f.getImageData(0,0,b,c),h=0;h<c;h++)for(var g=0;g<b;g++){var i=4*(Math.floor(h/a)*this.width+Math.floor(g/a)),k=4*(h*b+g);j.data[k]=d.data[i];j.data[k+1]=d.data[i+1];j.data[k+2]=d.data[i+2];j.data[k+3]=d.data[i+3]}f.putImageData(j,0,0);this.data= e},draw:function(a,b,c,d,e,f){if(this.loaded){var j=ig.system.scale,e=(e?e:this.width)*j,f=(f?f:this.height)*j;ig.system.context.drawImage(this.data,c?c*j:0,d?d*j:0,e,f,ig.system.getDrawPos(a),ig.system.getDrawPos(b),e,f);ig.Image.drawCount++}},drawTile:function(a,b,c,d,e,f,j){e=e?e:d;if(this.loaded&&!(d>this.width||e>this.height)){var h=ig.system.scale,g=Math.floor(d*h),i=Math.floor(e*h),k=f?-1:1,m=j?-1:1;if(f||j)ig.system.context.save(),ig.system.context.scale(k,m);ig.system.context.drawImage(this.data, Math.floor(c*d)%this.width*h,Math.floor(c*d/this.width)*e*h,g,i,ig.system.getDrawPos(a)*k-(f?g:0),ig.system.getDrawPos(b)*m-(j?i:0),g,i);(f||j)&&ig.system.context.restore();ig.Image.drawCount++}}});ig.Image.drawCount=0;ig.Image.cache={};ig.Image.reloadCache=function(){for(path in ig.Image.cache)ig.Image.cache[path].reload()}});ig.baked=!0; ig.module("impact.font").requires("impact.image").defines(function(){ig.Font=ig.Image.extend({widthMap:[],indices:[],firstChar:32,height:0,onload:function(a){this._loadMetrics(this.data);this.parent(a)},widthForString:function(a){for(var b=0,c=0;c<a.length;c++)b+=this.widthMap[a.charCodeAt(c)-this.firstChar]+1;return b},draw:function(a,b,c,d){"string"!=typeof a&&(a=a.toString());if(-1!==a.indexOf("\n")){a=a.split("\n");for(f=0;f<a.length;f++)this.draw(a[f],b,c+f*this.height,d)}else{if(d==ig.Font.ALIGN.RIGHT|| d==ig.Font.ALIGN.CENTER){for(var e=0,f=0;f<a.length;f++)var j=a.charCodeAt(f),e=e+(this.widthMap[j-this.firstChar]+1);b-=d==ig.Font.ALIGN.CENTER?e/2:e}for(f=0;f<a.length;f++)j=a.charCodeAt(f),b+=this._drawChar(j-this.firstChar,b,c);ig.Image.drawCount+=a.length}},_drawChar:function(a,b,c){if(!this.loaded||0>a||a>=this.indices.length)return 0;var d=ig.system.scale,e=this.widthMap[a]*d,f=(this.height-2)*d;ig.system.context.drawImage(this.data,this.indices[a]*d,0,e,f,ig.system.getDrawPos(b),ig.system.getDrawPos(c), e,f);return this.widthMap[a]+1},_loadMetrics:function(a){this.height=a.height-1;this.widthMap=[];this.indices=[];var b=ig.$new("canvas");b.width=a.width;b.height=a.height;b=b.getContext("2d");b.drawImage(a,0,0);for(var b=b.getImageData(0,a.height-1,a.width,1),c=0,d=0,e=0;e<a.width;e++){var f=4*e+3;0!=b.data[f]?d++:0==b.data[f]&&d&&(this.widthMap.push(d),this.indices.push(e-d),c++,d=0)}this.widthMap.push(d);this.indices.push(e-d)}});ig.Font.ALIGN={LEFT:0,RIGHT:1,CENTER:2}});ig.baked=!0; ig.module("impact.sound").defines(function(){ig.SoundManager=ig.Class.extend({clips:{},volume:1,format:null,init:function(){for(var a=new Audio,b=0;b<ig.Sound.use.length;b++){var c=ig.Sound.use[b];if(a.canPlayType(c.mime)){this.format=c;break}}this.format||(ig.Sound.enabled=!1)},load:function(a,b,c){var d=a.match(/^(.*)\.[^\.]+$/)[1]+"."+this.format.ext+ig.nocache;if(this.clips[a]){if(b&&this.clips[a].length<ig.Sound.channels)for(b=this.clips[a].length;b<ig.Sound.channels;b++){var e=new Audio(d); e.load();this.clips[a].push(e)}return this.clips[a][0]}var f=new Audio(d);c&&(f.addEventListener("canplaythrough",function(b){this.removeEventListener("canplaythrough",arguments.callee,!1);c(a,!0,b)},!1),f.addEventListener("error",function(b){c(a,!0,b)},!1));f.load();this.clips[a]=[f];if(b)for(b=1;b<ig.Sound.channels;b++)e=new Audio(d),e.load(),this.clips[a].push(e);return f},get:function(a){for(var a=this.clips[a],b=0,c;c=a[b++];)if(c.paused||c.ended)return c.ended&&(c.currentTime=0),c;a[0].pause(); a[0].currentTime=0;return a[0]}});ig.Music=ig.Class.extend({tracks:[],namedTracks:{},currentTrack:null,currentIndex:0,random:!1,_volume:1,_loop:!1,_fadeInterval:0,_fadeTimer:null,_endedCallbackBound:null,init:function(){this._endedCallbackBound=this._endedCallback.bind(this);Object.defineProperty?(Object.defineProperty(this,"volume",{get:this.getVolume.bind(this),set:this.setVolume.bind(this)}),Object.defineProperty(this,"loop",{get:this.getLooping.bind(this),set:this.setLooping.bind(this)})):this.__defineGetter__&& (this.__defineGetter__("volume",this.getVolume.bind(this)),this.__defineSetter__("volume",this.setVolume.bind(this)),this.__defineGetter__("loop",this.getLooping.bind(this)),this.__defineSetter__("loop",this.setLooping.bind(this)))},add:function(a,b){if(ig.Sound.enabled){var c=ig.soundManager.load(a instanceof ig.Sound?a.path:a,!1);c.loop=this._loop;c.volume=this._volume;c.addEventListener("ended",this._endedCallbackBound,!1);this.tracks.push(c);b&&(this.namedTracks[b]=c);this.currentTrack||(this.currentTrack= c)}},next:function(){this.tracks.length&&(this.stop(),this.currentIndex=this.random?Math.floor(Math.random()*this.tracks.length):(this.currentIndex+1)%this.tracks.length,this.currentTrack=this.tracks[this.currentIndex],this.play())},pause:function(){this.currentTrack&&this.currentTrack.pause()},stop:function(){this.currentTrack&&(this.currentTrack.pause(),this.currentTrack.currentTime=0)},play:function(a){if(a&&this.namedTracks[a])a=this.namedTracks[a],a!=this.currentTrack&&(this.stop(),this.currentTrack= a);else if(!this.currentTrack)return;this.currentTrack.play()},getLooping:function(){return this._loop},setLooping:function(a){this._loop=a;for(var b in this.tracks)this.tracks[b].loop=a},getVolume:function(){return this._volume},setVolume:function(a){this._volume=a.limit(0,1);for(var b in this.tracks)this.tracks[b].volume=this._volume},fadeOut:function(a){this.currentTrack&&(clearInterval(this._fadeInterval),this.fadeTimer=new ig.Timer(a),this._fadeInterval=setInterval(this._fadeStep.bind(this), 50))},_fadeStep:function(){var a=this.fadeTimer.delta().map(-this.fadeTimer.target,0,1,0).limit(0,1)*this._volume;0.01>=a?(this.stop(),this.currentTrack.volume=this._volume,clearInterval(this._fadeInterval)):this.currentTrack.volume=a},_endedCallback:function(){this._loop?this.play():this.next()}});ig.Sound=ig.Class.extend({path:"",volume:1,currentClip:null,multiChannel:!0,init:function(a,b){this.path=a;this.multiChannel=!1!==b;this.load()},load:function(a){ig.Sound.enabled?ig.ready?ig.soundManager.load(this.path, this.multiChannel,a):ig.addResource(this):a&&a(this.path,!0)},play:function(){ig.Sound.enabled&&(this.currentClip=ig.soundManager.get(this.path),this.currentClip.volume=ig.soundManager.volume*this.volume,this.currentClip.play())},stop:function(){this.currentClip&&(this.currentClip.pause(),this.currentClip.currentTime=0)}});ig.Sound.FORMAT={MP3:{ext:"mp3",mime:"audio/mpeg"},M4A:{ext:"m4a",mime:"audio/mp4; codecs=mp4a"},OGG:{ext:"ogg",mime:"audio/ogg; codecs=vorbis"},WEBM:{ext:"webm",mime:"audio/webm; codecs=vorbis"}, CAF:{ext:"caf",mime:"audio/x-caf"}};ig.Sound.use=[ig.Sound.FORMAT.OGG,ig.Sound.FORMAT.MP3];ig.Sound.channels=4;ig.Sound.enabled=!0});ig.baked=!0; ig.module("impact.loader").requires("impact.image","impact.font","impact.sound").defines(function(){ig.Loader=ig.Class.extend({resources:[],gameClass:null,status:0,done:!1,_unloaded:[],_drawStatus:0,_intervalId:0,_loadCallbackBound:null,init:function(a,b){this.gameClass=a;this.resources=b;this._loadCallbackBound=this._loadCallback.bind(this);for(var c=0;c<this.resources.length;c++)this._unloaded.push(this.resources[c].path)},load:function(){ig.system.clear("#000");if(this.resources.length){for(var a= 0;a<this.resources.length;a++)this.loadResource(this.resources[a]);this._intervalId=setInterval(this.draw.bind(this),16)}else this.end()},loadResource:function(a){a.load(this._loadCallbackBound)},end:function(){this.done||(this.done=!0,clearInterval(this._intervalId),ig.system.setGame(this.gameClass))},draw:function(){this._drawStatus+=(this.status-this._drawStatus)/5;var a=ig.system.scale,b=0.6*ig.system.width,c=0.1*ig.system.height,d=0.5*ig.system.width-b/2,e=0.5*ig.system.height-c/2;ig.system.context.fillStyle= "#000";ig.system.context.fillRect(0,0,480,320);ig.system.context.fillStyle="#fff";ig.system.context.fillRect(d*a,e*a,b*a,c*a);ig.system.context.fillStyle="#000";ig.system.context.fillRect(d*a+a,e*a+a,b*a-a-a,c*a-a-a);ig.system.context.fillStyle="#fff";ig.system.context.fillRect(d*a,e*a,b*a*this._drawStatus,c*a)},_loadCallback:function(a,b){if(b)this._unloaded.erase(a);else throw"Failed to load resource: "+a;this.status=1-this._unloaded.length/this.resources.length;0==this._unloaded.length&&setTimeout(this.end.bind(this), 250)}})});ig.baked=!0; ig.module("impact.timer").defines(function(){ig.Timer=ig.Class.extend({target:0,base:0,last:0,init:function(a){this.last=this.base=ig.Timer.time;this.target=a||0},set:function(a){this.target=a||0;this.base=ig.Timer.time},reset:function(){this.base=ig.Timer.time},tick:function(){var a=ig.Timer.time-this.last;this.last=ig.Timer.time;return a},delta:function(){return ig.Timer.time-this.base-this.target}});ig.Timer._last=0;ig.Timer.time=0;ig.Timer.timeScale=1;ig.Timer.maxStep=0.05;ig.Timer.step=function(){var a= Date.now();ig.Timer.time+=Math.min((a-ig.Timer._last)/1E3,ig.Timer.maxStep)*ig.Timer.timeScale;ig.Timer._last=a}});ig.baked=!0; ig.module("impact.system").requires("impact.timer","impact.image").defines(function(){ig.System=ig.Class.extend({fps:30,width:320,height:240,realWidth:320,realHeight:240,scale:1,tick:0,intervalId:0,newGameClass:null,running:!1,delegate:null,clock:null,canvas:null,context:null,smoothPositioning:!0,init:function(a,b,c,d,e){this.fps=b;this.clock=new ig.Timer;this.canvas=ig.$(a);this.resize(c,d,e);this.context=this.canvas.getContext("2d")},resize:function(a,b,c){this.width=a;this.height=b;this.scale= c||this.scale;this.realWidth=this.width*this.scale;this.realHeight=this.height*this.scale;this.canvas.width=this.realWidth;this.canvas.height=this.realHeight},setGame:function(a){this.running?this.newGameClass=a:this.setGameNow(a)},setGameNow:function(a){ig.game=new a;ig.system.setDelegate(ig.game)},setDelegate:function(a){if("function"==typeof a.run)this.delegate=a,this.startRunLoop();else throw"System.setDelegate: No run() function in object";},stopRunLoop:function(){clearInterval(this.intervalId); this.running=!1},startRunLoop:function(){this.stopRunLoop();this.intervalId=setInterval(this.run.bind(this),1E3/this.fps);this.running=!0},clear:function(a){this.context.fillStyle=a;this.context.fillRect(0,0,this.realWidth,this.realHeight)},run:function(){ig.Timer.step();this.tick=this.clock.tick();this.delegate.run();ig.input.clearPressed();this.newGameClass&&(this.setGameNow(this.newGameClass),this.newGameClass=null)},getDrawPos:function(a){return this.smoothPositioning?Math.round(a*this.scale): Math.round(a)*this.scale}})});ig.baked=!0; ig.module("impact.input").defines(function(){ig.KEY={MOUSE1:-1,MOUSE2:-3,MWHEEL_UP:-4,MWHEEL_DOWN:-5,BACKSPACE:8,TAB:9,ENTER:13,PAUSE:19,CAPS:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,_0:48,_1:49,_2:50,_3:51,_4:52,_5:53,_6:54,_7:55,_8:56,_9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98, NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,MULTIPLY:106,ADD:107,SUBSTRACT:109,DECIMAL:110,DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,SHIFT:16,CTRL:17,ALT:18,PLUS:187,COMMA:188,MINUS:189,PERIOD:190};ig.Input=ig.Class.extend({bindings:{},actions:{},presses:{},locks:{},delayedKeyup:{},isUsingMouse:!1,isUsingKeyboard:!1,isUsingAccelerometer:!1,mouse:{x:0,y:0},accel:{x:0,y:0,z:0},initMouse:function(){if(!this.isUsingMouse){this.isUsingMouse= !0;var a=this.mousewheel.bind(this);ig.system.canvas.addEventListener("mousewheel",a,!1);ig.system.canvas.addEventListener("DOMMouseScroll",a,!1);ig.system.canvas.addEventListener("contextmenu",this.contextmenu.bind(this),!1);ig.system.canvas.addEventListener("mousedown",this.keydown.bind(this),!1);ig.system.canvas.addEventListener("mouseup",this.keyup.bind(this),!1);ig.system.canvas.addEventListener("mousemove",this.mousemove.bind(this),!1);ig.system.canvas.addEventListener("touchstart",this.keydown.bind(this), !1);ig.system.canvas.addEventListener("touchend",this.keyup.bind(this),!1);ig.system.canvas.addEventListener("touchmove",this.mousemove.bind(this),!1)}},initKeyboard:function(){this.isUsingKeyboard||(this.isUsingKeyboard=!0,window.addEventListener("keydown",this.keydown.bind(this),!1),window.addEventListener("keyup",this.keyup.bind(this),!1))},initAccelerometer:function(){this.isUsingAccelerometer||window.addEventListener("devicemotion",this.devicemotion.bind(this),!1)},mousewheel:function(a){var b= this.bindings[0<(a.wheelDelta?a.wheelDelta:-1*a.detail)?ig.KEY.MWHEEL_UP:ig.KEY.MWHEEL_DOWN];b&&(this.actions[b]=!0,this.presses[b]=!0,this.delayedKeyup[b]=!0,a.stopPropagation(),a.preventDefault())},mousemove:function(a){for(var b=ig.system.canvas,c=0,d=0;null!=b;)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;var b=a.pageX,e=a.pageY;a.touches&&(b=a.touches[0].clientX,e=a.touches[0].clientY);this.mouse.x=(b-c)/ig.system.scale;this.mouse.y=(e-d)/ig.system.scale},contextmenu:function(a){this.bindings[ig.KEY.MOUSE2]&& (a.stopPropagation(),a.preventDefault())},keydown:function(a){if("text"!=a.target.type){var b="keydown"==a.type?a.keyCode:2==a.button?ig.KEY.MOUSE2:ig.KEY.MOUSE1;("touchstart"==a.type||"mousedown"==a.type)&&this.mousemove(a);if(b=this.bindings[b])this.actions[b]=!0,this.locks[b]||(this.presses[b]=!0,this.locks[b]=!0),a.stopPropagation(),a.preventDefault()}},keyup:function(a){if("text"!=a.target.type){var b=this.bindings["keyup"==a.type?a.keyCode:2==a.button?ig.KEY.MOUSE2:ig.KEY.MOUSE1];b&&(this.delayedKeyup[b]= !0,a.stopPropagation(),a.preventDefault())}},devicemotion:function(a){this.accel=a.accelerationIncludingGravity},bind:function(a,b){0>a?this.initMouse():0<a&&this.initKeyboard();this.bindings[a]=b},bindTouch:function(a,b){var c=ig.$(a),d=this;c.addEventListener("touchstart",function(a){d.touchStart(a,b)},!1);c.addEventListener("touchend",function(a){d.touchEnd(a,b)},!1)},unbind:function(a){this.delayedKeyup[this.bindings[a]]=!0;this.bindings[a]=null},unbindAll:function(){this.bindings={};this.actions= {};this.presses={};this.locks={};this.delayedKeyup={}},state:function(a){return this.actions[a]},pressed:function(a){return this.presses[a]},released:function(a){return this.delayedKeyup[a]},clearPressed:function(){for(var a in this.delayedKeyup)this.actions[a]=!1,this.locks[a]=!1;this.delayedKeyup={};this.presses={}},touchStart:function(a,b){this.actions[b]=!0;this.presses[b]=!0;a.stopPropagation();a.preventDefault();return!1},touchEnd:function(a,b){this.delayedKeyup[b]=!0;a.stopPropagation();a.preventDefault(); return!1}})});ig.baked=!0;ig.module("impact.impact").requires("dom.ready","impact.loader","impact.system","impact.input","impact.sound").defines(function(){ig.main=function(a,b,c,d,e,f,j){ig.system=new ig.System(a,c,d,e,f||1);ig.input=new ig.Input;ig.soundManager=new ig.SoundManager;ig.music=new ig.Music;ig.ready=!0;(new (j||ig.Loader)(b,ig.resources)).load()}});ig.baked=!0; ig.module("impact.animation").requires("impact.timer","impact.image").defines(function(){ig.AnimationSheet=ig.Class.extend({width:8,height:8,image:null,init:function(a,b,c){this.width=b;this.height=c;this.image=new ig.Image(a)}});ig.Animation=ig.Class.extend({sheet:null,timer:null,sequence:[],flip:{x:!1,y:!1},pivot:{x:0,y:0},frame:0,tile:0,loopCount:0,alpha:1,angle:0,init:function(a,b,c,d){this.sheet=a;this.pivot={x:a.width/2,y:a.height/2};this.timer=new ig.Timer;this.frameTime=b;this.sequence=c; this.stop=!!d;this.tile=this.sequence[0]},rewind:function(){this.timer.reset();this.loopCount=0;this.tile=this.sequence[0];return this},gotoFrame:function(a){this.timer.set(this.frameTime*-a);this.update()},gotoRandomFrame:function(){this.gotoFrame(Math.floor(Math.random()*this.sequence.length))},update:function(){var a=Math.floor(this.timer.delta()/this.frameTime);this.loopCount=Math.floor(a/this.sequence.length);this.frame=this.stop&&0<this.loopCount?this.sequence.length-1:a%this.sequence.length; this.tile=this.sequence[this.frame]},draw:function(a,b){var c=Math.max(this.sheet.width,this.sheet.height);a>ig.system.width||b>ig.system.height||0>a+c||0>b+c||(1!=this.alpha&&(ig.system.context.globalAlpha=this.alpha),0==this.angle?this.sheet.image.drawTile(a,b,this.tile,this.sheet.width,this.sheet.height,this.flip.x,this.flip.y):(ig.system.context.save(),ig.system.context.translate(ig.system.getDrawPos(a+this.pivot.x),ig.system.getDrawPos(b+this.pivot.y)),ig.system.context.rotate(this.angle),this.sheet.image.drawTile(-this.pivot.x, -this.pivot.y,this.tile,this.sheet.width,this.sheet.height,this.flip.x,this.flip.y),ig.system.context.restore()),1!=this.alpha&&(ig.system.context.globalAlpha=1))}})});ig.baked=!0; ig.module("impact.entity").requires("impact.animation","impact.impact").defines(function(){ig.Entity=ig.Class.extend({id:0,settings:{},size:{x:16,y:16},offset:{x:0,y:0},pos:{x:0,y:0},last:{x:0,y:0},vel:{x:0,y:0},accel:{x:0,y:0},friction:{x:0,y:0},maxVel:{x:100,y:100},zIndex:0,gravityFactor:1,standing:!1,bounciness:0,minBounceVelocity:40,anims:{},animSheet:null,currentAnim:null,health:10,type:0,checkAgainst:0,collides:0,_killed:!1,slopeStanding:{min:(44).toRad(),max:(136).toRad()},init:function(a, b,c){this.id=++ig.Entity._lastId;this.pos.x=a;this.pos.y=b;ig.merge(this,c)},addAnim:function(a,b,c,d){if(!this.animSheet)throw"No animSheet to add the animation "+a+" to.";b=new ig.Animation(this.animSheet,b,c,d);this.anims[a]=b;this.currentAnim||(this.currentAnim=b);return b},update:function(){this.last.x=this.pos.x;this.last.y=this.pos.y;this.vel.y+=ig.game.gravity*ig.system.tick*this.gravityFactor;this.vel.x=this.getNewVelocity(this.vel.x,this.accel.x,this.friction.x,this.maxVel.x);this.vel.y= this.getNewVelocity(this.vel.y,this.accel.y,this.friction.y,this.maxVel.y);this.handleMovementTrace(ig.game.collisionMap.trace(this.pos.x,this.pos.y,this.vel.x*ig.system.tick,this.vel.y*ig.system.tick,this.size.x,this.size.y));this.currentAnim&&this.currentAnim.update()},getNewVelocity:function(a,b,c,d){if(b)return(a+b*ig.system.tick).limit(-d,d);return c?(b=c*ig.system.tick,0<a-b?a-b:0>a+b?a+b:0):a.limit(-d,d)},handleMovementTrace:function(a){this.standing=!1;a.collision.y&&(0<this.bounciness&&Math.abs(this.vel.y)> this.minBounceVelocity?this.vel.y*=-this.bounciness:(0<this.vel.y&&(this.standing=!0),this.vel.y=0));a.collision.x&&(this.vel.x=0<this.bounciness&&Math.abs(this.vel.x)>this.minBounceVelocity?this.vel.x*-this.bounciness:0);if(a.collision.slope){var b=a.collision.slope;if(0<this.bounciness){var c=this.vel.x*b.nx+this.vel.y*b.ny;this.vel.x=(this.vel.x-2*b.nx*c)*this.bounciness;this.vel.y=(this.vel.y-2*b.ny*c)*this.bounciness}else c=(this.vel.x*b.x+this.vel.y*b.y)/(b.x*b.x+b.y*b.y),this.vel.x=b.x*c,this.vel.y= b.y*c,b=Math.atan2(b.x,b.y),b>this.slopeStanding.min&&b<this.slopeStanding.max&&(this.standing=!0)}this.pos=a.pos},draw:function(){this.currentAnim&&this.currentAnim.draw(this.pos.x-this.offset.x-ig.game._rscreen.x,this.pos.y-this.offset.y-ig.game._rscreen.y)},kill:function(){ig.game.removeEntity(this)},receiveDamage:function(a){this.health-=a;0>=this.health&&this.kill()},touches:function(a){return!(this.pos.x>=a.pos.x+a.size.x||this.pos.x+this.size.x<=a.pos.x||this.pos.y>=a.pos.y+a.size.y||this.pos.y+ this.size.y<=a.pos.y)},distanceTo:function(a){var b=this.pos.x+this.size.x/2-(a.pos.x+a.size.x/2),a=this.pos.y+this.size.y/2-(a.pos.y+a.size.y/2);return Math.sqrt(b*b+a*a)},angleTo:function(a){return Math.atan2(a.pos.y+a.size.y/2-(this.pos.y+this.size.y/2),a.pos.x+a.size.x/2-(this.pos.x+this.size.x/2))},check:function(){},collideWith:function(){},ready:function(){}});ig.Entity._lastId=0;ig.Entity.COLLIDES={NEVER:0,LITE:1,PASSIVE:2,ACTIVE:4,FIXED:8};ig.Entity.TYPE={NONE:0,A:1,B:2,BOTH:3};ig.Entity.checkPair= function(a,b){a.checkAgainst&b.type&&a.check(b);b.checkAgainst&a.type&&b.check(a);a.collides&&b.collides&&a.collides+b.collides>ig.Entity.COLLIDES.ACTIVE&&ig.Entity.solveCollision(a,b)};ig.Entity.solveCollision=function(a,b){var c=null;if(a.collides==ig.Entity.COLLIDES.LITE||b.collides==ig.Entity.COLLIDES.FIXED)c=a;else if(b.collides==ig.Entity.COLLIDES.LITE||a.collides==ig.Entity.COLLIDES.FIXED)c=b;a.last.x+a.size.x>b.last.x&&a.last.x<b.last.x+b.size.x?(a.last.y<b.last.y?ig.Entity.seperateOnYAxis(a, b,c):ig.Entity.seperateOnYAxis(b,a,c),a.collideWith(b,"y"),b.collideWith(a,"y")):a.last.y+a.size.y>b.last.y&&a.last.y<b.last.y+b.size.y&&(a.last.x<b.last.x?ig.Entity.seperateOnXAxis(a,b,c):ig.Entity.seperateOnXAxis(b,a,c),a.collideWith(b,"x"),b.collideWith(a,"x"))};ig.Entity.seperateOnXAxis=function(a,b,c){var d=a.pos.x+a.size.x-b.pos.x;c?(c.vel.x=-c.vel.x*c.bounciness+(a===c?b:a).vel.x,b=ig.game.collisionMap.trace(c.pos.x,c.pos.y,c==a?-d:d,0,c.size.x,c.size.y),c.pos.x=b.pos.x):(c=(a.vel.x-b.vel.x)/ 2,a.vel.x=-c,b.vel.x=c,c=ig.game.collisionMap.trace(a.pos.x,a.pos.y,-d/2,0,a.size.x,a.size.y),a.pos.x=Math.floor(c.pos.x),a=ig.game.collisionMap.trace(b.pos.x,b.pos.y,d/2,0,b.size.x,b.size.y),b.pos.x=Math.ceil(a.pos.x))};ig.Entity.seperateOnYAxis=function(a,b,c){var d=a.pos.y+a.size.y-b.pos.y;if(c){b=a===c?b:a;c.vel.y=-c.vel.y*c.bounciness+b.vel.y;var e=0;c==a&&Math.abs(c.vel.y-b.vel.y)<c.minBounceVelocity&&(c.standing=!0,e=b.vel.x*ig.system.tick);a=ig.game.collisionMap.trace(c.pos.x,c.pos.y,e,c== a?-d:d,c.size.x,c.size.y);c.pos.y=a.pos.y;c.pos.x=a.pos.x}else ig.game.gravity&&(b.standing||0<a.vel.y)?(c=ig.game.collisionMap.trace(a.pos.x,a.pos.y,0,-(a.pos.y+a.size.y-b.pos.y),a.size.x,a.size.y),a.pos.y=c.pos.y,0<a.bounciness&&a.vel.y>a.minBounceVelocity?a.vel.y*=-a.bounciness:(a.standing=!0,a.vel.y=0)):(c=(a.vel.y-b.vel.y)/2,a.vel.y=-c,b.vel.y=c,e=b.vel.x*ig.system.tick,c=ig.game.collisionMap.trace(a.pos.x,a.pos.y,e,-d/2,a.size.x,a.size.y),a.pos.y=c.pos.y,a=ig.game.collisionMap.trace(b.pos.x, b.pos.y,0,d/2,b.size.x,b.size.y),b.pos.y=a.pos.y)}});ig.baked=!0; ig.module("impact.map").defines(function(){ig.Map=ig.Class.extend({tilesize:8,width:1,height:1,data:[[]],init:function(a,b){this.tilesize=a;this.data=b;this.height=b.length;this.width=b[0].length},getTile:function(a,b){var c=Math.floor(a/this.tilesize),d=Math.floor(b/this.tilesize);return 0<=c&&c<this.width&&0<=d&&d<this.height?this.data[d][c]:0},setTile:function(a,b,c){a=Math.floor(a/this.tilesize);b=Math.floor(b/this.tilesize);0<=a&&a<this.width&&0<=b&&b<this.height&&(this.data[b][a]=c)}})}); ig.baked=!0; ig.module("impact.collision-map").requires("impact.map").defines(function(){ig.CollisionMap=ig.Map.extend({init:function(a,b,e){this.parent(a,b);this.tiledef=e||ig.CollisionMap.defaultTileDef},trace:function(a,b,e,f,j,h){var g={collision:{x:!1,y:!1,slope:!1},pos:{x:a,y:b},tile:{x:0,y:0}},i=Math.ceil(Math.max(Math.abs(e),Math.abs(f))/this.tilesize);if(1<i)for(var k=e/i,m=f/i,l=0;l<i&&(k||m)&&!(this._traceStep(g,a,b,k,m,j,h,e,f,l),a=g.pos.x,b=g.pos.y,g.collision.x&&(e=k=0),g.collision.y&&(f=m=0),g.collision.slope);l++); else this._traceStep(g,a,b,e,f,j,h,e,f,0);return g},_traceStep:function(a,b,e,f,j,h,g,i,k,m){a.pos.x+=f;a.pos.y+=j;var l=0;if(f){var n=0<f?h:0,p=0>f?this.tilesize:0,l=Math.max(Math.floor(e/this.tilesize),0),q=Math.min(Math.ceil((e+g)/this.tilesize),this.height),f=Math.floor((a.pos.x+n)/this.tilesize),r=Math.floor((b+n)/this.tilesize);if(0<m||f==r||0>r||r>=this.width)r=-1;if(0<=f&&f<this.width)for(var o=l;o<q&&!(-1!=r&&(l=this.data[o][r],1<l&&this._checkTileDef(a,l,b,e,i,k,h,g,r,o)));o++){l=this.data[o][f]; if(1==l||1<l&&this._checkTileDef(a,l,b,e,i,k,h,g,f,o)){if(1<l&&a.collision.slope)break;a.collision.x=!0;a.tile.x=l;a.pos.x=f*this.tilesize-n+p;break}}}if(j){n=0<j?g:0;j=0>j?this.tilesize:0;l=Math.max(Math.floor(a.pos.x/this.tilesize),0);p=Math.min(Math.ceil((a.pos.x+h)/this.tilesize),this.width);o=Math.floor((a.pos.y+n)/this.tilesize);q=Math.floor((e+n)/this.tilesize);if(0<m||o==q||0>q||q>=this.height)q=-1;if(0<=o&&o<this.height)for(f=l;f<p&&!(-1!=q&&(l=this.data[q][f],1<l&&this._checkTileDef(a,l, b,e,i,k,h,g,f,q)));f++){l=this.data[o][f];if(1==l||1<l&&this._checkTileDef(a,l,b,e,i,k,h,g,f,o)){if(1<l&&a.collision.slope)break;a.collision.y=!0;a.tile.y=l;a.pos.y=o*this.tilesize-n+j;break}}}},_checkTileDef:function(a,b,e,f,j,h,g,i,k,m){var l=this.tiledef[b];if(!l)return!1;var b=(l[2]-l[0])*this.tilesize,n=(l[3]-l[1])*this.tilesize,p=l[4],g=e+j+(0>n?g:0)-(k+l[0])*this.tilesize,k=f+h+(0<b?i:0)-(m+l[1])*this.tilesize;if(0<b*k-n*g){if(0>j*-n+h*b)return p;m=Math.sqrt(b*b+n*n);i=n/m;m=-b/m;p=g*i+k*m; g=i*p;p*=m;if(g*g+p*p>=j*j+h*h)return!0;a.pos.x=e+j-g;a.pos.y=f+h-p;a.collision.slope={x:b,y:n,nx:i,ny:m};return!0}return!1}});var a=1/3,b=2/3;ig.CollisionMap.defaultTileDef={5:[0,1,1,b,!0],6:[0,b,1,a,!0],7:[0,a,1,0,!0],3:[0,1,1,0.5,!0],4:[0,0.5,1,0,!0],2:[0,1,1,0,!0],10:[0.5,1,1,0,!0],21:[0,1,0.5,0,!0],32:[b,1,1,0,!0],43:[a,1,b,0,!0],54:[0,1,a,0,!0],27:[0,0,1,a,!0],28:[0,a,1,b,!0],29:[0,b,1,1,!0],25:[0,0,1,0.5,!0],26:[0,0.5,1,1,!0],24:[0,0,1,1,!0],11:[0,0,0.5,1,!0],22:[0.5,0,1,1,!0],33:[0,0,a,1, !0],44:[a,0,b,1,!0],55:[b,0,1,1,!0],16:[1,a,0,0,!0],17:[1,b,0,a,!0],18:[1,1,0,b,!0],14:[1,0.5,0,0,!0],15:[1,1,0,0.5,!0],13:[1,1,0,0,!0],8:[0.5,1,0,0,!0],19:[1,1,0.5,0,!0],30:[a,1,0,0,!0],41:[b,1,a,0,!0],52:[1,1,b,0,!0],38:[1,b,0,1,!0],39:[1,a,0,b,!0],40:[1,0,0,a,!0],36:[1,0.5,0,1,!0],37:[1,0,0,0.5,!0],35:[1,0,0,1,!0],9:[1,0,0.5,1,!0],20:[0.5,0,0,1,!0],31:[1,0,b,1,!0],42:[b,0,a,1,!0],53:[a,0,0,1,!0],12:[0,0,1,0,!1],23:[1,1,0,1,!1],34:[1,0,1,1,!1],45:[0,1,0,0,!1]};ig.CollisionMap.staticNoCollision= {trace:function(a,b,e,f){return{collision:{x:!1,y:!1,slope:!1},pos:{x:a+e,y:b+f},tile:{x:0,y:0}}}}});ig.baked=!0; ig.module("impact.background-map").requires("impact.map","impact.image").defines(function(){ig.BackgroundMap=ig.Map.extend({tiles:null,scroll:{x:0,y:0},distance:1,repeat:!1,tilesetName:"",foreground:!1,enabled:!0,preRender:!1,preRenderedChunks:null,chunkSize:512,debugChunks:!1,anims:{},init:function(a,b,c){this.parent(a,b);this.setTileset(c)},setTileset:function(a){this.tilesetName=a instanceof ig.Image?a.path:a;this.tiles=new ig.Image(this.tilesetName);this.preRenderedChunks=null},setScreenPos:function(a, b){this.scroll.x=a/this.distance;this.scroll.y=b/this.distance},preRenderMapToChunks:function(){var a=this.width*this.tilesize*ig.system.scale,b=this.height*this.tilesize*ig.system.scale,c=Math.ceil(a/this.chunkSize),d=Math.ceil(b/this.chunkSize);this.preRenderedChunks=[];for(var e=0;e<d;e++){this.preRenderedChunks[e]=[];for(var f=0;f<c;f++)this.preRenderedChunks[e][f]=this.preRenderChunk(f,e,f==c-1?a-f*this.chunkSize:this.chunkSize,e==d-1?b-e*this.chunkSize:this.chunkSize)}},preRenderChunk:function(a, b,c,d){var e=c/this.tilesize/ig.system.scale+1,f=d/this.tilesize/ig.system.scale+1,j=a*this.chunkSize/ig.system.scale%this.tilesize,h=b*this.chunkSize/ig.system.scale%this.tilesize,a=Math.floor(a*this.chunkSize/this.tilesize/ig.system.scale),b=Math.floor(b*this.chunkSize/this.tilesize/ig.system.scale),g=ig.$new("canvas");g.width=c;g.height=d;c=ig.system.context;ig.system.context=g.getContext("2d");for(d=0;d<e;d++)for(var i=0;i<f;i++)if(d+a<this.width&&i+b<this.height){var k=this.data[i+b][d+a];k&& this.tiles.drawTile(d*this.tilesize-j,i*this.tilesize-h,k-1,this.tilesize)}ig.system.context=c;return g},draw:function(){this.tiles.loaded&&this.enabled&&(this.preRender?this.drawPreRendered():this.drawTiled())},drawPreRendered:function(){this.preRenderedChunks||this.preRenderMapToChunks();var a=ig.system.getDrawPos(this.scroll.x),b=ig.system.getDrawPos(this.scroll.y);this.repeat&&(a%=this.width*this.tilesize*ig.system.scale,b%=this.height*this.tilesize*ig.system.scale);var c=Math.max(Math.floor(a/ this.chunkSize),0),d=Math.max(Math.floor(b/this.chunkSize),0),e=Math.ceil((a+ig.system.realWidth)/this.chunkSize),f=Math.ceil((b+ig.system.realHeight)/this.chunkSize),j=this.preRenderedChunks[0].length,h=this.preRenderedChunks.length;this.repeat||(e=Math.min(e,j),f=Math.min(f,h));for(var g=0;d<f;d++){for(var i=0,k=c;k<e;k++){var m=this.preRenderedChunks[d%h][k%j],l=-a+k*this.chunkSize-i,n=-b+d*this.chunkSize-g;ig.system.context.drawImage(m,l,n);ig.Image.drawCount++;this.debugChunks&&(ig.system.context.strokeStyle= "#f0f",ig.system.context.strokeRect(l,n,this.chunkSize,this.chunkSize));this.repeat&&m.width<this.chunkSize&&l+m.width<ig.system.realWidth&&(i=this.chunkSize-m.width,e++)}this.repeat&&m.height<this.chunkSize&&n+m.height<ig.system.realHeight&&(g=this.chunkSize-m.height,f++)}},drawTiled:function(){for(var a=0,b=null,c=(this.scroll.x/this.tilesize).toInt(),d=(this.scroll.y/this.tilesize).toInt(),e=this.scroll.x%this.tilesize,f=this.scroll.y%this.tilesize,j=-e-this.tilesize,e=ig.system.width+this.tilesize- e,h=ig.system.height+this.tilesize-f,g=-1,f=-f-this.tilesize;f<h;g++,f+=this.tilesize){var i=g+d;if(i>=this.height||0>i){if(!this.repeat)continue;i=0<i?i%this.height:(i+1)%this.height+this.height-1}for(var k=-1,m=j;m<e;k++,m+=this.tilesize){a=k+c;if(a>=this.width||0>a){if(!this.repeat)continue;a=0<a?a%this.width:(a+1)%this.width+this.width-1}if(a=this.data[i][a])(b=this.anims[a-1])?b.draw(m,f):this.tiles.drawTile(m,f,a-1,this.tilesize)}}}})});ig.baked=!0; ig.module("impact.game").requires("impact.impact","impact.entity","impact.collision-map","impact.background-map").defines(function(){ig.Game=ig.Class.extend({clearColor:"#000000",gravity:0,screen:{x:0,y:0},_rscreen:{x:0,y:0},entities:[],namedEntities:{},collisionMap:ig.CollisionMap.staticNoCollision,backgroundMaps:[],backgroundAnims:{},autoSort:!1,sortBy:null,cellSize:64,_deferredKill:[],_levelToLoad:null,_doSortEntities:!1,staticInstantiate:function(){this.sortBy=this.sortBy||ig.Game.SORT.Z_INDEX; ig.game=this;return null},loadLevel:function(a){this.screen={x:0,y:0};this.entities=[];this.namedEntities={};for(var b=0;b<a.entities.length;b++){var c=a.entities[b];this.spawnEntity(c.type,c.x,c.y,c.settings)}this.sortEntities();this.collisionMap=ig.CollisionMap.staticNoCollision;this.backgroundMaps=[];for(b=0;b<a.layer.length;b++)if(c=a.layer[b],"collision"==c.name)this.collisionMap=new ig.CollisionMap(c.tilesize,c.data);else{var d=new ig.BackgroundMap(c.tilesize,c.data,c.tilesetName);d.anims=this.backgroundAnims[c.tilesetName]|| {};d.repeat=c.repeat;d.distance=c.distance;d.foreground=!!c.foreground;d.preRender=!!c.preRender;this.backgroundMaps.push(d)}for(b=0;b<this.entities.length;b++)this.entities[b].ready()},loadLevelDeferred:function(a){this._levelToLoad=a},getEntityByName:function(a){return this.namedEntities[a]},getEntitiesByType:function(a){for(var a="string"===typeof a?ig.global[a]:a,b=[],c=0;c<this.entities.length;c++){var d=this.entities[c];d instanceof a&&!d._killed&&b.push(d)}return b},spawnEntity:function(a, b,c,d){var e="string"===typeof a?ig.global[a]:a;if(!e)throw"Can't spawn entity of type "+a;a=new e(b,c,d||{});this.entities.push(a);a.name&&(this.namedEntities[a.name]=a);return a},sortEntities:function(){this.entities.sort(this.sortBy)},sortEntitiesDeferred:function(){this._doSortEntities=!0},removeEntity:function(a){a.name&&delete this.namedEntities[a.name];a._killed=!0;a.checkAgainst=ig.Entity.TYPE.NONE;a.collides=ig.Entity.COLLIDES.NEVER;this._deferredKill.push(a)},run:function(){this.update(); this.draw()},update:function(){this._levelToLoad&&(this.loadLevel(this._levelToLoad),this._levelToLoad=null);if(this._doSortEntities||this.autoSort)this.sortEntities(),this._doSortEntities=!1;this.updateEntities();this.checkEntities();for(var a=0;a<this._deferredKill.length;a++)this.entities.erase(this._deferredKill[a]);this._deferredKill=[];for(var b in this.backgroundAnims){var a=this.backgroundAnims[b],c;for(c in a)a[c].update()}},updateEntities:function(){for(var a=0;a<this.entities.length;a++){var b= this.entities[a];b._killed||b.update()}},draw:function(){this.clearColor&&ig.system.clear(this.clearColor);this._rscreen.x=Math.round(this.screen.x*ig.system.scale)/ig.system.scale;this._rscreen.y=Math.round(this.screen.y*ig.system.scale)/ig.system.scale;var a;for(a=0;a<this.backgroundMaps.length;a++){var b=this.backgroundMaps[a];if(b.foreground)break;b.setScreenPos(this.screen.x,this.screen.y);b.draw()}this.drawEntities();for(a;a<this.backgroundMaps.length;a++)b=this.backgroundMaps[a],b.setScreenPos(this.screen.x, this.screen.y),b.draw()},drawEntities:function(){for(var a=0;a<this.entities.length;a++)this.entities[a].draw()},checkEntities:function(){for(var a={},b=0;b<this.entities.length;b++){var c=this.entities[b];if(!(c.type==ig.Entity.TYPE.NONE&&c.checkAgainst==ig.Entity.TYPE.NONE&&c.collides==ig.Entity.COLLIDES.NEVER))for(var d={},e=Math.floor(c.pos.y/this.cellSize),f=Math.floor((c.pos.x+c.size.x)/this.cellSize)+1,j=Math.floor((c.pos.y+c.size.y)/this.cellSize)+1,h=Math.floor(c.pos.x/this.cellSize);h<f;h++)for(var g= e;g<j;g++)if(a[h])if(a[h][g]){for(var i=a[h][g],k=0;k<i.length;k++)c.touches(i[k])&&!d[i[k].id]&&(d[i[k].id]=!0,ig.Entity.checkPair(c,i[k]));i.push(c)}else a[h][g]=[c];else a[h]={},a[h][g]=[c]}}});ig.Game.SORT={Z_INDEX:function(a,b){return a.zIndex-b.zIndex},POS_X:function(a,b){return a.pos.x-b.pos.x},POS_Y:function(a,b){return a.pos.y-b.pos.y}}});ig.baked=!0; ig.module("plugins.menu").defines(function(){Menu=ig.Class.extend({width:100,height:10,font:null,items:[],pos:{},init:function(a,b){this.font=a;this.pos=b},add:function(a){a.menu=this;this.items.push(a)},draw:function(){for(var a=ig.input.mouse,b=this.pos.x,c=this.pos.y,d=0;d<this.items.length;d++){var e=this.items[d];e.draw(this.pos.x,c,b<a.x&&b+this.width>a.x&&c<a.y&&c+e.height>a.y);c+=e.height}},click:function(){for(var a=ig.input.mouse,b=this.pos.x,c=this.pos.y,d=0;d<this.items.length;d++){var e= this.items[d];if(b<a.x&&b+this.width>a.x&&c<a.y&&c+e.height>a.y)return e.callback(),!0;c+=e.height}return!1}});TextMenuItem=ig.Class.extend({label:"",callback:null,height:10,menu:null,init:function(a,b){this.label=a;this.callback=b},draw:function(a,b,c){var d=this.label;c&&(d="<< "+d+" >>");a+=this.menu.width/2;this.menu.font.draw(d,a,b,ig.Font.ALIGN.CENTER)}});ImageMenuItem=ig.Class.extend({image:null,tile:0,callback:null,height:25,menu:null,init:function(a,b,c){this.image=a;this.tile=b;this.callback= c},draw:function(a,b,c){var d=this.tile;c&&(d+=1);this.image.drawTile(a,b,d,this.menu.width,this.height)}})});ig.baked=!0; ig.module("game.main").requires("impact.game","impact.font","plugins.menu").defines(function(){MyGame=ig.Game.extend({font:new ig.Font("media/04b03.font.png"),init:function(){ig.input.initMouse();ig.input.bind(ig.KEY.MOUSE1,"mouse1");var a=this;this.menu1=new Menu(new ig.Font("media/04b03.font.png"),{x:10,y:10});this.menu1.add(new TextMenuItem("Item 1",function(){ig.log("Clicked item 1")}));this.menu1.add(new TextMenuItem("Close menu",function(){ig.log("Closed menu 1");a.menu1=null}));this.menu2= new Menu(new ig.Font("media/04b03.font.png"),{x:200,y:10});var b=new ig.Image("media/menu.png");this.menu2.add(new ImageMenuItem(b,0,function(){ig.log("Clicked item 1")}));this.menu2.add(new ImageMenuItem(b,2,function(){ig.log("Closed menu 1");a.menu2=null}))},update:function(){this.parent();ig.input.pressed("mouse1")&&(null!==this.menu1&&this.menu1.click(),null!==this.menu2&&this.menu2.click())},draw:function(){this.parent();null!==this.menu1&&this.menu1.draw();null!==this.menu2&&this.menu2.draw(); this.font.draw("It Works!",ig.system.width/2,ig.system.height/2,ig.Font.ALIGN.CENTER)}});ig.main("#canvas",MyGame,60,320,240,2)});