/*! * Canvas Engine JavaScript Library 1.3.2 * http:/canvasengine.net * * Copyright 2012, WebCreative5, Samuel Ronce * Licensed under the MIT. * * Date: September 14, 2012 * Update : Mon Dec 30 12:00:44 2013 */ var fs;if(typeof(require)!=="undefined"){fs=require("fs")}function Kernel(b,a){this.class_method=b;this.class_name=a}Kernel._extend=function(a,b,g){var f;if(!(b instanceof Array)){b=[b]}for(var e=0;ed;b--){f[b]=f[b-1]}}f[d]=a}return f};CanvasEngine.toTimer=function(e){var a=""+Math.floor(e/60/60),b=""+Math.floor(e/60%60),d=""+Math.floor(e%60);if(a.length==1){a="0"+a}if(b.length==1){b="0"+b}if(d.length==1){d="0"+d}return{hour:a,min:b,sec:d}};CanvasEngine.algo={pascalTriangle:function(a){a=a||10;var f=[[1,1],[1,2,1]],b=a-f.length;for(var e=f.length;e<=b;e++){f[e]=[1];for(var d=1;d<=e;d++){f[e][d]=f[e-1][d]+f[e-1][d-1]}f[e][e+1]=1}return f},};CanvasEngine.toMatrix=function(h,g,a){var d=[],b=0;for(var e=0;e=0;d--){f[b]=a[d];b++}return f}if(e=="180"){for(var d=0;d0){data[g+3]=255}}e.putImageData(imageData,0,0);return f},getExtension:function(e){return(/[.]/.exec(e))?/[^.]+$/.exec(e)[0]:undefined},getBasePath:function(g,e){var f=g.substring(0,g.lastIndexOf("/"));return f!=""&&e?f+"/":f},getFilename:function(g,e){var f=g.replace(/^.*[\\\/]/,"");if(!e){f=f.split(".")}else{return f}return f.slice(0,f.length-1).join(".")},Transition:{_data:{},set:function(n,l){var m,h,e=[];if(this._data[n]){return this._data[n]}if(!(n instanceof Array)){var k=b.Materials.imageToCanvas(n,{width:1024,height:768});if(typeof Uint8ClampedArray!="undefined"){e=new Uint8ClampedArray(k.canvas.width*k.canvas.height)}m=k.ctx.getImageData(0,0,k.canvas.width,k.canvas.height);h=m.data;var f=0;for(var g=0;g=g.to){g.c_volume=g.to;f=true}else{g.c_volume+=(Math.abs(g.to-g.init)/g.f_time)}if(g.c_volume>0.999){g.c_volume=1}}else{if(g.c_volume<=g.to){g.c_volume=g.to;f=true}else{g.c_volume-=(Math.abs(g.to-g.init)/g.f_time)}if(g.c_volume<0.001){g.c_volume=0}}if(this._manager){g.sound.setVolume(g.c_volume*100)}else{g.sound.volume=g.c_volume}if(f){if(g.callback){g.callback.call(g.sound)}delete this._fade[e];break}}}}},Canvas:{"new":function(e){return Class["new"]("Canvas",[e])}},Element:{"new":function(h,f,g,e){return Class["new"]("Element",[h,f,g,e])}},Context:{"new":function(e){return Class["new"]("Context",[e])}},Scene:{_scenes:{},_cacheScene:{},_scenesEnabled:{},_scenesIndex:[],_scenesNbCall:{},_current:null,New:function(){return this["new"].apply(this,arguments)},"new":function(f){var e;if(typeof f=="string"){if(!this._cacheScene[f]){throw"Please initialize '"+f+"' scene with an object before"}f=this._cacheScene[f]}else{this._cacheScene[f.name]=f}e=Class["new"]("Scene",[f]).extend(f,false);this._scenesNbCall[f.name]=0;this._scenes[f.name]=e;return e},call:function(g,h){if(this._scenesNbCall[g]>0){this.New(g)}var e=this._scenes[g],f=[g];h=h||{};if(e){this._scenesEnabled[g]=e;if(this._scenesIndex.indexOf(g)==-1){if(h.transition){this._scenesIndex=f.concat(this._scenesIndex)}else{this._scenesIndex.push(g)}}if(h.exitScenes){h.exitScenes.allExcept=h.exitScenes.allExcept||[];h.exitScenes.allExcept=f.concat(h.exitScenes.allExcept);e._load.call(e,h.exitScenes,h.params)}else{if(!h.overlay&&!h.transition){this.exitAll(f)}e._load.call(e,h,h.params)}this._scenesNbCall[g]++}else{throw'Scene "'+g+"\" doesn't exist"}return e},exit:function(f){var e=this._scenesEnabled[f],h=e.getCanvas();if(e){if(h._layerDOM){h._layerDOM.innerHTML=""}e._exit.call(e);for(var g=0;g=e){f=-1}if(f<0){f=e+f}_CanvasEngine.moveArray(b.Scene._scenesIndex,this._index,f);this._index=f;return this},createElement:function(f,k,e){if(f instanceof Array){var l={};for(var g=0;g0){p("images")}if(e>0){p("sounds")}if(g>0){p("fonts")}if(l>0){p("videos")}if(f>0){p("data")}if(n==0&&e==0&&g==0&&l==0&&f==0){t()}function p(i){b.Materials.load(i,u.materials[i],function(y,w){q(y,w,i)})}function q(y,w,i){m++;if(u.preload){u.preload(u._stage,m/r*100,{material:y,type:i,index:m,data:w})}if(r==m){t()}}function o(z){var y=0;if(!u.materials){return 0}if(u.materials[z]){for(var w in u.materials[z]){y++}}return y}function t(){if(h.when=="afterPreload"){b.Scene.exitAll(h.allExcept)}if(u.ready){u.ready(u._stage,v)}u._stage.trigger("canvas:readyEnd");if(u.model&&u.model.ready){u.model.ready.call(u.model)}u._isReady=true;if(h.transition){if(h.transition===true){h.transition={type:"fade"}}u.execTransition(h.transition.type,h.transition,h.overlay)}}},execTransition:function(p,l,h){var r=this,o;l=l||{};l=_CanvasEngine.extend({frames:30},l);var f=b.Scene.getEnabled(),m=0,n;for(var t in f){if(f[t].id==this.id){continue}n=f[t].getStage();o=f[t].getCanvas();switch(p){case"fade":if(!b.Timeline){throw"Add the Timeline class for transitions"}b.Timeline.New(n).to({opacity:0},l.frames).call(function(){if(!h){b.Scene.exitAll(r.name)}if(l.finish){l.finish.call(r)}f[t].zIndex(0)});break;case"image":var o=n.buffer(o.width,o.height),q=o.getContext("2d");var i=0;var g=new Worker("workers/transition.js");g.addEventListener("message",function(k){if(i==0){n.empty()}q.putImageData(k.data.imageData,0,0);n.drawImage(o);i++;if(k.data.finish){g.terminate();if(l.finish){l.finish.call(r)}if(!h){b.Scene.exitAll(r.name)}}});var e=q.getImageData(0,0,o.width,o.height);g.postMessage({imgData:e,pattern:b.Materials.Transition.get(l.id)});n.on("canvas:refresh",function(k){g.postMessage("")});m++;break}}}});Class.create("Context",{_cmd:{},_graphicCmd:[],_graphicPointer:0,img:{},_useClip:false,globalAlpha:1,_PROPS:["shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","globalAlpha","globalCompositeOperation","lineJoin","lineCap","lineWidth","miterLimit","fillStyle","font","textBaseline","textAlign","strokeStyle"],multiple:false,alpha:function(e){},_setMethod:function(f,g){var e=this;this[f]=function(){var h=g=="cmd"?"_addCmd":"draw";e[h](f,arguments)}},_defaultRectParams:function(e,m,f,i,l,k){var g=arguments[arguments.length-1];arguments=Array.prototype.slice.call(arguments,0,arguments.length-1);if(typeof arguments[0]=="string"){this[g]=e;e=m;m=f;f=i;i=l;l=k}if(arguments[0]==undefined){e=0;m=0}if(arguments[3]==undefined){f=this.width;i=this.height}return[e,m,f,i,l]},fillRect:function(e,l,f,i,k){var g=Array.prototype.slice.call(arguments,0);g=this._defaultRectParams.apply(this,g.concat("fillStyle"));if(typeof e!="string"&&k!==undefined){this._roundRect.apply(this,g.concat("fill"));return}this._addCmd("fillRect",g,["fillStyle"]);return this},strokeRect:function(e,l,f,i,k){var g=Array.prototype.slice.call(arguments,0);g=this._defaultRectParams.apply(this,g.concat("strokeStyle"));if(typeof e!="string"&&k!==undefined){this._roundRect.apply(this,g.concat("stroke"));return this}this._addCmd("strokeRect",g,["strokeStyle"]);return this},fillCircle:function(e,g,f){this._circle(e,g,f,"fill");return this},strokeCircle:function(e,g,f){this._circle(e,g,f,"stroke");return this},_circle:function(e,h,g,f){if(h===undefined){g=e}e=e||0;h=h||0;g=g||this.width/2;if(isNaN(g)){console.warn(f+"Circle() : Impossible to define the radius of the circle. Give a width to the element")}if(!this.strokeStyle){this.strokeStyle="black"}this.beginPath();this.arc(e,h,g,0,2*Math.PI,false);this[f]()},_roundRect:function(e,l,f,i,k,g){if(f<2*k){k=f/2}if(i<2*k){k=i/2}this.beginPath();this.moveTo(e+k,l);this.arcTo(e+f,l,e+f,l+i,k);this.arcTo(e+f,l+i,e,l+i,k);this.arcTo(e,l+i,e,l,k);this.arcTo(e,l,e+f,l,k);this.closePath();this[g]()},fill:function(){this._addCmd("fill",[],["fillStyle"]);return this},fillText:function(g,e,h){if(e=="middle"&&this.width&&this.height){var f=this.scene.getCanvas().measureText(g,this.font).width;this.textBaseline="middle";e=this.width/2-f/2;h=this.height/2}if(!e){e=0}if(!h){h=0}this._addCmd("fillText",[g,e,h],["fillStyle","font","textBaseline","textAlign"]);return this},strokeText:function(f,e,g){this._addCmd("strokeText",[f,e,g],["strokeStyle","font","textBaseline","textAlign"]);return this},stroke:function(){this._addCmd("stroke",[],["strokeStyle"]);return this},drawImage:function(i,p,o,q,k,t,r,e,n){var l,f,h,m=i;if(!p){p=0}if(!o){o=0}if(typeof i==="string"){m=b.Materials.get(i);if(!m){return}this.img.width=m.width;this.img.height=m.height}if(/%$/.test(q)){t=p;r=o;p=0;o=0;q=m.width*parseInt(q)/100;k=m.height;e=q;n=k}var g=new RegExp("^"+window.location.origin,"g");if(!g.test(m.src)){h=m}else{h=b.Materials.createBuffer(i)}if(q!==undefined){if(t===undefined){l=[m,p,o,q,k];f=[h,p,o,q,k]}else{l=[m,p,o,q,k,t,r,e,n];f=[h,p,o,q,k,t,r,e,n]}this._buffer_img={params:f,x:t,y:r,width:e,height:n}}else{l=[m,p,o];f=[h,p,o];this._buffer_img={params:f,x:p,y:o,width:m.width,height:m.height}}this._addCmd("drawImage",l);return this},moveTo:function(){this._addCmd.call(this,"moveTo",arguments,true);return this},lineTo:function(){this._addCmd.call(this,"lineTo",arguments,true);return this},quadraticCurveTo:function(){this._addCmd.call(this,"quadraticCurveTo",arguments,true);return this},bezierCurveTo:function(){this._addCmd.call(this,"bezierCurveTo",arguments,true);return this},beginPath:function(){this.multiple=true;this._graphicCmd.push([]);this._addCmd.call(this,"beginPath",arguments);return this},closePath:function(){this._addCmd.call(this,"closePath",arguments,true);return this},clip:function(){this._useClip=true;this._addCmd.call(this,"clip",arguments);return this},rect:function(){var e=Array.prototype.slice.call(arguments,0);e=this._defaultRectParams.apply(this,e.concat("fillStyle"));this._addCmd("rect",e);return this},arc:function(){this._addCmd.call(this,"arc",arguments,true);return this},arcTo:function(){this._addCmd.call(this,"arcTo",arguments,true);return this},addColorStop:function(){this._addCmd.call(this,"addColorStop",arguments,true);return this},isPointInPath:function(){this._addCmd.call(this,"isPointInPath",arguments,true);return this},rotate:function(){this.draw.call(this,"rotate",arguments);return this},translate:function(){this.draw.call(this,"translate",arguments);return this},transform:function(){this.draw.call(this,"transform",arguments);return this},setTransform:function(){this.draw.call(this,"setTransform",arguments);return this},resetTransform:function(){this.draw.call(this,"resetTransform",arguments);return this},clearRect:function(){this.draw.call(this,"clearRect",arguments);return this},scale:function(){this.draw.call(this,"scale",arguments);return this},rotateDeg:function(e){this.rotate(e*Math.PI/180)},save:function(e){if(e){this._addCmd("save")}else{this.draw("save")}},restore:function(e){if(e){this._addCmd("restore")}else{this.draw("restore")}},clearPropreties:function(){var f=this._PROPS;for(var e=0;ef.real_x&&g.xf.real_y&&g.y0){h=f._elementsByScene(this.scene.name,_CanvasEngine.rgbToHex(e[0],e[1],e[2]));if(h){o(h)}}},_click:function(h,f,g){this._select(f,function(e){e.trigger("click",h,f)})},_cloneRecursive:function(g){var k,h;if(g._children.length>0){for(var f=0;f=e){f=-1}if(f<0){f=e+f}return g[f]},next:function(e,l){var g=this.zIndex();if(e){var k=this.parent.children(),f,m;for(var h=g+1;h=0;h--){m=k[h];f=this._findAttr(e,l,m);if(f){return m}}return false}return this.parent.eq(g-1)},find:function(e){var g=this.children(),h=[];for(var f=0;f=e){f=-1}if(f<0){f=e+f}_CanvasEngine.moveArray(this.parent._children,this.zIndex(),f);this._stageRefresh();return this},zIndexBefore:function(e){this.zIndex(e.zIndex()-1);return this},remove:function(){var g;var e=this.scene.getCanvas();for(var f=0;f0},hasEvent:function(){return this._nbEvent>0},trigger:function(k,m){var l,f=false;k=k.split(" ");if(!(m instanceof Array)){m=[m]}for(var g=0;g; * Licensed under the MIT license */ (function(F){var z=function(Q,P){return new z.Instance(Q,P||{})};z.defaults={stop_browser_behavior:{userSelect:"none",touchCallout:"none",touchAction:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};z.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled;z.HAS_TOUCHEVENTS=("ontouchstart" in F);z.EVENT_TYPES={};z.DIRECTION_DOWN="down";z.DIRECTION_LEFT="left";z.DIRECTION_UP="up";z.DIRECTION_RIGHT="right";z.POINTER_MOUSE="mouse";z.POINTER_TOUCH="touch";z.POINTER_PEN="pen";z.EVENT_START="start";z.EVENT_MOVE="move";z.EVENT_END="end";z.plugins={};z.READY=false;function e(){if(z.READY){return}z.event.determineEventTypes();for(var P in z.gestures){if(z.gestures.hasOwnProperty(P)){z.detection.register(z.gestures[P])}}z.event.onTouch(document,z.EVENT_MOVE,z.detection.detect);z.event.onTouch(document,z.EVENT_END,z.detection.endDetect);z.READY=true}z.Instance=function(R,Q){var P=this;e();this.element=R;this.enabled=true;this.options=z.utils.extend(z.utils.extend({},z.defaults),Q||{});if(this.options.stop_browser_behavior){z.utils.stopDefaultBrowserBehavior(this.element,this.options.stop_browser_behavior)}z.event.onTouch(R,z.EVENT_START,function(S){if(P.enabled){z.detection.startDetect(P,S)}});return this};z.Instance.prototype={on:function G(Q,R){var S=Q.split(" ");for(var P=0;P=S){return R.pageX-Q.pageX>0?z.DIRECTION_LEFT:z.DIRECTION_RIGHT}else{return R.pageY-Q.pageY>0?z.DIRECTION_UP:z.DIRECTION_DOWN}},getDistance:function m(R,Q){var P=Q.pageX-R.pageX,S=Q.pageY-R.pageY;return Math.sqrt((P*P)+(S*S))},getScale:function y(Q,P){if(Q.length>=2&&P.length>=2){return this.getDistance(P[0],P[1])/this.getDistance(Q[0],Q[1])}return 1},getRotation:function v(Q,P){if(Q.length>=2&&P.length>=2){return this.getAngle(P[1],P[0])-this.getAngle(Q[1],Q[0])}return 0},isVertical:function D(P){return(P==z.DIRECTION_UP||P==z.DIRECTION_DOWN)},stopDefaultBrowserBehavior:function b(R,Q){var U,T=["webkit","khtml","moz","ms","o",""];if(!Q||!R.style){return}for(var P=0;PR.index){return 1}return 0});return this.gestures}};z.gestures=z.gestures||{};z.gestures.Hold={name:"hold",index:10,defaults:{hold_timeout:500,hold_threshold:1},timer:null,handler:function M(P,Q){switch(P.eventType){case z.EVENT_START:clearTimeout(this.timer);z.detection.current.name=this.name;this.timer=setTimeout(function(){if(z.detection.current.name=="hold"){Q.trigger("hold",P)}},Q.options.hold_timeout);break;case z.EVENT_MOVE:if(P.distance>Q.options.hold_threshold){clearTimeout(this.timer)}break;case z.EVENT_END:clearTimeout(this.timer);break}}};z.gestures.Tap={name:"tap",index:100,defaults:{tap_max_touchtime:250,tap_max_distance:10,doubletap_distance:20,doubletap_interval:300},handler:function H(Q,R){if(Q.eventType==z.EVENT_END){var P=z.detection.previous;if(Q.deltaTime>R.options.tap_max_touchtime||Q.distance>R.options.tap_max_distance){return}if(P&&P.name=="tap"&&(Q.timestamp-P.lastEvent.timestamp)0&&P.touches.length>Q.options.swipe_max_touches){return}if(P.velocityX>Q.options.swipe_velocity||P.velocityY>Q.options.swipe_velocity){Q.trigger(this.name,P);Q.trigger(this.name+P.direction,P)}}}};z.gestures.Drag={name:"drag",index:50,defaults:{drag_min_distance:10,drag_max_touches:1,drag_block_horizontal:false,drag_block_vertical:false,drag_lock_to_axis:false},triggered:false,handler:function t(P,Q){if(z.detection.current.name!=this.name&&this.triggered){Q.trigger(this.name+"end",P);this.triggered=false;return}if(Q.options.drag_max_touches>0&&P.touches.length>Q.options.drag_max_touches){return}switch(P.eventType){case z.EVENT_START:this.triggered=false;break;case z.EVENT_MOVE:if(P.distanceS.options.transform_min_rotation){S.trigger("rotate",R)}if(Q>S.options.transform_min_scale){S.trigger("pinch",R);S.trigger("pinch"+((R.scale<1)?"in":"out"),R)}break;case z.EVENT_END:if(this.triggered){S.trigger(this.name+"end",R)}this.triggered=false;break}}};z.gestures.Touch={name:"touch",index:-Infinity,defaults:{prevent_default:false},handler:function g(P,Q){if(Q.options.prevent_default){P.preventDefault()}if(P.eventType==z.EVENT_START){Q.trigger(this.name,P)}}};z.gestures.Release={name:"release",index:Infinity,handler:function L(P,Q){if(P.eventType==z.EVENT_END){Q.trigger(this.name,P)}}};if(typeof module==="object"&&typeof module.exports==="object"){module.exports=z}else{F.Hammer=z;if(typeof F.define==="function"&&F.define.amd){F.define("hammer",[],function(){return z})}}})(this);var Ease={linear:function(e,f,a,h,g){return h*(f/=g)+a},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,m,l){var i=1.70158;var k=0;var g=m;if(h==0){return e}if((h/=l)==1){return e+m}if(!k){k=l*0.3}if(g=a._frequence){if(f==0){k.call(this)}if(h==0){p=false;for(var o in a._timeline){if(o>f){n=m?m:0;m=o;p=true;break}}if(!p){a._stop=true;f=0;n=0;h=0;if(a._onFinish){b=a._onFinish.call(this)}if(!b){return}else{k.call(this);m=0}}}h=m-f;if(h!=0){if(a._timeline[m]._cal!="wait"){if(h==1){for(var g=0;g=y.frequence){if(a._images instanceof Array){var n=a._images[f];v(n);this.drawImage(n);f++;if(f>=a._images.length){f=0;if(!p){a._stop=true}}}else{var n=Global_CE.Materials.get(a._images),u=0,r=0;v(a._images);var w;var q=n.width/y.size.width;var o=n.height/y.size.height;var k;var l;function i(D,C){var A=a._images;if(y.patternSize){y.size={width:n.width/y.patternSize.width,height:n.height/y.patternSize.height}}r=parseInt(C/Math.round(n.width/y.size.width));u=(C%Math.round(n.width/y.size.width));var z=y.size.width*u,B=y.size.height*r;D.trigger("animation:draw",C);if(y.image){A=y.image}if(!y.position){y.position={}}if(!y.position.left){y.position.left=0}if(!y.position.top){y.position.top=0}D.drawImage(A,z,B,y.size.width,y.size.height,y.position.left,y.position.top,y.size.width,y.size.height)}function t(){if(a._loop=="stop"){if(y.finish){y.finish.call(a)}a.stop();return true}else{if(a._loop=="remove"){if(a._options.addIn){this.empty()}else{this.remove()}if(y.finish){y.finish.call(a)}a.stop();return true}}return false}if(y.frames[0] instanceof Array){if(y.frames[d]===undefined){d=0;if(t.call(this)){return}}this.empty();y.framesDefault=y.framesDefault||{};if(!y.framesDefault.x){y.framesDefault.x=0}if(!y.framesDefault.y){y.framesDefault.y=0}if(!y.framesDefault.zoom){y.framesDefault.zoom=100}if(!y.framesDefault.opacity){y.framesDefault.opacity=255}if(!y.framesDefault.rotation){y.framesDefault.rotation=0}if(!y.frames[d]){d++;return}for(var m=0;my.frames[1]){d=0;t.call(this);i(this,y.frames[0])}else{i(this,k)}}d++}g=0}})},isStopped:function(){return this._stop},stop:function(){this._stop=true;return this},play:function(a,b){this._loop=b;this._seq=a;this._stop=false;return this}});var Animation={Timeline:{New:function(){return this["new"].apply(this,arguments)},"new":function(a){return Class["new"]("Timeline",[a])}},Animation:{New:function(){return this["new"].apply(this,arguments)},"new":function(a){return Class["new"]("Animation",[a])}}};var Input={Input:{keyBuffer:[],cacheKeyBuffer:[],_keyFunctions:{},_keyPress:{},_keyUp:{},_keyType:{},_keyPressed:{},_lock:{},_rules:{},_key:function(d,b,f){if(typeof b=="function"){b(d)}else{if(b instanceof Array){for(var a=0;a1&&a._keyType[l.which]=="keyPress"){return}a._keyPressed[l.which]=true;if(a._keyFunctions[l.which]){i=a._keyFunctions[l.which](l)}if(i!==undefined){return i}else{return false}}function e(l,i){a._keyType[l]=i;a._keyFunctions[l]=d}},reset:function(b){this._keyPressed={};if(b){for(var a=0;a0){C+=u[B]}return C},writeRaw:function(i){if(t!==8){C+=u[B];B=0;t=8}C+=i},readRaw:function(i){if(t!==8){z++;B=0;t=8}var E=C.substr(z,i);z+=i;B=C.charCodeAt(z);return E},write:function D(G,F){var H=F-t,E=t0){B+=G>>H<0){D(G&v[H],H)}}},read:function r(F){if(z>=A){return null}var H=F-t,E=t>i;t-=E;if(t===0){B=C.charCodeAt(++z);t=8;if(H>0){G=G<>8&255,4);q(B&255,8)}else{if(B<65536){q(4,3);q(B>>8&255,8);q(B&255,8)}else{if(B<1048576){q(5,3);q(B>>16&255,4);q(B>>8&255,8);q(B&255,8)}else{if(B<16777216){q(6,3);q(B>>16&255,8);q(B>>8&255,8);q(B&255,8)}else{q(7,3);q(B>>24&255,8);q(B>>16&255,8);q(B>>8&255,8);q(B&255,8)}}}}}}}q(u,1);if(z){q(r,4)}}else{if(typeof B==="string"){var v=B.length;q(3,3);if(v>65535){q(31,5);q(v>>24&255,8);q(v>>16&255,8);q(v>>8&255,8);q(v&255,8)}else{if(v>255){q(30,5);q(v>>8&255,8);q(v&255,8)}else{if(v>28){q(29,5);q(v,8)}else{q(v,5)}}}g(B)}else{if(typeof B==="boolean"){q(+B,5)}else{if(B===null){q(2,5)}else{if(B instanceof n){q(4,3);for(var w=0,v=B.length;w=h.width){d=-(h.width-e.width)}else{d=-(b-e.width/2+(e.width/2%this.tile_w))}}if(a<=e.height/2){i=0}else{if(a+e.height/2>=h.height){i=-(h.height-e.height)}else{i=-(a-e.height/2+(e.height/2%this.tile_h))}}h.element.x=d;h.element.y=i;var k=this.tile_w/h.speed;var g=this.tile_h/h.speed;h.element.x=Math.floor(h.element.x/k)*k;h.element.y=Math.floor(h.element.y/g)*g;h.screen_x=Math.abs(h.element.x);h.screen_y=Math.abs(h.element.y);var f=this._multipleScreen(h.speed,h.screen_x,h.screen_y);h.screen_x=f.x;h.screen_y=f.y;this.update()},_multipleScreen:function(d,a,f){var e=this.tile_w/d;var b=this.tile_h/d;a=Math.floor(a/e)*e;f=Math.floor(f/b)*b;return{x:a,y:f}},update:function(){var b,e;var f=this.scene.getCanvas();if(this.freeze){return}if(!this.main_el){return}for(var g=0;gb.parallax_x){e.x-=d}else{e.x+=d}b.parallax_x=b.screen_x}if(b.screen_y!=b.parallax_y){if(b.screen_y>b.parallax_y){e.y-=a}else{e.y+=a}b.parallax_y=b.screen_y}}else{if(k!=b.screen_x){if(b.screen_x>k){if(k>b.screen_x-d){e.x=-b.screen_x}else{e.x-=d}}else{if(b.screen_xh){if(h>b.screen_y-a){e.y=-b.screen_y}else{e.y-=a}}else{if(b.screen_y0){b.screen_x=e.x=0}else{if(e.x+b.width0){b.screen_y=e.y=0}else{if(e.y+b.height>0}if(f.height<=b.height){b.element.y=e.y>>0}}},mouseScroll:function(f,e,d){d=d||{};if(e.height=0){h=0;if(d.onTop){d.onTop.call(this,g)}}else{if(f.height>=(h+this.height)){h=-this.height+f.height;if(d.onBottom){d.onBottom.call(this,g)}}}this.y=h;if(d.drag){d.drag.call(this,g)}});e.on("dragend",function(g){if(d.dragend){d.dragend.call(this,g)}});f.append(e);return this}});var Scrolling={Scrolling:{New:function(){return this["new"].apply(this,arguments)},"new":function(d,b,a){return Class["new"]("Scrolling",[d,b,a])}}};Class.create("Spritesheet",{image:null,_set:{},initialize:function(a,b){this.image=a;if(b){this.set(b)}},set:function(n){var k,a,m,l,h,g,f=Global_CE.Materials.get(this.image,"image");if(!f){return false}for(var b in n){if(b=="grid"){for(var e=0;e=b){a=this.params.reverse?0:b-1}}this.index=a;this.update(true);return true},update:function(a){if(this.el){if(this.array_elements.length==0){this.el.hide();return}else{this.el.show()}}var b=this.getCurrentElement(),d;if(b){d=b.position();if(this.el){this.el.x=d.left;this.el.y=d.top}if(a&&this._onchange&&this.array_elements.length>0){this._onchange.call(this,b)}}},enable:function(a){if(a!=undefined){this._enable=a;if(a){this.assignKeys()}else{Global_CE.Input.reset([Input.Enter,Input.Up,Input.bottom])}}return this._enable},change:function(a){this._onchange=a;return this},select:function(a){this._select=a;return this}}});var Window={Window:{New:function(){return this["new"].apply(this,arguments)},"new":function(e,d,a,b){return Class["new"]("Window",[e,d,a,b])}}};if(typeof exports!="undefined"){var CE=require("canvasengine").listen(),CanvasEngine=false,Class=CE.Class}Class.create("Point",{initialize:function(b,a){this.x=b;this.y=a}});Class.create("Polygon",{initialize:function(a){this.points=[];this.center=a},addPoint:function(a){this.points.push(a)},addAbsolutePoint:function(a){this.points.push({x:a.x-this.center.x,y:a.y-this.center.y})},getNumberOfSides:function(){return this.points.length},rotate:function(b){for(var d=0;dm)!=(f[d]>m))&&(n<(g[d]-g[e])*(m-f[e])/(f[d]-f[e])+g[e])){h=!h}}return h},intersectsWith:function(g){var f=Class.New("Point");var w,p,n,m,l;var e,v;var b=null;var a=99999999;for(e=0;en){n=w}else{if(wl){l=w}else{if(wl){return false}else{var r=(n>m?n-m:l-p);if(rn){n=w}else{if(wl){l=w}else{if(wl){return false}else{var r=(n>m?n-m:l-p);if(r0){this.hitState.out=1;this.hitState.over=0}else{this.hitState.out=0;this.hitState.over=0}}return this.hitState},getPoints:function(a){a=a||this._frame;return this._polygon[a].points},getPolygonReg:function(a){a=a||this._frame;return this._polygon[a].center},getPolygon:function(a){a=a||this._frame;return this._polygon[a]},frame:function(a){if(a){this._frame=a}return this._frame},});Class.create("Entity",{stage:null,params:{},el:null,mode:null,hit_entities:[],initialize:function(b,d,a){if(a===undefined){a=true}this.stage=b;this.params=d;this.el=this.stage.getScene().createElement();if(a){this.setModel(Class.New("EntityModel"))}this.testHit()},setModel:function(a){this.model=a},position:function(a,e,b){var d=this.model.position(a,e);if(a!==undefined){this.el.x=d.x;this.el.y=d.y}return{x:d.y,y:d.y}},move:function(a,d){var b=this.model.position();if(!a){a=0}if(!d){d=0}return this.position(a+b.x,d+b.y,true)},polygon:function(a){this.model.polygon(a)},rect:function(a,e,b,d){this.model.rect(a,e,b,d);this.el.width=b;this.el.height=d},onHit:function(a,b,d){this.hit_entities=this.hit_entities.concat(b);this.el.on("entity:hit:"+a,d)},testHit:function(){var a=this;this.el.attr("entity:testHit",function(){a.hit(a.hit_entities)})},testAnimHit:function(){var a=this;this.el.on("animation:draw",function(b){})},hit:function(f,g){var e,a=this;function b(h){if(g){g.call(a,h,a.el)}a.el.trigger("entity:hit:"+h,[a.el])}for(var d=0;dt.max_x){t.max_x=n}if(mt.max_y){t.max_y=m}}var o=[this.getCellByPos(t.min_x,t.min_y),this.getCellByPos(t.max_x,t.min_y),this.getCellByPos(t.max_x,t.max_y),this.getCellByPos(t.min_x,t.max_y)];var f=o[2].row-o[0].row,r=o[1].col-o[0].col;for(l=0;l=b){e=0;this.toggle()}if(d<=0){this.off("canvas:render",a);this.show();if(f){f()}}};this.el.on("canvas:render",a)},shake:function(d,e,h,b,i){if(typeof b=="function"){i=b;b=false}var g=0,f=1;b=b||"x";var a=function(){var k=(d*e*f)/10;if(h<=1&&g*(g+k)<0){g=0}else{g+=k}if(g>d*2){f=-1}if(g<-d*2){f=1}if(h>=1){h-=1}if(/x/.test(b)){this.x=g}if(/y/.test(b)){this.y=g}if(h==0){this.off("canvas:render",a);if(i){i()}}console.log(k)};this.el.on("canvas:render",a)},changeScreenColorTone:function(a,e,g,d,f){var b=false;if(this.tone){this.tone.remove();delete this.tone;b=true;if(a=="reset"){return}}this.tone=this.scene.createElement(),canvas=this.scene.getCanvas();this.tone.fillStyle=a;this.tone.fillRect(0,0,canvas.width,canvas.height);this.tone.opacity=0;this.tone.globalCompositeOperation=g;this.scene.getStage().append(this.tone);this.tone.zIndex(-1);if(!b){this.tone.opacity=0;if(e>0){Global_CE.Timeline["new"](this.tone).to({opacity:d},e).call(f)}else{this.tone.opacity=d}}},_weather:function(i,b){if(b.intensity=="stop"){clearInterval(this._weather_.timer);this._weather_.state="stop";return}var a=b.intensity||100;var e=0;var f=this.scene.getStage(),m=this;this._weather_={number:0,numberStop:0,state:"loop"};var k=this.el.width||this.canvas.width,d=this.el.height||this.canvas.height;var l=setInterval(function(){if(m._weather_.number==a){clearInterval(l);return}var n=m.scene.createElement();n.x=CanvasEngine.random(0,k);n.y=-10;var h;if(i=="rain"){n.attr("drift",0);n.attr("speed",CanvasEngine.random(4,6))*8;n.width=n.height=CanvasEngine.random(2,6)*5;h=m.canvas.createRadialGradient(n.height/2,n.height/2,0,n.height/2,n.height/2,n.height);h.addColorStop(0,"rgba(125, 125, 255, 1)");h.addColorStop(1,"rgba(125, 125, 255, 0)");n.beginPath();n.moveTo(0,0);n.lineTo(e,n.height);n.strokeStyle=h;n.stroke()}else{if(i="snow"){n.attr("drift",Math.random());n.attr("speed",CanvasEngine.random(1,6));n.width=n.height=CanvasEngine.random(2,6);if(b.use_gradient){h=m.canvas.createRadialGradient(0,0,0,0,0,n.width);h.addColorStop(0,"rgba(255, 255, 255, 1)");h.addColorStop(1,"rgba(255, 255, 255, 0)")}else{h="white"}n.fillStyle=h;n.fillCircle()}}n.name="weather";m.el.append(n);m._weather_.number++},200);this._weather_.timer=l;var g=function(h){if(h.name!="weather"){return}if(m._weather_.state=="finish"){m.el.empty();m.el.off("canvas:refresh",g);return}if(h.attr("flake_state")=="stop"){return}if(h.yd-3){h.y=i=="snow"?-5:-30;if(m._weather_.state=="stop"){h.attr("flake_state","stop");m._weather_.numberStop++;if(m._weather_.number==m._weather_.numberStop){m._weather_.state="finish"}return}}h.x+=h.attr("drift");if(h.x>k){h.x=0}};this.el.on("canvas:refresh",g);return this},rain:function(a){return this._weather("rain",{intensity:a})},snow:function(a,b){return this._weather("snow",{intensity:a,use_gradient:b})},storm:function(a,f,d){var b=this;d=d||"#FCFFE6";this.rain(a);if(a=="stop"){return this}function e(){var g=CanvasEngine.random(4,10);setTimeout(function(){if(b._weather_.state=="loop"){if(f){f()}b.screenFlash(d,10);e()}},g*1000)}e()},particles:function(){}});var Effect={Effect:{New:function(){return this["new"].apply(this,arguments)},"new":function(b,a){return Class["new"]("Effect",[b,a])}}};Class.create("Text",{scene:null,text:"",el:null,_family:null,_style:{size:"20px",family:"Arial",weight:"normal",style:"normal",variant:"normal",color:"#000",transform:"none",decoration:"none",border:"none",lineHeight:25,shadow:null,textBaseline:"alphabetic",lineWidth:null},lines:[],initialize:function(a,b){this.scene=a;this.construct(b)},construct:function(a){a=""+a;this.el=this.scene.createElement();a=this._transformHTML(a);this.text=a.split("\n");this.lines=[]},_transformHTML:function(a){a=a.replace(/
/g,"\n");return a},setImageText:function(d,g,b,a){var e=this.scene.createElement();if(!Global_CE.Spritesheet){throw"Add Spritesheet class to use setImageText method"}a=a||{rows:1,cols:1};var f=Global_CE.Spritesheet.New(d,{grid:[{size:a,tile:[b.width,b.height],set:g}]});this._family=f},style:function(b){if(b.size&!b.lineHeight){b.lineHeight=b.size}for(var a in b){this._style[a]=b[a]}return this},draw:function(k,m,l,t){if(t&&!Global_CE.Timeline){throw"Add Timeline class to use effects"}if(!t){t={}}if(!m){m=0}if(!l){l=0}var q=this._style,B,p,A,a=0,h,g="",f;var d=this.scene.getCanvas(),u=this;this.el.x=m;this.el.y=l;function C(y,i,n){h=parseInt(q.lineHeight);h*=parseInt(q.size)/20;a=h*y;i.font=q.style+" "+q.weight+" "+q.variant+" "+q.size+" "+q.family;i.fillStyle=q.color;i.textBaseline=q.textBaseline;if(q.shadow){f=q.shadow.match(/(-?[0-9]+) (-?[0-9]+) ([0-9]+) ([#a-zA-Z0-9]+)/);if(f){i.shadowOffsetX=f[1];i.shadowOffsetY=f[2];i.shadowBlur=f[3];i.shadowColor=f[4]}}i.fillText(n,0,a);if(q.border!="none"){B=q.border.match(/([0-9]+)px ([#a-zA-Z0-9]+)/);i.font=q.style+" "+q.weight+" "+q.variant+" "+(q.size+B[1])+" "+q.family;i.strokeStyle=B[2];i.strokeText(n,0,a)}return i}function r(y,n){var i=u.scene.createElement();C(y,i,n);u.lines.push({text:n,el:i,chars:[]});i.opacity=0}function b(K,n,H){var L=this.lines[K].el;if(n>=this.lines[K].text.length){H();for(var G=0;G=this.lines.length){if(t.line&&t.line.onFinish){t.line.onFinish()}return}n=this.lines[y].el;if(t.line){this.el.append(n);Global_CE.Timeline["new"](n).to({opacity:1},t.line.frames).call(function(){if(t.line.onEffect){t.line.onEffect(i.lines[y].text,n)}z.call(i,y+1)})}else{if(t._char){b.call(this,y,0,function(){z.call(i,y+1)})}else{n.opacity=1;this.el.append(n);z.call(this,y+1)}}}var A,E,o,v,e=0;for(var D=0;Dq.lineWidth){r(e,g);g=v[w]+" ";e++}else{g=E}}if(o