(function(){var a="undefined"!==typeof window&&"undefined"!==typeof window.document?window.document:{},c="undefined"!==typeof module&&module.exports,b=function(){for(var b,d=["requestFullscreen exitFullscreen fullscreenElement fullscreenEnabled fullscreenchange fullscreenerror".split(" "),"webkitRequestFullscreen webkitExitFullscreen webkitFullscreenElement webkitFullscreenEnabled webkitfullscreenchange webkitfullscreenerror".split(" "),"webkitRequestFullScreen webkitCancelFullScreen webkitCurrentFullScreenElement webkitCancelFullScreen webkitfullscreenchange webkitfullscreenerror".split(" "), "mozRequestFullScreen mozCancelFullScreen mozFullScreenElement mozFullScreenEnabled mozfullscreenchange mozfullscreenerror".split(" "),"msRequestFullscreen msExitFullscreen msFullscreenElement msFullscreenEnabled MSFullscreenChange MSFullscreenError".split(" ")],h=0,c=d.length,f={};hp?1:532>p?2:532.05>p?3:533>p?4:534.03>p?5:534.07>p?6:534.1>p?7:534.13>p?8:534.16>p?9:534.24>p?10:534.3>p?11:535.01>p?12:535.02>p?"13+":535.07>p?15:535.11>p?16:535.19>p?17:536.05>p?18:536.1>p?19:537.01>p?20:537.11>p?"21+":537.13>p?23:537.18>p?24:537.24>p?25:537.36>p?26:"Blink"!= B?"27":"28")):(B&&(B[1]="like Safari"),p=(p=p[0],400>p?1:500>p?2:526>p?3:533>p?4:534>p?"4+":535>p?5:537>p?6:538>p?7:601>p?8:"8"));B&&(B[1]+=" "+(p+="number"==typeof p?".x":/[.+]/.test(p)?"":"+"));"Safari"==v&&(!q||45C.indexOf(L)&&n.push("on "+L);C&&n.push((/^on /.test(n[n.length- 1])?"":"on ")+C);if(w){var W=(p=/ ([\d.+]+)$/.exec(w))&&"/"==w.charAt(w.length-p[0].length-1);w={architecture:32,family:p&&!W?w.replace(p[0],""):w,version:p?p[1]:null,toString:function(){var a=this.version;return this.family+(a&&!W?" "+a:"")+(64==this.architecture?" 64-bit":"")}}}(p=/\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(G))&&!/\bi686\b/i.test(G)?(w&&(w.architecture=64,w.family=w.family.replace(RegExp(" *"+p),"")),v&&(/\bWOW64\b/i.test(a)||K&&/\w(?:86|32)$/.test(t.cpuClass||t.platform)&&!/\bWin64; x64\b/i.test(a))&& n.unshift("32-bit")):w&&/^OS X/.test(w.family)&&"Chrome"==v&&39<=parseFloat(q)&&(w.architecture=64);a||(a=null);l={};l.description=a;l.layout=B&&B[0];l.manufacturer=L;l.name=v;l.prerelease=z;l.product=C;l.ua=a;l.version=v&&q;l.os=w||{architecture:null,family:null,version:null,toString:function(){return"null"}};l.parse=m;l.toString=function(){return this.description||""};l.version&&n.unshift(q);l.name&&n.unshift(v);w&&v&&(w!=String(w).split(" ")[0]||w!=v.split(" ")[0]&&!C)&&n.push(C?"("+w+")":"on "+ w);n.length&&(l.description=n.join(" "));return l}var k={"function":!0,object:!0},r=k[typeof window]&&window||this,l=k[typeof exports]&&exports;k=k[typeof module]&&module&&!module.nodeType&&module;var n=l&&k&&"object"==typeof global&&global;!n||n.global!==n&&n.window!==n&&n.self!==n||(r=n);var q=Math.pow(2,53)-1,x=/\bOpera/;n=Object.prototype;var y=n.hasOwnProperty,u=n.toString,t=m();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(r.platform=t,define(function(){return t})):l&& k?f(t,function(a,d){l[d]=a}):r.platform=t}).call(this); function buildIOSMeta(){for(var a=[{name:"viewport",content:"width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"},{name:"apple-mobile-web-app-capable",content:"yes"},{name:"apple-mobile-web-app-status-bar-style",content:"black"}],c=0;c
')} function showIOSFullscreenPanel(){jQuery(".xxx-ios-fullscreen-message").css("display","block");jQuery(".xxx-ios-fullscreen-scroll").css("display","block")} function __iosResize(){window.scrollTo(0,0);console.log(window.devicePixelRatio);console.log(window.innerWidth);console.log(window.innerHeight);if("iPhone"===platform.product)switch(window.devicePixelRatio){case 2:switch(window.innerWidth){case 568:320!==window.innerHeight&&jQuery(".xxx-game-iframe-full").addClass("xxx-game-iframe-iphone-se");break;case 667:375===window.innerHeight?hideIOSFullscreenPanel():showIOSFullscreenPanel();break;case 808:414===window.innerHeight?hideIOSFullscreenPanel():showIOSFullscreenPanel(); break;default:hideIOSFullscreenPanel()}break;case 3:switch(window.innerWidth){case 736:414===window.innerHeight?hideIOSFullscreenPanel():showIOSFullscreenPanel();break;case 724:375===window.innerHeight?hideIOSFullscreenPanel():showIOSFullscreenPanel();break;case 808:414===window.innerHeight?hideIOSFullscreenPanel():showIOSFullscreenPanel();break;default:hideIOSFullscreenPanel()}break;default:hideIOSFullscreenPanel()}}function iosResize(){__iosResize();setTimeout(function(){__iosResize()},500)} function iosInIframe(){try{return window.self!==window.top}catch(a){return!0}}function isIOSLessThen13(){var a=platform.os,c=a.family.toLowerCase();a=parseFloat(a.version);return"ios"===c&&13>a?!0:!1}$(document).ready(function(){platform&&"iPhone"===platform.product&&"safari"===platform.name.toLowerCase()&&isIOSLessThen13()&&!iosInIframe()&&(buildIOSFullscreenPanel(),buildIOSMeta())}); jQuery(window).resize(function(){platform&&"iPhone"===platform.product&&"safari"===platform.name.toLowerCase()&&isIOSLessThen13()&&!iosInIframe()&&iosResize()});var s_iScaleFactor=1,s_iOffsetX,s_iOffsetY,s_bIsIphone=!1; (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|tablet|treo|up\.(browser|link)|vodafone|wap|webos|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))})(navigator.userAgent||navigator.vendor||window.opera);$(window).resize(function(){sizeHandler()});function trace(a){console.log(a)} function getSize(a){var c=a.toLowerCase(),b=window.document,f=b.documentElement;if(void 0===window["inner"+a])a=f["client"+a];else if(window["inner"+a]!=f["client"+a]){var g=b.createElement("body");g.id="vpw-test-b";g.style.cssText="overflow:scroll";var e=b.createElement("div");e.id="vpw-test-d";e.style.cssText="position:absolute;top:-1000px";e.innerHTML="";g.appendChild(e);f.insertBefore(g,b.head); a=7==e["offset"+a]?f["client"+a]:window["inner"+a];f.removeChild(g)}else a=window["inner"+a];return a}window.addEventListener("orientationchange",onOrientationChange);function onOrientationChange(){window.matchMedia("(orientation: portrait)").matches&&sizeHandler();window.matchMedia("(orientation: landscape)").matches&&sizeHandler()}function isChrome(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)} function isIpad(){var a=-1!==navigator.userAgent.toLowerCase().indexOf("ipad");return!a&&navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2g||(g=(a-b)/2);$("#canvas").css("top",g+"px");$("#canvas").css("left", e+"px");fullscreenHandler()}} function _checkOrientation(a,c){s_bMobile&&ENABLE_CHECK_ORIENTATION&&(a>c?"landscape"===$(".orientation-msg-container").attr("data-orientation")?($(".orientation-msg-container").css("display","none"),s_oMain.startUpdate()):($(".orientation-msg-container").css("display","block"),s_oMain.stopUpdate()):"portrait"===$(".orientation-msg-container").attr("data-orientation")?($(".orientation-msg-container").css("display","none"),s_oMain.startUpdate()):($(".orientation-msg-container").css("display","block"), s_oMain.stopUpdate()))}function playSound(a,c,b){return!1===DISABLE_SOUND_MOBILE||!1===s_bMobile?(s_aSounds[a].play(),s_aSounds[a].volume(c),s_aSounds[a].loop(b),s_aSounds[a]):null}function stopSound(a){!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||a.stop()}function setVolume(a,c){!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||a.volume(c)}function setMute(a,c){!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||a.mute(c)}function fadeSound(a,c,b,f){!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||a.fade(c,b,f)} function soundPlaying(a){if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)return a.playing()}function soundSeek(a,c){if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)return a.seek(c)}function soundDuration(a){if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)return a.duration()}function createBitmap(a,c,b){var f=new createjs.Bitmap(a),g=new createjs.Shape;c&&b?g.graphics.beginFill("#fff").drawRect(0,0,c,b):g.graphics.beginFill("#ff0").drawRect(0,0,a.width,a.height);f.hitArea=g;return f} function createSprite(a,c,b,f,g,e){a=null!==c?new createjs.Sprite(a,c):new createjs.Sprite(a);c=new createjs.Shape;c.graphics.beginFill("#000000").drawRect(-b,-f,g,e);a.hitArea=c;return a}function pad(a,c,b){a+="";return a.length>=c?a:Array(c-a.length+1).join(b||"0")+a}function randomFloatBetween(a,c,b){"undefined"===typeof b&&(b=2);return parseFloat(Math.min(a+Math.random()*(c-a),c).toFixed(b))} function rotateVector2D(a,c){var b=c.getX()*Math.cos(a)+c.getY()*Math.sin(a),f=c.getX()*-Math.sin(a)+c.getY()*Math.cos(a);c.set(b,f)}function tweenVectorsOnX(a,c,b){return a+b*(c-a)}function linearFunction(a,c,b,f,g){return(a-c)*(g-f)/(b-c)+f}function shuffle(a){for(var c=a.length,b,f;0!==c;)f=Math.floor(Math.random()*c),--c,b=a[c],a[c]=a[f],a[f]=b;return a}function bubbleSort(a){do{var c=!1;for(var b=0;ba[b+1]&&(c=a[b],a[b]=a[b+1],a[b+1]=c,c=!0)}while(c)} function compare(a,c){return a.index>c.index?-1:a.indexc?b+("0"+c+":"):b+(c+":");return 10>a?b+("0"+a):b+a}function degreesToRadians(a){return a*Math.PI/180}function checkRectCollision(a,c){var b=getBounds(a,.9);var f=getBounds(c,.98);return calculateIntersection(b,f)} function calculateIntersection(a,c){var b,f,g,e;var d=a.x+(b=a.width/2);var h=a.y+(f=a.height/2);var m=c.x+(g=c.width/2);var k=c.y+(e=c.height/2);d=Math.abs(d-m)-(b+g);h=Math.abs(h-k)-(f+e);return 0>d&&0>h?(d=Math.min(Math.min(a.width,c.width),-d),h=Math.min(Math.min(a.height,c.height),-h),{x:Math.max(a.x,c.x),y:Math.max(a.y,c.y),width:d,height:h,rect1:a,rect2:c}):null} function getBounds(a,c){var b={x:Infinity,y:Infinity,width:0,height:0};if(a instanceof createjs.Container){b.x2=-Infinity;b.y2=-Infinity;var f=a.children,g=f.length,e;for(e=0;eb.x2&&(b.x2=d.x+d.width);d.y+d.height>b.y2&&(b.y2=d.y+d.height)}Infinity==b.x&&(b.x=0);Infinity==b.y&&(b.y=0);Infinity==b.x2&&(b.x2=0);Infinity==b.y2&&(b.y2=0);b.width=b.x2-b.x;b.height=b.y2-b.y;delete b.x2;delete b.y2}else{if(a instanceof createjs.Bitmap){g= a.sourceRect||a.image;e=g.width*c;var h=g.height*c}else if(a instanceof createjs.Sprite)if(a.spriteSheet._frames&&a.spriteSheet._frames[a.currentFrame]&&a.spriteSheet._frames[a.currentFrame].image){g=a.spriteSheet.getFrame(a.currentFrame);e=g.rect.width;h=g.rect.height;f=g.regX;var m=g.regY}else b.x=a.x||0,b.y=a.y||0;else b.x=a.x||0,b.y=a.y||0;f=f||0;e=e||0;m=m||0;h=h||0;b.regX=f;b.regY=m;g=a.localToGlobal(0-f,0-m);d=a.localToGlobal(e-f,h-m);e=a.localToGlobal(e-f,0-m);f=a.localToGlobal(0-f,h-m);b.x= Math.min(Math.min(Math.min(g.x,d.x),e.x),f.x);b.y=Math.min(Math.min(Math.min(g.y,d.y),e.y),f.y);b.width=Math.max(Math.max(Math.max(g.x,d.x),e.x),f.x)-b.x;b.height=Math.max(Math.max(Math.max(g.y,d.y),e.y),f.y)-b.y}return b}function NoClickDelay(a){this.element=a;window.Touch&&this.element.addEventListener("touchstart",this,!1)}function shuffle(a){for(var c=a.length,b,f;0=b;)a-=b;for(;0>a;)a+=b;return a},project:function(a,c,b,f,g){a.camera.x=-c;a.camera.y=a.world.y-b;a.camera.z=a.world.z-f;a.screen.scale= g/a.camera.z;a.screen.x=Math.round(HALF_CANVAS_WIDTH+a.screen.scale*a.camera.x*HALF_CANVAS_WIDTH);a.screen.y=Math.round(HALF_CANVAS_HEIGHT-a.screen.scale*a.camera.y*HALF_CANVAS_HEIGHT);a.screen.w=Math.round(a.screen.scale*ROAD_PER_HALF_CANVAS_WIDTH)},overlap:function(a,c,b,f,g){g=.5*(g||1);return!(a+c*gb+f*g)}}; function fullscreenHandler(){ENABLE_FULLSCREEN&&screenfull.isEnabled&&(s_bFullscreen=screenfull.isFullscreen,null!==s_oInterface&&s_oInterface.resetFullscreenBut(),null!==s_oWorldMenu&&s_oWorldMenu.resetFullscreenBut(),null!==s_oMenu&&s_oMenu.resetFullscreenBut())}if(screenfull.isEnabled)screenfull.on("change",function(){s_bFullscreen=screenfull.isFullscreen;null!==s_oInterface&&s_oInterface.resetFullscreenBut();null!==s_oWorldMenu&&s_oWorldMenu.resetFullscreenBut();null!==s_oMenu&&s_oMenu.resetFullscreenBut()}); function CSpriteLibrary(){var a={},c,b,f,g,e,d;this.init=function(a,m,k){c={};f=b=0;g=a;e=m;d=k};this.addSprite=function(d,e){if(a.hasOwnProperty(d))return!1;var h=new Image;a[d]=c[d]={szPath:e,oSprite:h,bLoaded:!1};b++;return!0};this.getSprite=function(d){return a.hasOwnProperty(d)?a[d].oSprite:null};this._onSpritesLoaded=function(){b=0;e.call(d)};this._onSpriteLoaded=function(){g.call(d);++f===b&&this._onSpritesLoaded()};this.loadSprites=function(){for(var a in c)c[a].oSprite.oSpriteLibrary=this, c[a].oSprite.szKey=a,c[a].oSprite.onload=function(){this.oSpriteLibrary.setLoaded(this.szKey);this.oSpriteLibrary._onSpriteLoaded(this.szKey)},c[a].oSprite.onerror=function(a){var d=a.currentTarget;setTimeout(function(){c[d.szKey].oSprite.src=c[d.szKey].szPath},500)},c[a].oSprite.src=c[a].szPath};this.setLoaded=function(d){a[d].bLoaded=!0};this.isLoaded=function(d){return a[d].bLoaded};this.getNumSprites=function(){return b}} var CANVAS_WIDTH=1600,CANVAS_HEIGHT=960,EDGEBOARD_X=256,EDGEBOARD_Y=100,FPS=60,FPS_DT=1/FPS,FPS_TIME=1E3/FPS,DISABLE_SOUND_MOBILE=!1,GAME_NAME="car_rush",PRIMARY_FONT="ArialBold",SECONDARY_FONT="Digital",PRIMARY_FONT_COLOUR="#000000",STATE_LOADING=0,STATE_MENU=1,STATE_HELP=1,STATE_GAME=3,ON_MOUSE_DOWN=0,ON_MOUSE_UP=1,ON_MOUSE_OVER=2,ON_MOUSE_OUT=3,ON_DRAG_START=4,ON_DRAG_END=5,STATE_GAME_START=0,STATE_GAME_RACE=1,STATE_GAME_END=2,KEY_UP=38,KEY_DOWN=40,KEY_RIGHT=39,KEY_LEFT=37,KEY_SPACE=32,NUM_WORLDS= 3,NUM_TRACKS_PER_WORLD=3,START_COUNTDOWN=3E3,FOV=100,CAMERA_HEIGHT=1E3,CAMERA_DEPTH=1/Math.tan(FOV/2*Math.PI/180),PLAYER_Z_FROMCAMERA=CAMERA_HEIGHT*CAMERA_DEPTH,CAR_SIDEVIEW_OFFSET=.2,CAR_FARVIEW_OFFSET=2600,CAR_CURVEVIEW_OFFSET=.4,PARALLAX_RATIO_X=2,PARALLAX_RATIO_Y_0=.004,PARALLAX_RATIO_Y_1=.005,PLAYER_MAX_SPEED,PLAYER_ACCELERATION,PLAYER_DECELERATION,PLAYER_REAL_MAX_SPEED,CENTRIFUGAL_FORCE=.3,PLAYER_COLLIDER_WIDTH=.22,PLAYER_MIN_SPEED_DAMAGE,TERRAIN_MAX_INERTIA=.03,TERRAIN_INCREASE_INERTIA=.005, TERRAIN_DECREASE_INERTIA=.002,TERRAIN_ADHERENCE=1,DRAW_DISTANCE=300,ROAD_WIDTH=2E3,NUM_LANES=4,SEGMENT_LENGTH=200,RUMBLE_LENGTH=3,TRACK_LENGTH,ROAD_BOUNDS=2,FOG_DENSITY=5,ROAD={TYPE:{STANDARD:0,CURVE_S:1,BUMPS:2,FINAL:3},LENGTH:{NONE:0,SHORT:25,MEDIUM:50,LONG:100,EXTRALONG:200},HILL:{NONE:0,LOW:20,MEDIUM:40,HIGH:60,VERYHIGH:80},CURVE:{NONE:0,EASY:2,MEDIUM:4,HARD:6,VERYHARD:8}},AMBIENT={DISPOSITION:{PRECISE:0,DENSITY:1},SIDE:{LEFT:-1,RIGHT:1,BOTH:2}},COLORS={LIGHT:{road:"#6B6B6B",grass:"#96a54b",rumble:"#555555", lane:"#CCCCCC"},DARK:{road:"#696969",grass:"#7e8b3e",rumble:"#BBBBBB"},START:{road:"white",grass:"white",rumble:"white"},FINISH:{road:"black",grass:"black",rumble:"black"}},SPRITES={TREE1:{name:"tree1",collision:{center:240,width:70}},TREE2:{name:"tree2",collision:{center:170,width:140}},DEAD_TREE:{name:"dead_tree",collision:{center:90,width:15}},BUSH1:{name:"bush1",collision:{width:50}},BUSH2:{name:"bush2",collision:{width:50}},STUMP:{name:"stump",collision:{width:70}},PALM_TREE:{name:"palm_tree", collision:{center:156,width:6}},COLUMN:{name:"column"},CACTUS1:{name:"cactus1",collision:{width:100}},CACTUS2:{name:"cactus2",collision:{center:48,width:70}},SIGN_CURVE_RIGHT:{name:"sign_curve_right"},SIGN_CURVE_LEFT:{name:"sign_curve_left"},SIGN_INDICATION:{name:"sign_indication"},LAMP_LEFT:{name:"lamp_left",collision:{center:5,width:1}},LAMP_RIGHT:{name:"lamp_right",collision:{center:75,width:1}},HOUSE1:{name:"house1",collision:{width:300}},HOUSE2:{name:"house2",collision:{width:300}},BILLBOARD01:{name:"billboard01"}, BILLBOARD02:{name:"billboard02"},BILLBOARD03:{name:"billboard03"},BILLBOARD04:{name:"billboard04"},BILLBOARD05:{name:"billboard05"},BOULDER:{name:"boulder",collision:{width:600}},SEMI:{name:"semi"},BUS:{name:"bus"},CAR01:{name:"car01"},CAR02:{name:"car02"},CAR03:{name:"car03"},SCALE:.00375};SPRITES.BILLBOARDS=[SPRITES.BILLBOARD01.name,SPRITES.BILLBOARD02.name,SPRITES.BILLBOARD03.name,SPRITES.BILLBOARD04.name,SPRITES.BILLBOARD05.name]; SPRITES.PLANTS=[SPRITES.TREE1.name,SPRITES.TREE2.name,SPRITES.DEAD_TREE.name,SPRITES.PALM_TREE.name,SPRITES.BUSH1.name,SPRITES.BUSH2.name,SPRITES.CACTUS1.name,SPRITES.STUMP.name,SPRITES.BOULDER.name];SPRITES.CARS=[SPRITES.CAR01.name,SPRITES.CAR02.name,SPRITES.CAR03.name,SPRITES.SEMI.name,SPRITES.BUS.name]; var HALF_CANVAS_WIDTH=CANVAS_WIDTH/2,HALF_CANVAS_HEIGHT=CANVAS_HEIGHT/2,ROAD_PER_HALF_CANVAS_WIDTH=HALF_CANVAS_WIDTH*ROAD_WIDTH,ROAD_PER_SCALE_PER_HALF_CANVAS_WIDTH=SPRITES.SCALE*ROAD_PER_HALF_CANVAS_WIDTH,PLAYER_SPEED_CONVERSION_RATIO=PLAYER_REAL_MAX_SPEED/PLAYER_MAX_SPEED,ENABLE_FULLSCREEN,ENABLE_CHECK_ORIENTATION,SOUNDTRACK_VOLUME_IN_GAME=.5,POINTS_PER_SECONDS,AD_SHOW_COUNTER;TEXT_PRELOADER_CONTINUE="START";TEXT_GAMEOVER="CONGRATULATIONS! YOU COMPLETED ALL TRACKS!";TEXT_TIME_IS_UP="TIME IS UP!"; TEXT_SCORE="SCORE";TEXT_GO="GO!";TEXT_SPEED_INDICATOR="Km/h";TEXT_SAVE_REMOVE="THIS WILL REMOVE ALL YOUR ACHIEVEMENTS! DO YOU WANT TO PROCEED?";TEXT_ARE_SURE="ARE YOU SURE?";TEXT_TRACK_COMPLETED="TRACK COMPLETED";TEXT_SELECT_WORLD="SELECT THE WORLD YOU WANT TO PLAY";TEXT_SELECT_TRACK="SELECT TRACK";TEXT_HELP1="USE ARROW KEY TO MOVE THE CAR: UP FOR ACCELERATION AND DOWN FOR BRAKE";TEXT_HELP1_MOBILE="USE BUTTONS TO MOVE THE CAR";TEXT_HELP2="REACH THE END, BEFORE TIME GOES UP";TEXT_DEVELOPED="DEVELOPED BY"; TEXT_IOS_PRIVATE='Your web browser does not support storing settings locally. In Safari, the most common cause of this is using "Private Browsing Mode". Some info may not save or some features may not work properly';TEXT_SHARE_IMAGE="200x200.jpg";TEXT_SHARE_TITLE="Congratulations!";TEXT_SHARE_MSG1="You collected ";TEXT_SHARE_MSG2=" points!

Share your score with your friends!";TEXT_SHARE_SHARE1="My score is ";TEXT_SHARE_SHARE2=" points! Can you do better"; function CPreloader(){var a,c,b,f,g,e,d,h,m,k;this._init=function(){s_oSpriteLibrary.init(this._onImagesLoaded,this._onAllImagesLoaded,this);s_oSpriteLibrary.addSprite("progress_bar","./sprites/progress_bar.png");s_oSpriteLibrary.addSprite("200x200","./sprites/200x200.jpg");s_oSpriteLibrary.addSprite("but_start","./sprites/but_start.png");s_oSpriteLibrary.loadSprites();k=new createjs.Container;s_oStage.addChild(k)};this.unload=function(){k.removeAllChildren();m.unload()};this._onImagesLoaded=function(){}; this._onAllImagesLoaded=function(){this.attachSprites();s_oMain.preloaderReady()};this.attachSprites=function(){var r=new createjs.Shape;r.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);k.addChild(r);r=s_oSpriteLibrary.getSprite("200x200");d=createBitmap(r);d.regX=.5*r.width;d.regY=.5*r.height;d.x=CANVAS_WIDTH/2;d.y=CANVAS_HEIGHT/2-180;k.addChild(d);h=new createjs.Shape;h.graphics.beginFill("rgba(0,0,0,0.01)").drawRoundRect(d.x-100,d.y-100,200,200,10);k.addChild(h);d.mask=h; r=s_oSpriteLibrary.getSprite("progress_bar");f=createBitmap(r);f.x=CANVAS_WIDTH/2-r.width/2;f.y=CANVAS_HEIGHT/2+50;k.addChild(f);a=r.width;c=r.height;g=new createjs.Shape;g.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x,f.y,1,c);k.addChild(g);f.mask=g;b=new createjs.Text("","30px "+PRIMARY_FONT,"#FFF");b.x=CANVAS_WIDTH/2;b.y=CANVAS_HEIGHT/2+100;b.textBaseline="alphabetic";b.textAlign="center";k.addChild(b);r=s_oSpriteLibrary.getSprite("but_start");m=new CTextButton(CANVAS_WIDTH/2,CANVAS_HEIGHT/ 2,r,TEXT_PRELOADER_CONTINUE,"Arial","#000","bold 50",k);m.addEventListener(ON_MOUSE_UP,this._onButStartRelease,this);m.setVisible(!1);e=new createjs.Shape;e.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);k.addChild(e);createjs.Tween.get(e).to({alpha:0},500).call(function(){createjs.Tween.removeTweens(e);k.removeChild(e)})};this._onButStartRelease=function(){s_oMain._onRemovePreloader()};this.refreshLoader=function(d){b.text=d+"%";100===d&&(s_oMain._onRemovePreloader(),b.visible= !1,f.visible=!1);g.graphics.clear();d=Math.floor(d*a/100);g.graphics.beginFill("rgba(0,0,0,0.01)").drawRect(f.x,f.y,d,c)};this._init()} function CMain(a){var c,b=0,f=0,g=STATE_LOADING,e,d;this.initContainer=function(){s_oCanvas=document.getElementById("canvas");s_oStage=new createjs.Stage(s_oCanvas);s_oStage.preventSelection=!1;createjs.Touch.enable(s_oStage);s_bMobile=isMobile();!1===s_bMobile&&(s_oStage.enableMouseOver(20),$("body").on("contextmenu","#canvas",function(a){return!1}));s_iPrevTime=(new Date).getTime();createjs.Ticker.addEventListener("tick",this._update);createjs.Ticker.framerate=FPS;navigator.userAgent.match(/Windows Phone/i)&& (DISABLE_SOUND_MOBILE=!0);s_oSpriteLibrary=new CSpriteLibrary;e=new CPreloader;s_oLocalStorage=new CLocalStorage(GAME_NAME)};this.preloaderReady=function(){this._loadImages();!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||this._initSounds();c=!0};this.soundLoaded=function(){b++;e.refreshLoader(Math.floor(b/f*100))};this._initSounds=function(){Howler.mute(!s_bAudioActive);s_aSoundsInfo=[];s_aSoundsInfo.push({path:"./sounds/",filename:"menu_soundtrack",loop:!0,volume:1,ingamename:"menu_soundtrack"});s_aSoundsInfo.push({path:"./sounds/", filename:"game_soundtrack",loop:!0,volume:1,ingamename:"game_soundtrack"});s_aSoundsInfo.push({path:"./sounds/",filename:"press_button",loop:!1,volume:1,ingamename:"click"});s_aSoundsInfo.push({path:"./sounds/",filename:"1",loop:!1,volume:1,ingamename:"1"});s_aSoundsInfo.push({path:"./sounds/",filename:"2",loop:!1,volume:1,ingamename:"2"});s_aSoundsInfo.push({path:"./sounds/",filename:"3",loop:!1,volume:1,ingamename:"3"});s_aSoundsInfo.push({path:"./sounds/",filename:"go",loop:!1,volume:1,ingamename:"go"}); s_aSoundsInfo.push({path:"./sounds/",filename:"arrive_lose",loop:!1,volume:1,ingamename:"arrive_lose"});s_aSoundsInfo.push({path:"./sounds/",filename:"arrive_win",loop:!1,volume:1,ingamename:"arrive_win"});s_aSoundsInfo.push({path:"./sounds/",filename:"sprint_start",loop:!1,volume:1,ingamename:"sprint_start"});s_aSoundsInfo.push({path:"./sounds/",filename:"crash",loop:!1,volume:1,ingamename:"crash"});s_aSoundsInfo.push({path:"./sounds/",filename:"brake",loop:!1,volume:1,ingamename:"brake"});s_aSoundsInfo.push({path:"./sounds/", filename:"engine",loop:!0,volume:1,ingamename:"engine"});s_aSoundsInfo.push({path:"./sounds/",filename:"engine_stall",loop:!0,volume:1,ingamename:"engine_stall"});s_aSoundsInfo.push({path:"./sounds/",filename:"engine_reverse",loop:!0,volume:1,ingamename:"engine_reverse"});f+=s_aSoundsInfo.length;s_aSounds=[];for(var a=0;a=a;a++)s_oSpriteLibrary.addSprite("billboard0"+a,"./sprites/elements/billboard0"+a+".png");s_oSpriteLibrary.addSprite("boulder","./sprites/elements/boulder.png");s_oSpriteLibrary.addSprite("finish","./sprites/elements/finish.png");s_oSpriteLibrary.addSprite("bush1","./sprites/elements/world_0/bush1.png");s_oSpriteLibrary.addSprite("bush2","./sprites/elements/world_0/bush2.png");s_oSpriteLibrary.addSprite("dead_tree", "./sprites/elements/world_0/dead_tree.png");s_oSpriteLibrary.addSprite("stump","./sprites/elements/world_0/stump.png");s_oSpriteLibrary.addSprite("tree1","./sprites/elements/world_0/tree1.png");s_oSpriteLibrary.addSprite("tree2","./sprites/elements/world_0/tree2.png");s_oSpriteLibrary.addSprite("cactus1","./sprites/elements/world_1/cactus1.png");s_oSpriteLibrary.addSprite("cactus2","./sprites/elements/world_1/cactus2.png");s_oSpriteLibrary.addSprite("palm_tree","./sprites/elements/world_1/palm_tree.png"); s_oSpriteLibrary.addSprite("column","./sprites/elements/world_1/column.png");s_oSpriteLibrary.addSprite("sign_curve_left","./sprites/elements/world_2/sign_curve_left.png");s_oSpriteLibrary.addSprite("sign_curve_right","./sprites/elements/world_2/sign_curve_right.png");s_oSpriteLibrary.addSprite("sign_indication","./sprites/elements/world_2/sign_indication.png");s_oSpriteLibrary.addSprite("lamp_left","./sprites/elements/world_2/lamp_left.png");s_oSpriteLibrary.addSprite("lamp_right","./sprites/elements/world_2/lamp_right.png"); s_oSpriteLibrary.addSprite("house1","./sprites/elements/world_2/house1.png");s_oSpriteLibrary.addSprite("house2","./sprites/elements/world_2/house2.png");for(a=1;3>=a;a++)s_oSpriteLibrary.addSprite("car0"+a+"_center","./sprites/cars/car0"+a+"/car0"+a+"_center.png"),s_oSpriteLibrary.addSprite("car0"+a+"_left","./sprites/cars/car0"+a+"/car0"+a+"_left.png"),s_oSpriteLibrary.addSprite("car0"+a+"_right","./sprites/cars/car0"+a+"/car0"+a+"_right.png");s_oSpriteLibrary.addSprite("semi_center","./sprites/cars/semi/semi_center.png"); s_oSpriteLibrary.addSprite("semi_left","./sprites/cars/semi/semi_left.png");s_oSpriteLibrary.addSprite("semi_right","./sprites/cars/semi/semi_right.png");s_oSpriteLibrary.addSprite("bus_center","./sprites/cars/bus/bus_center.png");s_oSpriteLibrary.addSprite("bus_left","./sprites/cars/bus/bus_left.png");s_oSpriteLibrary.addSprite("bus_right","./sprites/cars/bus/bus_right.png");s_oSpriteLibrary.addSprite("player","./sprites/player.png");f+=s_oSpriteLibrary.getNumSprites();s_oSpriteLibrary.loadSprites()}; this._onImagesLoaded=function(){b++;e.refreshLoader(Math.floor(b/f*100))};this._onRemovePreloader=function(){e.unload();playSound("menu_soundtrack",1,!0);this.gotoMenu()};this._onAllImagesLoaded=function(){};this.onAllPreloaderImagesLoaded=function(){this._loadImages()};this.gotoMenu=function(){new CMenu;g=STATE_MENU};this.gotoWorldMenu=function(){new CWorldMenu;g=STATE_MENU};this.gotoGame=function(a){d=new CGame(h,a);g=STATE_GAME};this.gotoHelp=function(){new CHelp;g=STATE_HELP};this.stopUpdate= function(){c=!1;createjs.Ticker.paused=!0;$("#block_game").css("display","block");Howler.mute(!0)};this.startUpdate=function(){s_iPrevTime=(new Date).getTime();c=!0;createjs.Ticker.paused=!1;$("#block_game").css("display","none");s_bAudioActive&&Howler.mute(!1)};this._update=function(a){if(!1!==c){var b=(new Date).getTime();s_iTimeElaps=b-s_iPrevTime;s_iCntTime+=s_iTimeElaps;s_iCntFps++;s_iPrevTime=b;1E3<=s_iCntTime&&(s_iCurFps=s_iCntFps,s_iCntTime-=1E3,s_iCntFps=0);s_oStage.update(a);g===STATE_GAME&& d.update()}};s_oMain=this;var h=a;ENABLE_FULLSCREEN=a.fullscreen;ENABLE_CHECK_ORIENTATION=a.check_orientation;s_bAudioActive=a.audio_enable_on_startup;this.initContainer()}var s_bMobile,s_bAudioActive=!0,s_iCntTime=0,s_iTimeElaps=0,s_iPrevTime=0,s_iCntFps=0,s_iCurFps=1/FPS_DT,s_bFullscreen=!1,s_oDrawLayer,s_oStage,s_oMain,s_oSpriteLibrary,s_oSoundTrack,s_oCanvas,s_oLocalStorage,s_aSounds=[],s_aSoundsInfo; function CCreditsPanel(){var a,c,b,f,g;this._init=function(){c=new createjs.Shape;c.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);c.alpha=0;c.on("click",function(){});s_oStage.addChild(c);(new createjs.Tween.get(c)).to({alpha:.7},500);b=new createjs.Container;s_oStage.addChild(b);var e=s_oSpriteLibrary.getSprite("msg_box"),d=createBitmap(e);d.regX=e.width/2;d.regY=e.height/2;b.addChild(d);b.x=CANVAS_WIDTH/2;b.y=CANVAS_HEIGHT+e.height/2+50;a=b.y;(new createjs.Tween.get(b)).to({y:CANVAS_HEIGHT/ 2-40},500,createjs.Ease.quartIn);d=new createjs.Text(TEXT_DEVELOPED," 40px "+PRIMARY_FONT,"#ffffff");d.y=-e.height/2+110;d.textAlign="center";d.textBaseline="middle";d.lineWidth=400;b.addChild(d);e=new createjs.Text("WebOas.is"," 40px "+PRIMARY_FONT,"#ffffff");e.y=90;e.textAlign="center";e.textBaseline="middle";e.lineWidth=400;b.addChild(e);e=s_oSpriteLibrary.getSprite("ctl_logo");g=createBitmap(e);g.on("click",this._onLogoButRelease);g.regX=e.width/2;g.regY=e.height/2;b.addChild(g);e=s_oSpriteLibrary.getSprite("but_exit"); f=new CGfxButton(326,-200,e,b);f.addEventListener(ON_MOUSE_UP,this.unload,this)};this.unload=function(){f.setClickable(!1);(new createjs.Tween.get(c)).to({alpha:0},500);(new createjs.Tween.get(b)).to({y:a},400,createjs.Ease.backIn).call(function(){s_oStage.removeChild(c);s_oStage.removeChild(b);f.unload()});c.removeAllEventListeners();g.removeAllEventListeners()};this._onLogoButRelease=function(){window.open("https://WebOas.is")};this._init()} function CTextButton(a,c,b,f,g,e,d){var h,m,k,r,l,n,q;this._init=function(a,d,b,e,c,f,g){h=[];m=[];var k=createBitmap(b),r=Math.ceil(g/20);q=new createjs.Text(e,g+"px "+c,"#000000");q.textAlign="center";q.textBaseline="alphabetic";var t=q.getBounds();q.x=b.width/2+r;q.y=Math.floor(b.height/2)+t.height/3+r;n=new createjs.Text(e,g+"px "+c,f);n.textAlign="center";n.textBaseline="alphabetic";t=n.getBounds();n.x=b.width/2;n.y=Math.floor(b.height/2)+t.height/3;l=new createjs.Container;l.x=a;l.y=d;l.regX= b.width/2;l.regY=b.height/2;l.addChild(k,q,n);s_oStage.addChild(l);this._initListener()};this.unload=function(){l.off("mousedown",k);l.off("pressup",r);s_oStage.removeChild(l)};this.setVisible=function(a){l.visible=a};this._initListener=function(){k=l.on("mousedown",this.buttonDown);r=l.on("pressup",this.buttonRelease)};this.addEventListener=function(a,d,b){h[a]=d;m[a]=b};this.buttonRelease=function(){l.scaleX=1;l.scaleY=1;h[ON_MOUSE_UP]&&h[ON_MOUSE_UP].call(m[ON_MOUSE_UP])};this.buttonDown=function(){l.scaleX= .9;l.scaleY=.9;h[ON_MOUSE_DOWN]&&h[ON_MOUSE_DOWN].call(m[ON_MOUSE_DOWN])};this.setTextPosition=function(a){n.y=a;q.y=a+2};this.setPosition=function(a,d){l.x=a;l.y=d};this.setX=function(a){l.x=a};this.setY=function(a){l.y=a};this.getButtonImage=function(){return l};this.getX=function(){return l.x};this.getY=function(){return l.y};this._init(a,c,b,f,g,e,d);return this} function CToggle(a,c,b,f){var g,e,d,h,m,k;this._init=function(a,b,h,c){e=[];d=[];var f=new createjs.SpriteSheet({images:[h],frames:{width:h.width/2,height:h.height,regX:h.width/2/2,regY:h.height/2},animations:{state_true:[0],state_false:[1]}});g=c;k=createSprite(f,"state_"+g,h.width/2/2,h.height/2,h.width/2,h.height);k.x=a;k.y=b;k.stop();s_oStage.addChild(k);this._initListener()};this.unload=function(){k.off("mousedown",h);k.off("pressup",m);s_oStage.removeChild(k)};this._initListener=function(){h= k.on("mousedown",this.buttonDown);m=k.on("pressup",this.buttonRelease)};this.addEventListener=function(a,b,h){e[a]=b;d[a]=h};this.setActive=function(a){g=a;k.gotoAndStop("state_"+g)};this.buttonRelease=function(){k.scaleX=1;k.scaleY=1;playSound("click",1,!1);g=!g;k.gotoAndStop("state_"+g);e[ON_MOUSE_UP]&&e[ON_MOUSE_UP].call(d[ON_MOUSE_UP],g)};this.buttonDown=function(){k.scaleX=.9;k.scaleY=.9;e[ON_MOUSE_DOWN]&&e[ON_MOUSE_DOWN].call(d[ON_MOUSE_DOWN])};this.setPosition=function(a,d){k.x=a;k.y=d};this._init(a, c,b,f)} function CGfxButton(a,c,b,f){var g,e,d,h,m=[],k,r,l,n;this._init=function(a,b,c,f){g=!1;e=1;d=[];h=[];n=createBitmap(c);n.x=a;n.y=b;n.scaleX=n.scaleY=e;n.regX=c.width/2;n.regY=c.height/2;f.addChild(n);this._initListener()};this.unload=function(){n.off("mousedown",k);n.off("pressup",r);s_bMobile||n.off("mouseover",l);f.removeChild(n)};this.setVisible=function(a){n.visible=a};this.setClickable=function(a){g=!a};this._initListener=function(){k=n.on("mousedown",this.buttonDown);r=n.on("pressup",this.buttonRelease); s_bMobile||(l=n.on("mouseover",this.buttonOver))};this.addEventListener=function(a,b,e){d[a]=b;h[a]=e};this.addEventListenerWithParams=function(a,b,e,c){d[a]=b;h[a]=e;m=c};this.buttonRelease=function(){g||(n.scaleX=e,n.scaleY=e,d[ON_MOUSE_UP]&&d[ON_MOUSE_UP].call(h[ON_MOUSE_UP],m))};this.buttonDown=function(){g||(n.scaleX=.9*e,n.scaleY=.9*e,playSound("click",1,!1),d[ON_MOUSE_DOWN]&&d[ON_MOUSE_DOWN].call(h[ON_MOUSE_DOWN],m))};this.buttonOver=function(a){s_bMobile||g||(a.target.cursor="pointer")};this.pulseAnimation= function(){createjs.Tween.get(n).to({scaleX:1.1*e,scaleY:1.1*e},850,createjs.Ease.quadOut).to({scaleX:e,scaleY:e},650,createjs.Ease.quadIn).call(function(){q.pulseAnimation()})};this.trembleAnimation=function(){createjs.Tween.get(n).to({rotation:5},75,createjs.Ease.quadOut).to({rotation:-5},140,createjs.Ease.quadIn).to({rotation:0},75,createjs.Ease.quadIn).wait(750).call(function(){q.trebleAnimation()})};this.setPosition=function(a,d){n.x=a;n.y=d};this.setX=function(a){n.x=a};this.setY=function(a){n.y= a};this.getButtonImage=function(){return n};this.getX=function(){return n.x};this.getY=function(){return n.y};var q=this;this._init(a,c,b,f);return this} function CMenu(){var a,c,b,f,g,e,d,h,m,k,r,l,n,q,x,y=null,u=null;this._init=function(){m=createBitmap(s_oSpriteLibrary.getSprite("bg_menu"));s_oStage.addChild(m);var t=s_oSpriteLibrary.getSprite("but_play");k=new CGfxButton(CANVAS_WIDTH/2+350,CANVAS_HEIGHT-220,t,s_oStage);k.addEventListener(ON_MOUSE_UP,this._onButPlayRelease,this);k.pulseAnimation();t=s_oSpriteLibrary.getSprite("logo_menu");var A=createBitmap(t);A.regX=t.width/2;A.regY=t.height/2;A.x=CANVAS_WIDTH/2;A.y=CANVAS_HEIGHT/2-150;s_oStage.addChild(A); t=s_oSpriteLibrary.getSprite("but_credits");g=t.width/2+12;e=t.height/2+16;n=new CGfxButton(g,e,t,s_oStage);n.addEventListener(ON_MOUSE_UP,this._onCreditsBut,this);A=CANVAS_WIDTH;if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)t=s_oSpriteLibrary.getSprite("audio_icon"),d=CANVAS_WIDTH-t.width/4-12,h=t.height/2+16,l=new CToggle(d,h,t,s_bAudioActive),l.addEventListener(ON_MOUSE_UP,this._onAudioToggle,this),A=d-t.width/4;s_oLocalStorage.isDirty()&&(t=s_oSpriteLibrary.getSprite("but_delete_saving"),a=A-t.width/ 2-12,c=t.height/2+16,x=new CGfxButton(a,c,t,s_oStage),x.addEventListener(ON_MOUSE_UP,this._onDeleteBut,this));t=window.document;A=t.documentElement;y=A.requestFullscreen||A.mozRequestFullScreen||A.webkitRequestFullScreen||A.msRequestFullscreen;u=t.exitFullscreen||t.mozCancelFullScreen||t.webkitExitFullscreen||t.msExitFullscreen;!1===ENABLE_FULLSCREEN&&(y=!1);y&&screenfull.isEnabled&&(t=s_oSpriteLibrary.getSprite("but_fullscreen"),b=g+t.width/2+12,f=t.height/2+16,q=new CToggle(b,f,t,s_bFullscreen, s_oStage),q.addEventListener(ON_MOUSE_UP,this._onFullscreenRelease,this));r=new createjs.Shape;r.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);s_oStage.addChild(r);createjs.Tween.get(r).to({alpha:0},1E3).call(function(){r.visible=!1});this.refreshButtonPos(s_iOffsetX,s_iOffsetY);s_oLocalStorage.isUsed()||new CMsgBox(TEXT_IOS_PRIVATE)};this.unload=function(){k.unload();k=null;r.visible=!1;n.unload();x&&s_oLocalStorage.isDirty()&&x.unload();if(!1===DISABLE_SOUND_MOBILE||!1=== s_bMobile)l.unload(),l=null;y&&screenfull.isEnabled&&q.unload();s_oStage.removeChild(m);s_oMenu=m=null};this.refreshButtonPos=function(k,m){!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||l.setPosition(d-k,m+h);n.setPosition(g+k,m+e);y&&screenfull.isEnabled&&q.setPosition(b+k,f+m);x&&s_oLocalStorage.isDirty()&&x.setPosition(a-k,c+m)};this.resetFullscreenBut=function(){y&&screenfull.isEnabled&&q.setActive(s_bFullscreen)};this._onFullscreenRelease=function(){s_bFullscreen?u.call(window.document):y.call(window.document.documentElement); sizeHandler()};this._onCreditsBut=function(){new CCreditsPanel};this._onAudioToggle=function(){Howler.mute(s_bAudioActive);s_bAudioActive=!s_bAudioActive};this._onDeleteBut=function(){(new CAreYouSurePanel(s_oMenu.deleteSavings)).changeMessage(TEXT_SAVE_REMOVE,24)};this.deleteSavings=function(){s_oLocalStorage.deleteData();s_oLocalStorage.resetData();x.unload()};this._onButPlayRelease=function(){this.unload();$(s_oMain).trigger("start_session");s_oMain.gotoWorldMenu()};s_oMenu=this;this._init()} var s_oMenu=null; function CGame(a,c){function b(a){a.preventDefault();s_oGame.onKeyUp(a.keyCode)}function f(a){a||(a=window.event);a.preventDefault();s_oGame.onKeyDown(a.keyCode)}var g,e,d,h,m,k,r,l,n,q,x,y=null,u,t,A,D,E,I;this._init=function(a){k=a;q=[];E=new CHorizon(k);A=new createjs.Shape;s_oStage.addChild(A);D=new createjs.Container;s_oStage.addChild(D);t=new CRoad(A,D,k);u=new CPlayer(CANVAS_WIDTH/2,980,s_oStage);q=t.getSegments();TRACK_LENGTH=t.getTrackLength();x=new CInterface;I=[];new CLevelBuilder(u,I, D,a);this.resetParams()};this.getWorldCameraPos=function(){var a=u.getPosition().z;a=this.findSegment(a);return q[a.index].p1.world};this.onKeyUp=function(a){if(g)switch(a){case KEY_LEFT:u.stopLeft();break;case KEY_UP:u.stopAccelerate();break;case KEY_RIGHT:u.stopRight();break;case KEY_DOWN:u.stopBrake()}};this.onKeyDown=function(a){if(g)switch(a){case KEY_LEFT:u.moveLeft();break;case KEY_UP:u.moveAccelerate();break;case KEY_RIGHT:u.moveRight();break;case KEY_DOWN:u.moveBrake()}};this.resetParams= function(){g=!1;stopSound(s_aSounds.game_soundtrack);if(0===k)new CHelpPanel;else{g=!0;stopSound(s_aSounds.menu_soundtrack);playSound("game_soundtrack",1,!0);$(s_oMain).trigger("start_level",k);var a=new createjs.Shape;a.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);a.alpha=1;s_oStage.addChild(a);(new createjs.Tween.get(a)).to({alpha:0},750).call(function(){s_oStage.removeChild(a)})}l=STATE_GAME_START;r=0;m=LEVEL_INFO[k].time;h=START_COUNTDOWN;E.restart();x.refreshTimer(m); x.refreshCurTime(0);var d=k%NUM_TRACKS_PER_WORLD;x.setLevelInfo(s_oSpriteLibrary.getSprite("but_world"+Math.floor(k/NUM_WORLDS)),d+1);s_aTimeScore[k]PLAYER_MIN_SPEED_DAMAGE&&!e&&(e=!0,u.damageAnim(),new CTremble(s_oStage,250,20,5))};this.endDamageTime=function(){e=!1};this.trackCompleted=function(){E.resetPos(); l!==STATE_GAME_END&&($(s_oMain).trigger("end_level",k),$(s_oMain).trigger("show_interlevel_ad"),l=STATE_GAME_END,s_oGame.stopPlayer(),r=Math.floor(m/1E3*POINTS_PER_SECONDS),new CNextLevelPanel(m,r,k))};this._countDown=function(){h-=s_iTimeElaps;x.refreshCountdown(h);0>=h&&(h=0,l=STATE_GAME_RACE,x.countDownGo())};this.nextLevel=function(){k++;km&&(m=0,this.trackLose());x.refreshTimer(m);x.refreshCurTime(LEVEL_INFO[k].time-m);u.update(a);break;case STATE_GAME_END:u.update(a),u.autoPilot()}x.refreshSpeed(u.getCurSpeed()*PLAYER_SPEED_CONVERSION_RATIO);t.update(u.getPosition()); E.move(this.getWorldCameraPos());for(var b=0;ba.getSpeed()&&Util.overlap(u.getPosition().x,u.getPlayerWidth(),a.getOffset(),b,.8)){this.checkDamage();u.setCurSpeed(a.getSpeed()*(a.getSpeed()/u.getCurSpeed()));u.setPosition(Util.increase(a.getZ(),-PLAYER_Z_FROMCAMERA,TRACK_LENGTH)); d=!0;u.stopEngineSound();break}};this.playerCollide=function(){return d};this.findSegment=function(a){return t.findSegment(a)};this.getSegments=function(){return q};s_oGame=this;PLAYER_MAX_SPEED=a.player_max_speed;PLAYER_ACCELERATION=PLAYER_MAX_SPEED/5;PLAYER_DECELERATION=PLAYER_MAX_SPEED/8;PLAYER_MIN_SPEED_DAMAGE=PLAYER_MAX_SPEED/3;PLAYER_REAL_MAX_SPEED=a.player_maxspeed_indicator;PLAYER_SPEED_CONVERSION_RATIO=PLAYER_REAL_MAX_SPEED/PLAYER_MAX_SPEED;CENTRIFUGAL_FORCE=a.player_centrifugal_force;POINTS_PER_SECONDS= a.points_per_seconds_remaining;this._init(c)}var s_oGame; function CInterface(){var a,c,b,f,g,e,d,h,m,k,r,l,n,q,x,y,u,t,A,D,E,I,O,V,U,J,H,Q,M,R,S,T,P,F,N=null,p=null;this._init=function(){var G,z=s_oSpriteLibrary.getSprite("but_exit");u=CANVAS_WIDTH-z.width/2-12;t=z.height/2+16;D=new CGfxButton(u,t,z,s_oStage);D.addEventListener(ON_MOUSE_UP,this._onExit,this);x=G=u-z.width-12;y=z.height/2+16;if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)z=s_oSpriteLibrary.getSprite("audio_icon"),A=new CToggle(x,y,z,s_bAudioActive),A.addEventListener(ON_MOUSE_UP,this._onAudioToggle, this),G=x-z.width/2-12;z=window.document;var K=z.documentElement;N=K.requestFullscreen||K.mozRequestFullScreen||K.webkitRequestFullScreen||K.msRequestFullscreen;p=z.exitFullscreen||z.mozCancelFullScreen||z.webkitExitFullscreen||z.msExitFullscreen;!1===ENABLE_FULLSCREEN&&(N=!1);N&&screenfull.isEnabled&&(z=s_oSpriteLibrary.getSprite("but_fullscreen"),g=G,e=z.height/2+16,T=new CToggle(g,e,z,s_bFullscreen,s_oStage),T.addEventListener(ON_MOUSE_UP,this._onFullscreenRelease,this));b=12;f=16;E=new createjs.Container; s_oStage.addChild(E);z=s_oSpriteLibrary.getSprite("time_panel");G=createBitmap(z);E.addChild(G);O=new CTimer(110,50,E,50,"#ffffff","best_time","#000000");V=new CTimer(110,120,E,50,"#ffffff","timer","#000000");a=CANVAS_WIDTH/2;c=60;I=new CTimer(a,c,s_oStage,100,"#fff000",null,"#000000");I.resetTextRelativePos();I.setAlign("center","middle");U=new CTachometer(152,CANVAS_HEIGHT-12);J=new createjs.Text(""," 300px "+PRIMARY_FONT,"#3e240b");J.x=CANVAS_WIDTH/2;J.y=CANVAS_HEIGHT/2;J.textAlign="center";J.textBaseline= "middle";J.lineWidth=200;J.outline=20;s_oStage.addChild(J);H=new createjs.Text(""," 300px "+PRIMARY_FONT,"rgba(255,224,0,1)");H.x=CANVAS_WIDTH/2;H.y=CANVAS_HEIGHT/2;H.textAlign="center";H.textBaseline="middle";H.lineWidth=200;s_oStage.addChild(H);s_bMobile&&(G=CANVAS_HEIGHT-270,z=s_oSpriteLibrary.getSprite("key_up"),n=CANVAS_WIDTH-180+z.width/2,q=G,Q=new CGfxButton(n,q,z,s_oStage),Q.addEventListenerWithParams(ON_MOUSE_UP,s_oGame.onKeyUp,this,KEY_UP),Q.addEventListenerWithParams(ON_MOUSE_DOWN,s_oGame.onKeyDown, this,KEY_UP),z=s_oSpriteLibrary.getSprite("key_down"),r=CANVAS_WIDTH-180-z.width/2,l=G,M=new CGfxButton(r,l,z,s_oStage),M.addEventListenerWithParams(ON_MOUSE_UP,s_oGame.onKeyUp,this,KEY_DOWN),M.addEventListenerWithParams(ON_MOUSE_DOWN,s_oGame.onKeyDown,this,KEY_DOWN),z=s_oSpriteLibrary.getSprite("key_left"),m=180-z.width/2,k=G,R=new CGfxButton(m,k,z,s_oStage),R.addEventListenerWithParams(ON_MOUSE_UP,s_oGame.onKeyUp,this,KEY_LEFT),R.addEventListenerWithParams(ON_MOUSE_DOWN,s_oGame.onKeyDown,this,KEY_LEFT), z=s_oSpriteLibrary.getSprite("key_right"),d=180+z.width/2,h=G,S=new CGfxButton(d,h,z,s_oStage),S.addEventListenerWithParams(ON_MOUSE_UP,s_oGame.onKeyUp,this,KEY_RIGHT),S.addEventListenerWithParams(ON_MOUSE_DOWN,s_oGame.onKeyDown,this,KEY_RIGHT));F=[];for(G=0;3>=G;G++)F[G]=!1;this.refreshButtonPos(s_iOffsetX,s_iOffsetY)};this.unload=function(){if(!1===DISABLE_SOUND_MOBILE||!1===s_bMobile)A.unload(),A=null;N&&screenfull.isEnabled&&T.unload();D.unload();s_oInterface=null;s_bMobile&&(Q.unload(),M.unload(), R.unload(),S.unload())};this.refreshButtonPos=function(p,z){D.setPosition(u-p,z+t);!1!==DISABLE_SOUND_MOBILE&&!1!==s_bMobile||A.setPosition(x-p,z+y);N&&screenfull.isEnabled&&T.setPosition(g-p,e+z);E.x=b+p;E.y=f+z;s_bMobile&&(Q.setPosition(n-p,q-z),M.setPosition(r-p,l-z),R.setPosition(m+p,k-z),S.setPosition(d+p,h-z));I.setPos(a,c+z);U.updateOffset(p,z)};this.resetFullscreenBut=function(){N&&screenfull.isEnabled&&T.setActive(s_bFullscreen)};this._onFullscreenRelease=function(){s_bFullscreen?p.call(window.document): N.call(window.document.documentElement);sizeHandler()};this.refreshTimer=function(a){I.setIntTime(a)};this.setBestTime=function(a){O.setDecimalTime(a)};this.refreshCurTime=function(a){V.setDecimalTime(a)};this.refreshCountdown=function(a){var d=Math.ceil(a/1E3),b=(1E3*d-a)/1E3;H.alpha=1-b;H.scaleX=H.scaleY=b;H.text=Math.ceil(a/1E3);J.alpha=H.alpha;J.scaleX=J.scaleY=b;J.text=H.text;if(3===d&&!F[3])F[3]=!0,playSound("3",1,0);else if(2===d&&!F[2])F[2]=!0,playSound("2",1,0);else if(1===d&&!F[1])F[1]= !0,playSound("1",1,0);else if(0===d)for(F[0]=!0,playSound("go",1,0),a=0;a=a;a++)F[a]=!1;s_oGame.restartGame()};this.onExitFromHelp=function(){_oHelpPanel.unload()};this._onAudioToggle=function(){Howler.mute(s_bAudioActive);s_bAudioActive=!s_bAudioActive};this._onExit=function(){s_oGame.setPause();new CAreYouSurePanel(s_oGame.onExit,s_oGame.setResume)}; s_oInterface=this;this._init();return this}var s_oInterface=null; function CHelpPanel(){var a,c,b,f;this._init=function(){b=new createjs.Shape;b.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);b.alpha=1;b.on("mousedown",function(){g._onExitHelp()});s_oStage.addChild(b);(new createjs.Tween.get(b)).to({alpha:.7},500);f=new createjs.Container;f.on("pressup",function(){g._onExitHelp()});s_oStage.addChild(f);var e=s_oSpriteLibrary.getSprite("msg_box"),d=createBitmap(e);d.regX=e.width/2;d.regY=e.height/2;f.addChild(d);f.x=CANVAS_WIDTH/2;f.y=CANVAS_HEIGHT+ e.height/2;a=f.y;(new createjs.Tween.get(f)).to({y:CANVAS_HEIGHT/2-40},500,createjs.Ease.cubicOut);s_bMobile?(new CTLText(f,-250,-160,500,48,24,"center","#fff",PRIMARY_FONT,1,0,0,TEXT_HELP1_MOBILE,!0,!0,!0,!1),e=s_oSpriteLibrary.getSprite("key_left"),d=createBitmap(e),d.x=-170,d.y=-60,d.regX=e.width/2,d.regY=e.height/2,d.scaleX=d.scaleY=.7,f.addChild(d),e=s_oSpriteLibrary.getSprite("key_right"),d=createBitmap(e),d.x=-80,d.y=-60,d.regX=e.width/2,d.regY=e.height/2,d.scaleX=d.scaleY=.7,f.addChild(d), e=s_oSpriteLibrary.getSprite("key_down"),d=createBitmap(e),d.x=80,d.y=-60,d.regX=e.width/2,d.regY=e.height/2,d.scaleX=d.scaleY=.7,f.addChild(d),e=s_oSpriteLibrary.getSprite("key_up"),d=createBitmap(e),d.x=170,d.y=-60,d.regX=e.width/2,d.regY=e.height/2,d.scaleX=d.scaleY=.7):(new CTLText(f,-250,-150,300,120,24,"center","#fff",PRIMARY_FONT,1,0,0,TEXT_HELP1,!0,!0,!0,!1),e=s_oSpriteLibrary.getSprite("keys"),d=createBitmap(e),d.x=130,d.y=-100,d.regX=e.width/2,d.regY=e.height/2);f.addChild(d);new CTLText(f, 10,24,300,120,24,"left","#fff",PRIMARY_FONT,1,0,0,TEXT_HELP2,!0,!0,!0,!1);d=new createjs.Container;d.x=-130;d.y=130;d.scaleX=d.scaleY=.3;f.addChild(d);e=s_oSpriteLibrary.getSprite("finish");var h=createBitmap(e);h.regX=e.width/2;h.regY=e.height;d.addChild(h);new CPlayer(0,0,d)};this.unload=function(){s_oStage.removeChild(b);s_oStage.removeChild(f);f.off("pressup",function(){g._onExitHelp()});b.off("pressup",function(){g._onExitHelp()})};this._onExitHelp=function(){c||(c=!0,(new createjs.Tween.get(b)).to({alpha:0}, 500),(new createjs.Tween.get(f)).to({y:a},400,createjs.Ease.backIn).call(function(){g.unload();s_oGame._onExitHelp()}))};var g=this;this._init()} function CEndPanel(){var a,c,b;this._init=function(){setVolume(s_aSounds.game_soundtrack,SOUNDTRACK_VOLUME_IN_GAME);a=new createjs.Shape;a.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);a.alpha=0;a.on("mousedown",function(){});s_oStage.addChild(a);(new createjs.Tween.get(a)).to({alpha:.7},500);c=new createjs.Container;s_oStage.addChild(c);var f=s_oSpriteLibrary.getSprite("msg_box"),g=createBitmap(f);g.regX=f.width/2;g.regY=f.height/2;c.addChild(g);c.x=CANVAS_WIDTH/2;c.y=CANVAS_HEIGHT+ f.height/2;(new createjs.Tween.get(c)).to({y:CANVAS_HEIGHT/2},500,createjs.Ease.quartIn);new CTLText(c,-250,-f.height/2+40,500,120,40,"center","#fff",PRIMARY_FONT,1,0,0,TEXT_GAMEOVER,!0,!0,!0,!1);f=s_oSpriteLibrary.getSprite("finish");g=createBitmap(f);g.regX=f.width/2;g.regY=f.height;g.y=154;g.scaleX=g.scaleY=.6;c.addChild(g);f=s_oSpriteLibrary.getSprite("but_home");b=new CGfxButton(0,100,f,c);b.addEventListener(ON_MOUSE_UP,this._onHome,this);b.pulseAnimation()};this.unload=function(){s_oStage.removeChild(c); a.off("mousedown",function(){});b.unload()};this.show=function(){playSound("arrive_win",1,0);$(s_oMain).trigger("share_event",s_iTotalScore)};this._onHome=function(){a.off("mousedown",function(){});s_oStage.removeChild(c);s_oGame.onExit()};this._init();return this} function CPlayer(a,c,b){var f,g,e,d,h,m,k,r,l,n,q,x,y,u,t,A,D,E,I,O;this._init=function(a,d,b){this.reset();n=PLAYER_MAX_SPEED;q=PLAYER_ACCELERATION;x=-n;y=-PLAYER_DECELERATION;u=-n/2;t=n/4;var h=s_oSpriteLibrary.getSprite("baloon_mc");O=createBitmap(h);O.regX=h.width/2;O.regY=h.height/2;O.x=a;O.y=d-260;O.alpha=0;b.addChild(O);h=s_oSpriteLibrary.getSprite("player");var e=h.width/3,c=h.height;h=new createjs.SpriteSheet({images:[h],frames:{width:e,height:c,regX:e/2,regY:c},animations:{left:[0],right:[1], straight:[2]}});E=createSprite(h,"straight",e/2,c,e,c);E.x=a;E.y=d;b.addChild(E);A=PLAYER_COLLIDER_WIDTH};this.reset=function(){h=m=d=e=g=f=!1;D=l=r=k=0;I=s_oGame.findSegment(k+PLAYER_Z_FROMCAMERA)};this.setAcceleration=function(a){q=a};this.setMaxSpeed=function(a){n=a;x=-n;y=-PLAYER_DECELERATION;u=-n/2;t=n/4};this.stopAll=function(){this.stopLeft();this.stopRight();this.stopAccelerate()};this.stopLeft=function(){f&&(f=!1,E.gotoAndStop("straight"),stopSound(s_aSounds.brake))};this.stopRight=function(){g&& (g=!1,E.gotoAndStop("straight"),stopSound(s_aSounds.brake))};this.stopAccelerate=function(){e=!1;stopSound(s_aSounds.engine)};this.stopBrake=function(){d=!1};this.moveLeft=function(){0!==l&&(soundPlaying(s_aSounds.brake)||playSound("brake",.5,!1),g=!1,f=!0,E.gotoAndStop("left"))};this.moveRight=function(){0!==l&&(soundPlaying(s_aSounds.brake)||playSound("brake",.5,!1),f=!1,g=!0,E.gotoAndStop("right"))};this.moveAccelerate=function(){d=!1;e=!0};this.moveBrake=function(){e=!1;d=!0};this._increase=function(a, d,b){for(a+=d;a>=b;)a-=b,s_oGame.trackCompleted();for(;0>a;)a+=b;return a};this._accelerate=function(a,d,b){return a+d*b};this._limit=function(a,d,b){return Math.max(d,Math.min(a,b))};this.getPlayerWidth=function(){return A};this.getPosition=function(){return{x:r,z:k}};this.setPosition=function(a){k=a};this.autoPilot=function(){.5r?(g=!0,f=!1):.1>=r&&-.1<=r&&(g=f=!1)};this.getMaxSpeed=function(){return n};this.getCurSpeed=function(){return l};this.setCurSpeed=function(a){l=a};this.getPlayerSegment= function(){return I};this.getFrontPlayerSegment=function(){return s_oGame.findSegment(k+SEGMENT_LENGTH+PLAYER_Z_FROMCAMERA)};this.damageAnim=function(){m||(m=!0,playSound("crash",1,!1),createjs.Tween.get(O,{override:!0}).to({alpha:1},250,createjs.Ease.cubicOut).to({alpha:0},250,createjs.Ease.cubicIn).call(function(){m=!1}))};this.isOutOfRoad=function(){return h};this.stopEngineSound=function(){stopSound(s_aSounds.engine);stopSound(s_aSounds.engine_stall)};this._updateXMovement=function(a,d){var b= a*d*d*I.curve*CENTRIFUGAL_FORCE/TERRAIN_ADHERENCE;f?(D-=TERRAIN_INCREASE_INERTIA*d,D<-TERRAIN_MAX_INERTIA&&(D=-TERRAIN_MAX_INERTIA),r=r-b-a):g?(D+=TERRAIN_INCREASE_INERTIA*d,D>TERRAIN_MAX_INERTIA&&(D=TERRAIN_MAX_INERTIA),r=r-b+a):r=r-b+D;0D&&(D=0)):0>D&&(D+=TERRAIN_DECREASE_INERTIA,0r||1t&&(l=this._accelerate(l,u,a)),h=!0;r=this._limit(r,-ROAD_BOUNDS,ROAD_BOUNDS);l=this._limit(l, 0,n)};this._init(a,c,b)} var Render={polygon:function(a,c,b,f,g,e,d,h,m,k){a.graphics.beginFill(k);a.graphics.moveTo(c,b);a.graphics.lineTo(f,g);a.graphics.lineTo(e,d);a.graphics.lineTo(h,m)},segment:function(a,c,b,f,g,e,d,h,m,k){var r=Render.rumbleWidth(e,b),l=Render.rumbleWidth(m,b),n=Render.laneMarkerWidth(e,b),q=Render.laneMarkerWidth(m,b);a.graphics.beginFill(k.grass);a.graphics.drawRect(0,h,c,g-h);Render.polygon(a,f-e-r,g,f-e,g,d-m,h,d-m-l,h,k.rumble);Render.polygon(a,f+e+r,g,f+e,g,d+m,h,d+m+l,h,k.rumble);Render.polygon(a, f-e,g,f+e,g,d+m,h,d-m,h,k.road);if(k.lane)for(c=2*e/b,r=2*m/b,f=f-e+c,d=d-m+r,m=1;m=k.p1.screen.y||k.p2.screen.y>=l||(Render.segment(a,CANVAS_WIDTH,NUM_LANES,k.p1.screen.x,k.p1.screen.y,k.p1.screen.w,k.p2.screen.x,k.p2.screen.y,k.p2.screen.w,k.color),l=k.p2.screen.y)}x=0;for(r=DRAW_DISTANCE-1;0CAR_FARVIEW_OFFSET?k.curve>-CAR_CURVEVIEW_OFFSET&&k.curve-CAR_SIDEVIEW_OFFSET&&l.getOffset()-bq.offset?-1:0,-1,k.clip)}d=(m.index-25)%e.length;if(0< d)for(b=0;25>b;b++){k=e[d+b];for(n=0;nDRAW_DISTANCE)return r.visible=!1,0;for(d=1;20>d;d++){var g=s_oGame.getSegments();var k=g[(a.index+d)%g.length];if(k===b.getPlayerSegment()&&h>b.getCurSpeed()&&Util.overlap(b.getPosition().x,b.getPlayerWidth(),e,f,1.2))return f=.5b.getPosition().x? 1:e>b.getPosition().x?1:-1,1*f/d*(h-b.getCurSpeed())/b.getMaxSpeed();for(c=0;cg.getSpeed()&&Util.overlap(e,f,g.getOffset(),l,1.2))return f=.5g.getOffset()?1:e>g.getOffset()?1:-1,1*f/d*(h-g.getSpeed())/b.getMaxSpeed()}}return-.9>e?.1:.9a;a++)f[a].setClickable();e.setClickable();var c=this;(new createjs.Tween.get(g)).to({alpha:0},500);(new createjs.Tween.get(d)).to({y:b},400,createjs.Ease.backIn).call(function(){c.unload()})};this._init(a,c)} function CLevelBut(a,c,b,f,g,e){var d,h,m,k,r=[],l,n,q,x,y=null,u=null,t;this._init=function(a,b,c,e){d=!1;h=1;m=[];k=[];l=new createjs.Container;l.x=a;l.y=b;l.scaleX=l.scaleY=h;e.addChild(l);n=new createjs.Container;n.x=a;n.y=b;n.scaleX=l.scaleY=h;e.addChild(n);a=c.width/2;b=c.height;c=new createjs.SpriteSheet({images:[c],frames:{width:a,height:b,regX:a/2,regY:b/2},animations:{on:[0],off:[1]}});t=createSprite(c,"on",a/2,b/2,a,b);l.addChild(t);f?t.gotoAndStop("on"):t.gotoAndStop("off");this._initListener()}; this.unload=function(){s_bMobile?l.off("mousedown",this.buttonDown):(l.off("mousedown",this.buttonDown),l.off("mouseover",this.buttonOver));l.off("pressup",this.buttonRelease);e.removeChild(l)};this.setVisible=function(a){l.visible=a};this.enable=function(){t.gotoAndStop("on");d=!1;null!==u&&(y.color="#000000",u.color="#ffffff")};this.disable=function(){d=!0;t.gotoAndStop("off");null!==u&&(y.color="#000000",u.color="#a8a8a8")};this.setClickable=function(a){d=!a};this.addInfo=function(a){q=new createjs.Text(a, " 24px "+PRIMARY_FONT,"#000000");q.x=b.height/2-24;q.y=-b.height/2+10;q.textAlign="center";q.textBaseline="middle";q.lineWidth=200;q.outline=4;q.rotation=30;l.addChild(q);x=new createjs.Text(a," 24px "+PRIMARY_FONT,"#ffffff");x.x=q.x;x.y=q.y;x.textAlign="center";x.textBaseline="middle";x.lineWidth=200;x.rotation=q.rotation;l.addChild(x)};this.addScore=function(a){var c=new createjs.Text(formatTime(a)," 30px "+PRIMARY_FONT,"#000000");c.y=b.height/2+12;c.textAlign="center";c.textBaseline="middle";c.lineWidth= 200;c.outline=4;n.addChild(c);a=new createjs.Text(formatTime(a)," 30px "+PRIMARY_FONT,"#ffffff");a.y=c.y;a.textAlign="center";a.textBaseline="middle";a.lineWidth=200;n.addChild(a)};this.addLevelText=function(a){y=new createjs.Text(a," 80px "+PRIMARY_FONT,"#000000");y.y=2;y.textAlign="center";y.textBaseline="middle";y.lineWidth=200;y.outline=8;l.addChild(y);u=new createjs.Text(a," 80px "+PRIMARY_FONT,"#ffd800");u.y=2;u.textAlign="center";u.textBaseline="middle";u.lineWidth=200;l.addChild(u)};this._initListener= function(){if(s_bMobile)l.on("mousedown",this.buttonDown);else l.on("mousedown",this.buttonDown),l.on("mouseover",this.buttonOver);l.on("pressup",this.buttonRelease)};this.addEventListener=function(a,b,c){m[a]=b;k[a]=c};this.addEventListenerWithParams=function(a,b,c,d){m[a]=b;k[a]=c;r=d};this.buttonRelease=function(){d||(l.scaleX=h,l.scaleY=h,m[ON_MOUSE_UP]&&m[ON_MOUSE_UP].call(k[ON_MOUSE_UP],r))};this.buttonDown=function(){d||(playSound("click",1,0),l.scaleX=.9*h,l.scaleY=.9*h,m[ON_MOUSE_DOWN]&& m[ON_MOUSE_DOWN].call(k[ON_MOUSE_DOWN],r))};this.buttonOver=function(a){s_bMobile||d||(a.target.cursor="pointer")};this.pulseAnimation=function(){createjs.Tween.get(l).to({scaleX:1.1*h,scaleY:1.1*h},850,createjs.Ease.quadOut).to({scaleX:h,scaleY:h},650,createjs.Ease.quadIn).call(function(){A.pulseAnimation()})};this.trembleAnimation=function(){createjs.Tween.get(l).to({rotation:5},75,createjs.Ease.quadOut).to({rotation:-5},140,createjs.Ease.quadIn).to({rotation:0},75,createjs.Ease.quadIn).wait(750).call(function(){A.trebleAnimation()})}; this.setImage=function(a){};this.setPosition=function(a,b){l.x=a;l.y=b};this.setScale=function(a){h=a;l.scaleX=l.scaleY=a};this.setX=function(a){l.x=a};this.setY=function(a){l.y=a};this.getButtonImage=function(){return l};this.getX=function(){return l.x};this.getY=function(){return l.y};var A=this;this._init(a,c,b,e);return this}var ROAD_INFO=[],AMBIENT_INFO=[],LEVEL_INFO=[]; ROAD_INFO[0]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM, curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.MEDIUM}]; LEVEL_INFO[0]={time:65E3,num_cars:10,terrain:{roadbounds:2,num_lanes:3,adherence:1,max_inertia:.03,color:{light:{road:"#6B6B6B",grass:"#96a54b",rumble:"#555555",lane:"#CCCCCC"},dark:{road:"#696969",grass:"#7e8b3e",rumble:"#BBBBBB"}}}}; AMBIENT_INFO[0]=[{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[0,800],position:0,occurrence:30,repetitionevery:1,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[800,1200],position:0,occurrence:30,repetitionevery:2,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BUSH1,segments:[1E3,1200],position:0,occurrence:10,repetitionevery:1,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BUSH1, segments:[1200,2E3],position:0,occurrence:10,repetitionevery:3,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BUSH2,segments:[1600,2600],position:0,occurrence:10,repetitionevery:3,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[1200,4E3],position:.5,occurrence:10,repetitionevery:3,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[2E3,4E3],position:.5,occurrence:30,repetitionevery:3, disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD03,segments:400,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:1200,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:[3E3,3200],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BOULDER,segments:1800,position:1,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[1]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.CURVE_S,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM, curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.CURVE_S,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM}];LEVEL_INFO[1]={time:7E4,num_cars:15,terrain:{roadbounds:2,num_lanes:3,adherence:1,max_inertia:.03,color:{light:{road:"#6B6B6B",grass:"#96a54b",rumble:"#555555",lane:"#CCCCCC"},dark:{road:"#696969",grass:"#7e8b3e",rumble:"#BBBBBB"}}}}; AMBIENT_INFO[1]=[{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.TREE2,segments:[0,450],position:0,occurrence:30,repetitionevery:2,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BUSH2,segments:[0,450],position:0,occurrence:30,repetitionevery:2,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BOULDER,segments:[0,450],position:0,occurrence:10,repetitionevery:3,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD02, segments:[350,450],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE2,segments:[450,1500],position:0,occurrence:40,repetitionevery:2,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BUSH2,segments:[450,1500],position:0,occurrence:30,repetitionevery:4,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD04,segments:[900,1200],position:0,repetitionevery:50,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD04,segments:[925,1225],position:0,repetitionevery:50,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE2,segments:[1500,3800],position:1,occurrence:20,repetitionevery:4,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[1500,2800],position:0,occurrence:10,repetitionevery:10,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.STUMP,segments:[1500, 2800],position:0,occurrence:10,repetitionevery:15,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.TREE1,segments:[2400,3200],position:0,occurrence:30,repetitionevery:5,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BUSH2,segments:[3200,3800],position:0,occurrence:20,repetitionevery:4,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD03,segments:1700,position:5,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:2E3,position:4,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD04,segments:2300,position:5,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD02,segments:2600,position:6,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD03,segments:2900,position:3,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD03, segments:3650,position:0,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[2]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.HARD}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG, curve:-ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.MEDIUM}];LEVEL_INFO[2]={time:7E4,num_cars:15,terrain:{roadbounds:2,num_lanes:3,adherence:1,max_inertia:.03,color:{light:{road:"#6B6B6B",grass:"#96a54b",rumble:"#555555",lane:"#CCCCCC"},dark:{road:"#696969",grass:"#7e8b3e",rumble:"#BBBBBB"}}}}; AMBIENT_INFO[2]=[{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.TREE2,segments:[0,700],position:0,occurrence:30,repetitionevery:3,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[0,1700],position:0,occurrence:30,repetitionevery:4,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BUSH1,segments:[480,1700],position:0,occurrence:30,repetitionevery:4,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1, segments:[1700,2300],position:0,occurrence:20,repetitionevery:5,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.DEAD_TREE,segments:[1700,2700],position:0,occurrence:40,repetitionevery:5,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.DEAD_TREE,segments:[2300,3700],position:0,occurrence:40,repetitionevery:5,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.TREE1,segments:[3400,3700],position:0,occurrence:20, repetitionevery:6,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[1500,3700],position:0,occurrence:10,repetitionevery:16,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD01,segments:[1700,2E3],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:[1725,2025],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT, sprite:SPRITES.BILLBOARD03,segments:1300,position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD05,segments:[2400,2800],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:[3100,3400],position:.5,repetitionevery:50,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD05,segments:2300,position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[3]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.EASY,hill:ROAD.HILL.LOW},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.EASY,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.MEDIUM,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG, curve:ROAD.CURVE.MEDIUM,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.LONG}];LEVEL_INFO[3]={time:73E3,num_cars:20,terrain:{roadbounds:2,num_lanes:2,adherence:.5,max_inertia:0,color:{light:{road:"#d5c95f",grass:"#f4e77a",rumble:"#a76b24",lane:"#a76b24"},dark:{road:"#dbce64",grass:"#ebde6f",rumble:"#a76b24"}}}}; AMBIENT_INFO[3]=[{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.PALM_TREE,segments:[0,800],position:0,repetitionevery:16,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.PALM_TREE,segments:[0,800],position:0,repetitionevery:13,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.PALM_TREE,segments:[800,1600],position:2,occurrence:20,repetitionevery:20,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.CACTUS1,segments:[1400, 2600],position:.5,occurrence:20,repetitionevery:5,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[0,2800],position:2,occurrence:10,repetitionevery:13,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01,segments:[2200,2500],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD02,segments:[2800,3200],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[4]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.BUMPS,length:ROAD.LENGTH.SHORT/2,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.BUMPS,length:ROAD.LENGTH.SHORT/2,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.CURVE_S,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.HARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.CURVE_S,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM, hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.LONG}];LEVEL_INFO[4]={time:78E3,num_cars:20,terrain:{roadbounds:2,num_lanes:2,adherence:.5,max_inertia:0,color:{light:{road:"#f4e77a",grass:"#f4e77a",rumble:"#a76b24",lane:"#a76b24"},dark:{road:"#ebde6f",grass:"#ebde6f",rumble:"#a76b24"}}}}; AMBIENT_INFO[4]=[{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[0,3900],position:2,occurrence:10,repetitionevery:20,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[0,3900],position:5,occurrence:5,repetitionevery:60,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD04,segments:770,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.COLUMN,segments:[780,1400],position:0, repetitionevery:14,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.CACTUS1,segments:[1800,3200],position:5,occurrence:30,repetitionevery:15,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD04,segments:1650,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD02,segments:2E3,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.CACTUS1,segments:[2400, 3600],position:0,occurrence:70,repetitionevery:15,disposition:AMBIENT.DISPOSITION.DENSITY}]; ROAD_INFO[5]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.HARD,hill:-ROAD.HILL.MEDIUM}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT/2,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.HARD,hill:ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.BUMPS,length:ROAD.LENGTH.SHORT/2},{roadtype:ROAD.TYPE.BUMPS,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.EASY}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.LONG}]; LEVEL_INFO[5]={time:6E4,num_cars:25,terrain:{roadbounds:2,num_lanes:2,adherence:.5,max_inertia:0,color:{light:{road:"#f4e77a",grass:"#f4e77a",rumble:"#a76b24",lane:"#a76b24"},dark:{road:"#ebde6f",grass:"#ebde6f",rumble:"#a76b24"}}}}; AMBIENT_INFO[5]=[{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD05,segments:20,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[0,3900],position:2,occurrence:10,repetitionevery:20,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BOULDER,segments:[0,3900],position:5,occurrence:5,repetitionevery:60,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.CACTUS2,segments:[40,1600],position:0, occurrence:70,repetitionevery:10,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.CACTUS2,segments:[1600,3900],position:1,occurrence:35,repetitionevery:20,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD03,segments:[1500,1700],position:0,repetitionevery:40,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD04,segments:[1525,1725],position:0,repetitionevery:40,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BOULDER,segments:[2200,2650],position:0,occurrence:70,repetitionevery:10,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BOULDER,segments:[2200,2650],position:0,occurrence:40,repetitionevery:8,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BOULDER,segments:[2200,2650],position:0,occurrence:30,repetitionevery:7,disposition:AMBIENT.DISPOSITION.DENSITY}]; ROAD_INFO[6]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.HARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.HARD,hill:-ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD, length:ROAD.LENGTH.MEDIUM,hill:-ROAD.HILL.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.LOW},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,hill:-ROAD.HILL.LOW},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.MEDIUM}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.LONG}];LEVEL_INFO[6]={time:9E4,num_cars:60,terrain:{roadbounds:2,num_lanes:4,adherence:1,max_inertia:.03,color:{light:{road:"#2a2a2a",grass:"#010e18",rumble:"#2a2a2a",lane:"#ffffff"},dark:{road:"#2a2a2a",grass:"#00080e",rumble:"#ffffff"}}}}; AMBIENT_INFO[6]=[{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE1,segments:[0,5E3],position:5,occurrence:20,repetitionevery:100,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_INDICATION,segments:[900,5E3],position:-1,repetitionevery:900,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[3845,3900],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT, segments:[2100,2550],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_CURVE_LEFT,segments:[2700,3150],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT,segments:[300,850],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.LAMP_RIGHT,segments:[300,850],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT,segments:[3950,4500],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.LAMP_RIGHT,segments:[3965,4500],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[7]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.HARD},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.HARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.HARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD, hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD, hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.VERYHARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.VERYHARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.LONG}]; LEVEL_INFO[7]={time:11E4,num_cars:70,terrain:{roadbounds:2,num_lanes:4,adherence:1,max_inertia:.03,color:{light:{road:"#2a2a2a",grass:"#010e18",rumble:"#2a2a2a",lane:"#ffffff"},dark:{road:"#2a2a2a",grass:"#00080e",rumble:"#ffffff"}}}}; AMBIENT_INFO[7]=[{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT,segments:[0,5E3],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.LAMP_RIGHT,segments:[15,5E3],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE1,segments:[50,5E3],position:5,occurrence:20,repetitionevery:100,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE2,segments:[0, 5E3],position:5,occurrence:20,repetitionevery:100,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_INDICATION,segments:[1100,5E3],position:-1,repetitionevery:1100,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD01,segments:[10,650],position:0,repetitionevery:60,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_CURVE_LEFT,segments:[3070,3270],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[3400,3570],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_CURVE_LEFT,segments:[3700,4100],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[4300,4700],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE}]; ROAD_INFO[8]=[{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.MEDIUM,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT, curve:ROAD.CURVE.HARD,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD, length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.MEDIUM,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:ROAD.CURVE.HARD,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.VERYHARD,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.EASY,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD, length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.VERYHARD,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:-ROAD.CURVE.EASY},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.HIGH}, {roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.HARD,hill:ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:-ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD, length:ROAD.LENGTH.SHORT,hill:-ROAD.HILL.HIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:-ROAD.CURVE.MEDIUM,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.LONG,curve:-ROAD.CURVE.HARD,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.VERYHARD,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.EXTRALONG,curve:ROAD.CURVE.VERYHARD, hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.SHORT,curve:ROAD.CURVE.EASY,hill:-ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.STANDARD,length:ROAD.LENGTH.MEDIUM,curve:ROAD.CURVE.VERYHARD,hill:ROAD.HILL.VERYHIGH},{roadtype:ROAD.TYPE.FINAL,length:ROAD.LENGTH.EXTRALONG}]; LEVEL_INFO[8]={time:13E4,num_cars:80,terrain:{roadbounds:4,num_lanes:4,adherence:1,max_inertia:.03,color:{light:{road:"#2a2a2a",grass:"#010e18",rumble:"#2a2a2a",lane:"#ffffff"},dark:{road:"#2a2a2a",grass:"#00080e",rumble:"#ffffff"}}}}; AMBIENT_INFO[8]=[{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE2,segments:[0,7E3],position:5,occurrence:20,repetitionevery:50,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE1,segments:[2500,3700],position:1,occurrence:40,repetitionevery:12,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.HOUSE2,segments:[2505,3700],position:1,occurrence:40,repetitionevery:12,disposition:AMBIENT.DISPOSITION.DENSITY},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT, segments:[0,2400],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.LAMP_RIGHT,segments:[15,2400],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD04,segments:2480,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT,segments:[2500,3680],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT, sprite:SPRITES.LAMP_RIGHT,segments:[2500,3680],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.BOTH,sprite:SPRITES.BILLBOARD04,segments:3700,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.LAMP_LEFT,segments:[3750,6570],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.LAMP_RIGHT,segments:[3765,6585],position:0,repetitionevery:30,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_INDICATION,segments:[900,6E3],position:-1,repetitionevery:900,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[1500,1700],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_CURVE_LEFT,segments:[2E3,2400],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.SIGN_CURVE_LEFT, segments:[4800,5E3],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[5100,5200],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.SIGN_CURVE_RIGHT,segments:[5300,5700],position:.3,repetitionevery:10,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD01,segments:6100,position:0,disposition:AMBIENT.DISPOSITION.PRECISE}, {side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD02,segments:6200,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD03,segments:6300,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD04,segments:6400,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.LEFT,sprite:SPRITES.BILLBOARD05,segments:6500,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD01, segments:6150,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD02,segments:6250,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD03,segments:6350,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD04,segments:6450,position:0,disposition:AMBIENT.DISPOSITION.PRECISE},{side:AMBIENT.SIDE.RIGHT,sprite:SPRITES.BILLBOARD05,segments:6550,position:0,disposition:AMBIENT.DISPOSITION.PRECISE}]; function CHorizon(a){var c,b,f;this._init=function(a){c=0;f=new createjs.Container;s_oStage.addChild(f);b=[];var e=Math.floor(a/NUM_TRACKS_PER_WORLD);a="w"+e+"_bg1";e=s_oSpriteLibrary.getSprite("w"+e+"_bg0");this._addBG(e);e=s_oSpriteLibrary.getSprite(a);this._addBG(e)};this._addBG=function(a){a=new CBackground(a,f);b.push(a)};this.resetPos=function(){c=0};this.restart=function(){for(var a=0;ae;e++)f[e]=createBitmap(a),f[e].regY=a.height/2,f[e].x=e*a.width,f[e].y=CANVAS_HEIGHT/2,g.addChild(f[e]),f[e].cache(0,0,a.width,a.height)};this.restart=function(){g.x=0;for(var b=g.y=0;2>b;b++)f[b].x=b*a.width,f[b].y=CANVAS_HEIGHT/2};this.moveX=function(b){g.x+=b;b=Math.floor(-g.x/a.width)*a.width;for(var c=0;2>c;c++)f[c].x=b+c*a.width};this.moveY= function(a){a<-b&&(a=-b);a>b&&(a=b);g.y=a};this._init()} function CNextLevelPanel(a,c,b){var f,g,e,d,h;this._init=function(a,b,c){playSound("arrive_win",1,!1);setVolume(s_aSounds.game_soundtrack,SOUNDTRACK_VOLUME_IN_GAME);e=new createjs.Shape;e.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);e.alpha=0;e.on("mousedown",function(){});s_oStage.addChild(e);(new createjs.Tween.get(e)).to({alpha:.7},500);g=new createjs.Container;s_oStage.addChild(g);var k=s_oSpriteLibrary.getSprite("msg_box"),l=createBitmap(k);l.regX=k.width/2;l.regY=k.height/ 2;g.addChild(l);new CTLText(g,-300,-180,600,40,40,"center","#fff",PRIMARY_FONT,1,0,0,TEXT_TRACK_COMPLETED,!0,!0,!1,!1);l=new createjs.Container;l.x=-220;l.y=-50;g.addChild(l);k=s_oSpriteLibrary.getSprite("timer");var m=createBitmap(k);m.regX=k.width/2;m.regY=k.height/2;l.addChild(m);new CTLText(l,34,-20,150,50,50,"left","#fff",PRIMARY_FONT,1,0,0,formatTime(LEVEL_INFO[c].time-a),!0,!0,!1,!1);a=new createjs.Container;a.x=120;a.y=l.y;g.addChild(a);k=s_oSpriteLibrary.getSprite("star");c=createBitmap(k); c.regX=k.width/2;c.regY=k.height/2;a.addChild(c);var r=new CTLText(a,34,-20,150,50,50,"left","#fff",PRIMARY_FONT,1,0,0,"0",!0,!0,!1,!1);g.x=CANVAS_WIDTH/2;g.y=CANVAS_HEIGHT+k.height/2;f=g.y;(new createjs.Tween.get(g)).to({y:CANVAS_HEIGHT/2},500,createjs.Ease.quartIn).call(function(){new CRollingText(r.getText(),b,5E3,!1)});this._sendScore();k=s_oSpriteLibrary.getSprite("but_next");d=new CGfxButton(120,100,k,g);d.addEventListener(ON_MOUSE_UP,this._onContinue,this);d.pulseAnimation();k=s_oSpriteLibrary.getSprite("but_restart"); h=new CGfxButton(-120,100,k,g);h.addEventListener(ON_MOUSE_UP,this._onRestart,this)};this.unload=function(){e.off("mousedown",function(){});s_oStage.removeChild(e);g.removeAllChildren(e);d.unload();h.unload()};this._sendScore=function(){var d=LEVEL_INFO[b].time-a;s_iTotalScore+=c;if(dMath.random()?-f:f;var q=.5>Math.random()?-f:f;a.x+=n;a.y+=q}else a.x=g,a.y=e;k++;k>r&&(k=0,d=!1,s_oGame.endDamageTime(),a.x=g,a.y=e,0===c?m=setInterval(function(){l._tremble()},b):clearInterval(m))};this._calculateDuration=function(){r=c/b};this.stopTremble=function(){clearInterval(m)}; var l=this;this._init(a,c,b,f)} function CAreYouSurePanel(a,c){var b,f,g,e,d,h,m;this._init=function(a,c){h=new createjs.Shape;h.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);h.alpha=0;h.on("mousedown",function(){});s_oStage.addChild(h);(new createjs.Tween.get(h)).to({alpha:.7},500);m=new createjs.Container;s_oStage.addChild(m);var k=s_oSpriteLibrary.getSprite("msg_box"),l=createBitmap(k);l.regX=k.width/2;l.regY=k.height/2;m.addChild(l);m.x=CANVAS_WIDTH/2;m.y=CANVAS_HEIGHT+k.height/2;b=m.y;(new createjs.Tween.get(m)).to({y:CANVAS_HEIGHT/ 2-40},500,createjs.Ease.cubicOut);f=new CTLText(m,-300,-k.height/2+40,600,140,70,"center","#000",PRIMARY_FONT,1,0,0,TEXT_ARE_SURE,!0,!0,!0,!1);f.setOutline(5);g=new CTLText(m,-300,-k.height/2+40,600,140,70,"center","#fff",PRIMARY_FONT,1,0,0,TEXT_ARE_SURE,!0,!0,!0,!1);e=new CGfxButton(110,80,s_oSpriteLibrary.getSprite("but_yes"),m);e.addEventListener(ON_MOUSE_UP,this._onButYes,this);d=new CGfxButton(-110,80,s_oSpriteLibrary.getSprite("but_exit"),m);d.addEventListener(ON_MOUSE_UP,this._onButNo,this); d.pulseAnimation()};this._onButYes=function(){d.setClickable(!1);e.setClickable(!1);(new createjs.Tween.get(h)).to({alpha:0},500);(new createjs.Tween.get(m)).to({y:b},400,createjs.Ease.backIn).call(function(){k.unload();a&&a()})};this._onButNo=function(){d.setClickable(!1);e.setClickable(!1);(new createjs.Tween.get(h)).to({alpha:0},500);(new createjs.Tween.get(m)).to({y:b},400,createjs.Ease.backIn).call(function(){k.unload();c&&c()})};this.changeMessage=function(a,b){f.refreshText(a);g.refreshText(a)}; this.unload=function(){d.unload();e.unload();s_oStage.removeChild(h);s_oStage.removeChild(m);h.off("mousedown",function(){})};var k=this;this._init(a,c)} CTLText.prototype={constructor:CTLText,__autofit:function(){if(this._bFitText){for(var a=this._iFontSize;(this._oText.getBounds().height>this._iHeight-2*this._iPaddingV||this._oText.getBounds().width>this._iWidth-2*this._iPaddingH)&&!(a--,this._oText.font=a+"px "+this._szFont,this._oText.lineHeight=Math.round(a*this._fLineHeightFactor),this.__updateY(),this.__verticalAlign(),8>a););this._iFontSize=a}},__verticalAlign:function(){if(this._bVerticalAlign){var a=this._oText.getBounds().height;this._oText.y-= (a-this._iHeight)/2+this._iPaddingV}},__updateY:function(){this._oText.y=this._y+this._iPaddingV;switch(this._oText.textBaseline){case "middle":this._oText.y+=this._oText.lineHeight/2+(this._iFontSize*this._fLineHeightFactor-this._iFontSize)}},__createText:function(a){this._bDebug&&(this._oDebugShape=new createjs.Shape,this._oDebugShape.graphics.beginFill("rgba(255,0,0,0.5)").drawRect(this._x,this._y,this._iWidth,this._iHeight),this._oContainer.addChild(this._oDebugShape));this._oText=new createjs.Text(a, this._iFontSize+"px "+this._szFont,this._szColor);this._oText.textBaseline="middle";this._oText.lineHeight=Math.round(this._iFontSize*this._fLineHeightFactor);this._oText.textAlign=this._szAlign;this._oText.lineWidth=this._bMultiline?this._iWidth-2*this._iPaddingH:null;switch(this._szAlign){case "center":this._oText.x=this._x+this._iWidth/2;break;case "left":this._oText.x=this._x+this._iPaddingH;break;case "right":this._oText.x=this._x+this._iWidth-this._iPaddingH}this._oContainer.addChild(this._oText); this.refreshText(a)},setVerticalAlign:function(a){this._bVerticalAlign=a},setOutline:function(a){null!==this._oText&&(this._oText.outline=a)},setShadow:function(a,c,b,f){null!==this._oText&&(this._oText.shadow=new createjs.Shadow(a,c,b,f))},setColor:function(a){this._oText.color=a},setAlpha:function(a){this._oText.alpha=a},removeTweens:function(){createjs.Tween.removeTweens(this._oText)},getText:function(){return this._oText},getString:function(){return this._oText.text},getY:function(){return this._y}, getFontSize:function(){return this._iFontSize},refreshText:function(a){""===a&&(a=" ");null===this._oText&&this.__createText(a);this._oText.text=a;this._oText.font=this._iFontSize+"px "+this._szFont;this._oText.lineHeight=Math.round(this._iFontSize*this._fLineHeightFactor);this.__autofit();this.__updateY();this.__verticalAlign()}}; function CTLText(a,c,b,f,g,e,d,h,m,k,r,l,n,q,x,y,u){this._oContainer=a;this._x=c;this._y=b;this._iWidth=f;this._iHeight=g;this._bMultiline=y;this._iFontSize=e;this._szAlign=d;this._szColor=h;this._szFont=m;this._iPaddingH=r;this._iPaddingV=l;this._bVerticalAlign=x;this._bFitText=q;this._bDebug=u;this._oDebugShape=null;this._fLineHeightFactor=k;this._oText=null;n&&this.__createText(n)};