123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679 |
- function initSplash() {
- gameState = "splash", allowSound && !muted && music.play(), initStartScreen()
- }
- function initStartScreen() {
- document.getElementById('moregame').style.display='none';
- gameState = "start", gameScore = 0, userInput.addHitArea("mute", butEventHandler, null, {type: "rect",aRect: [336, 0, canvas.width, 48]}, !0), background = new Elements.Background(assetLib.getData("background"), canvas.width, canvas.height);
- var a = {oImgData: assetLib.getData("playBut"),aPos: [canvas.width / 2, 370]}, b = {oImgData: assetLib.getData("moreGamesBut"),aPos: [canvas.width / 2, 480]};
- userInput.addHitArea("startGame", butEventHandler, null, {type: "image",oImageData: a.oImgData,aCentrePos: a.aPos}), userInput.addHitArea("moreGames", butEventHandler, null, {type: "image",oImageData: b.oImgData,aCentrePos: b.aPos});
- var c = new Array(a, b);
- panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("thinNumbers"), assetLib.getData("fatNumbers"), gameState, c, canvas.width, canvas.height), panel.startTween(), aDots = new Array;
- for (var d = 0; 6 > d; d++) {
- var e = new Elements.Dot(assetLib.getData("dot"), assetLib.getData("pop"), d, d, canvas.width, canvas.height);
- e.x = Math.random() * canvas.width, e.y = Math.random() * canvas.height, aDots.push(e)
- }
- previousTime = (new Date).getTime(), updateStartScreenEvent()
- }
- function initPreGame() {
- gameState = "tutorial";
- for (var a = 0; a < aTutorials.length; a++)
- if (aTutorials[a].gameNum == gameNum && !aTutorials[a].shown) {
- background = new Elements.Background(assetLib.getData("background"), canvas.width, canvas.height), userInput.addHitArea("continue", butEventHandler, null, {type: "rect",aRect: [100, 265, 220, 345]});
- var b = {oImgData: assetLib.getData("playBut"),aPos: [canvas.width / 2, 465]};
- userInput.addHitArea("continue", butEventHandler, null, {type: "image",oImageData: b.oImgData,aCentrePos: b.aPos});
- var c = new Array(b);
- return panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("thinNumbers"), assetLib.getData("fatNumbers"), aTutorials[a].panelType, c, canvas.width, canvas.height), panel.startTween(), previousTime = (new Date).getTime(), updateTutorialEvent(), void 0
- }
- initGame()
- }
- function initGame() {
- gameState = "game", allowSound && music.volume(.5), background = new Elements.Background(assetLib.getData("background"), canvas.width, canvas.height), userInput.addHitArea("pause", butEventHandler, null, {type: "rect",aRect: [294, 0, 336, 48]}, !0), hud = new Elements.Hud(assetLib.getData("hud"), assetLib.getData("thinNumbers"), assetLib.getData("fatNumbers"), canvas.width, canvas.height), aDots = new Array, aSelected = new Array, gameTime = 60, gameScore = 0, blockTap = !1, longestChain = 0, balloonsPopped = 0, lastSelectedDot = null;
- for (var a = 0; 42 > a; a++) {
- var b = new Elements.Dot(assetLib.getData("dot"), assetLib.getData("pop"), a, getNewDotType(), canvas.width, canvas.height);
- b.targX = Math.round(62 * (a % 6) + 36), b.targY = Math.round(getYPosFromId(a)), b.fall(), userInput.addHitArea("dotHit", butEventHandler, {id: a,isDraggable: !0}, {type: "rect",aRect: [b.x - 22, b.targY - 22, b.x + 22, b.targY + 22]}), aDots.push(b)
- }
- background.startScroll(20), userInput.addHitArea("mouseUp", butEventHandler, {multiTouch: !0}, {type: "rect",aRect: [0, 0, canvas.width, canvas.height]}), previousTime = (new Date).getTime(), updateGameEvent()
- }
- function butEventHandler(a, b) {
- switch (a) {
- case "langSelect":
- console.log(b.lang), curLang = b.lang, ctx.clearRect(0, 0, canvas.width, canvas.height), userInput.removeHitArea("langSelect"), initLoadAssets();
- break;
- case "startGame":
- playSound("click"), userInput.removeHitArea("startGame"), userInput.removeHitArea("moreGames"), initPreGame();
- break;
- case "moreGames":
- clickMore();
- break;
- case "dotHit":
- if (blockTap)
- break;
- if (b.isBeingDragged) {
- if (null == lastSelectedDot)
- break;
- lastSelectedDot = aDots[b.id].trySelect(lastSelectedDot);
- for (var c = -1, d = 0; d < aSelected.length; d++)
- aSelected[d] == lastSelectedDot && (c = d);
- if (-1 == c)
- aSelected.push(lastSelectedDot), playSound("drag");
- else
- for (var d = c + 1; d < aSelected.length; d++)
- aSelected[d].unSelect(), aSelected.splice(d, 1), d -= 1
- } else
- aDots[b.id].type < 6 && (aDots[b.id].select(), lastSelectedDot = aDots[b.id], aSelected = new Array(lastSelectedDot), playSound("drag"));
- break;
- case "mouseUp":
- if (!b.isDown) {
- if (blockTap)
- break;
- if (aSelected.length >= 3) {
- for (var e = 0, f = aSelected.length, g = !1, d = 0; f > d; d++) {
- if (7 == aSelected[d].type || 9 == aSelected[d].type) {
- g = !0;
- for (var h = 0; 6 > h; h++) {
- for (var i = !0, j = 0; j < aSelected.length; j++)
- aSelected[j] == aDots[6 * Math.floor(aSelected[d].id / 6) + h] && (i = !1);
- i && aSelected.push(aDots[6 * Math.floor(aSelected[d].id / 6) + h])
- }
- }
- if (8 == aSelected[d].type || 9 == aSelected[d].type) {
- g = !0;
- for (var h = 0; 7 > h; h++) {
- for (var i = !0, j = 0; j < aSelected.length; j++)
- aSelected[j] == aDots[aSelected[d].id % 6 + 6 * h] && (i = !1);
- i && aSelected.push(aDots[aSelected[d].id % 6 + 6 * h])
- }
- }
- }
- sortThis(aSelected);
- for (var d = 0; d < aSelected.length; d++)
- 10 == aSelected[d].type ? e++ : 11 == aSelected[d].type && (gameTime += 5), aSelected[d].hit(d / aSelected.length);
- longestChain = Math.max(aSelected.length, longestChain), balloonsPopped += aSelected.length, g ? playSound("explode") : 3 == aSelected.length ? playSound("pop1") : aSelected.length < 7 ? playSound("pop2") : playSound("pop3"), updateScore(10 * f * f + 100 * aSelected.length + 2 * e * 100 * aSelected.length), blockTap = !0, background.startScroll(aSelected.length)
- } else {
- for (var d = 0; d < aSelected.length; d++)
- aSelected[d].unSelect();
- aSelected = new Array
- }
- removedDots = 0, lastSelectedDot = null
- }
- break;
- case "continue":
- playSound("click"), userInput.removeHitArea("continue"), initGame();
- break;
- case "newGame":
- playSound("click"), userInput.removeHitArea("pause"), userInput.removeHitArea("newGame"), userInput.removeHitArea("quitFromEnd"), gameNum++, initPreGame();
- break;
- case "quitFromEnd":
- playSound("click"), userInput.removeHitArea("pause"), userInput.removeHitArea("newGame"), userInput.removeHitArea("quitFromEnd"), initStartScreen();
- break;
- case "mute":
- playSound("click"), toggleMute();
- break;
- case "pause":
- case "resumeFromPause":
- playSound("click"), toggleManualPause();
- break;
- case "quitFromPause":
- playSound("click"), toggleManualPause(), userInput.removeHitArea("pause"), userInput.removeHitArea("dotHit"), userInput.removeHitArea("mouseUp"), userInput.removeHitArea("quitFromPause"), userInput.removeHitArea("resumeFromPause"), gameScore = 0, initStartScreen()
- }
- }
- function sortThis(a) {
- a.sort(function(a, b) {
- var c = a.id, d = b.id;
- return d > c ? -1 : c > d ? 1 : 0
- })
- }
- function updateScore(a) {
- gameScore += a, hud.updateScore(gameScore)
- }
- function initGameOver() {
- gameState = "gameOver", allowSound && music.volume(.25), userInput.removeHitArea("dotHit"), userInput.removeHitArea("mouseUp"), playSound("timesUp"), background = new Elements.Background(assetLib.getData("background"), canvas.width, canvas.height);
- var a = {oImgData: assetLib.getData("playBut"),aPos: [263, 465]}, b = {oImgData: assetLib.getData("quitBut"),aPos: [120, 465]};
- userInput.addHitArea("newGame", butEventHandler, null, {type: "image",oImageData: a.oImgData,aCentrePos: a.aPos}), userInput.addHitArea("quitFromEnd", butEventHandler, null, {type: "image",oImageData: b.oImgData,aCentrePos: b.aPos});
- var c = new Array(a, b);
- panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("thinNumbers"), assetLib.getData("fatNumbers"), gameState, c, canvas.width, canvas.height), panel.startTween(), highScore = Math.max(gameScore, highScore);
- try {
- window.kaisergames.submitHighscore(0, gameScore);
- } catch (d) {
- }
- panel.oScoreData = {gameScore: gameScore,longestChain: longestChain,balloonsPopped: balloonsPopped,highScore: highScore}, previousTime = (new Date).getTime(), updateGameOver();
- dp_submitScore(gameScore);
- document.getElementById('moregame').style.display='block';
- }
- function replaceDots() {
- for (var a = 0; a < aSelected.length; a++) {
- for (var b = 6; aSelected[a].id + b < 42 && !aDots[aSelected[a].id + b].canHit; )
- b += 6;
- aSelected[a].id > 36 || aSelected[a].id + b >= 42 ? aDots[aSelected[a].id].replaceWithNewDot(getNewDotType()) : (aDots[aSelected[a].id].replaceWithExistingDot(aDots[aSelected[a].id + b]), renderSprite(aDots[aSelected[a].id]), aDots[aSelected[a].id + b].canHit && (aDots[aSelected[a].id + b].canHit = !1, aSelected.push(aDots[aSelected[a].id + b]), sortThis(aSelected)))
- }
- aSelected = new Array, blockTap = !1
- }
- function getYPosFromId(a) {
- return 62 * Math.floor(a / 6) + 110
- }
- function getNewDotType() {
- return 9 * Math.random() < 8 ? Math.floor(6 * Math.random()) : Math.floor(6 * Math.random() + 6)
- }
- function updateGameEvent() {
- if (!manualPause && !rotatePause && "game" == gameState) {
- var a = getDelta();
- background.render(ctx);
- for (var b = 0; b < aDots.length; b++)
- aDots[b].update(a), renderSprite(aDots[b]), aDots[b].removeMe && (aDots[b].removeMe = !1, ++removedDots == aSelected.length && replaceDots());
- if (gameTime -= a, 0 >= gameTime)
- return initGameOver(), void 0;
- hud.render(ctx, Math.round(gameTime)), renderMuteBut(), requestAnimFrame(updateGameEvent)
- }
- }
- function updateGameOver() {
- if (!rotatePause && "gameOver" == gameState) {
- var a = getDelta();
- background.updateScroll(a), background.render(ctx), panel.update(a), panel.render(ctx), renderMuteBut(), requestAnimFrame(updateGameOver)
- }
- }
- function updateSplashScreenEvent() {
- if (!rotatePause && "splash" == gameState) {
- var a = getDelta();
- if (splashTimer += a, splashTimer > 2.5)
- return allowSound && !muted && music.play(), initStartScreen(), void 0;
- splash.render(ctx, a), requestAnimFrame(updateSplashScreenEvent)
- }
- }
- function updateStartScreenEvent() {
- if (!rotatePause && "start" == gameState) {
- var a = getDelta();
- background.updateScroll(a), background.render(ctx);
- for (var b = 0; b < aDots.length; b++)
- aDots[b].y -= (30 + 2 * b) * a, aDots[b].x = aDots[b].x - 50 * Math.sin(aDots[b].y / 50) * a, aDots[b].y < -100 && (aDots[b].x = Math.random() * canvas.width, aDots[b].y = canvas.height + 200 * Math.random() + 100), aDots[b].update(a), renderSprite(aDots[b]);
- panel.update(a), panel.render(ctx), renderMuteBut(), requestAnimFrame(updateStartScreenEvent)
- }
- }
- function updateTutorialEvent() {
- if (!rotatePause && "tutorial" == gameState) {
- var a = getDelta();
- background.updateScroll(a), background.render(ctx), panel.update(a), panel.render(ctx), renderMuteBut(), requestAnimFrame(updateTutorialEvent)
- }
- }
- function getDelta() {
- var a = (new Date).getTime(), b = (a - previousTime) / 1e3;
- return previousTime = a, b > .5 && (b = 0), b
- }
- function renderSprite(a) {
- ctx.save(), ctx.translate(a.x, a.y), ctx.scale(a.scaleX, a.scaleY), ctx.rotate(a.rotation), a.render(ctx), ctx.restore()
- }
- function checkSpriteCollision(a, b, c) {
- var d = a.x, e = a.y, f = b.x, g = b.y, h = (d - f) * (d - f) + (e - g) * (e - g), i = (a.radius + c) * (a.radius + c);
- return i > h ? !0 : !1
- }
- function loadPreAssets() {
- aLangs.length > 1 ? (preAssetLib = new Utils.AssetLoader(curLang, [{id: "langSelect",file: "images/langSelect.jpg"}, {id: "preloadImage",file: "images/preloadImage.jpg"}], ctx, canvas.width, canvas.height, !1), preAssetLib.onReady(initLangSelect)) : (curLang = aLangs[0], preAssetLib = new Utils.AssetLoader(curLang, [{id: "preloadImage",file: "images/preloadImage.jpg"}], ctx, canvas.width, canvas.height, !1), preAssetLib.onReady(initLoadAssets))
- }
- function initLangSelect() {
- var a = preAssetLib.getData("langSelect");
- ctx.drawImage(a.img, 0, 0, a.img.width, a.img.height, canvas.width / 2 - .75 * (a.img.width / 2), canvas.height / 2 - .75 * (a.img.height / 2), .75 * a.img.width, .75 * a.img.height);
- for (var b = 105, c = 0; c < aLangs.length; c++) {
- var d = canvas.width / 2 - b * aLangs.length / 2 + c * b, e = canvas.height / 2 - b / 2;
- userInput.addHitArea("langSelect", butEventHandler, {lang: aLangs[c]}, {type: "rect",aRect: [d, e, d + b, e + 140]})
- }
- }
- function initLoadAssets() {
- var a = preAssetLib.getData("preloadImage");
- ctx.drawImage(a.img, 0, 0), loadAssets()
- }
- function loadAssets() {
- assetLib = new Utils.AssetLoader(curLang, [{id: "background",file: "images/background.jpg"}, {id: "rotateDeviceMessage",file: "images/rotateDeviceMessage.jpg"}, {id: "splash",file: "images/splashScreen.jpg"}, {id: "hud",file: "images/" + curLang + "/hud.png"}, {id: "playBut",file: "images/playBut.png"}, {id: "quitBut",file: "images/quitBut.png"}, {id: "moreGamesBut",file: "images/" + curLang + "/moreGamesBut.png"}, {id: "panels",file: "images/" + curLang + "/panels_383x550.png",oData: {columns: 2,spriteWidth: 383,spriteHeight: 550}}, {id: "dot",file: "images/dots_64x86.png",oData: {oAnims: {unSelected0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],unSelected1: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39],unSelected2: [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59],unSelected3: [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79],unSelected4: [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99],unSelected5: [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119],unSelected6: [120],unSelected7: [121],unSelected8: [122],unSelected9: [123],unSelected10: [124],unSelected11: [125],selected0: [126, 127, 128, 129],selected1: [130, 131, 132, 133],selected2: [134, 135, 136, 137],selected3: [138, 139, 140, 141],selected4: [142, 143, 144, 145],selected5: [146, 147, 148, 149],selected6: [150, 151, 152, 153],selected7: [154, 155, 156, 157],selected8: [158, 159, 160, 161],selected9: [162, 163, 164, 165],selected10: [166, 167, 168, 169],selected11: [170, 171, 172, 173]},columns: 16,spriteWidth: 64,spriteHeight: 86}}, {id: "pop",file: "images/pop_156x141.png",oData: {oAnims: {pop: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]},columns: 6,spriteWidth: 156,spriteHeight: 141}}, {id: "fatNumbers",file: "images/fatNumbers_33x41.png",oData: {columns: 10,spriteWidth: 33,spriteHeight: 41}}, {id: "thinNumbers",file: "images/thinNumbers_25x32.png",oData: {columns: 10,spriteWidth: 25,spriteHeight: 32}}, {id: "muteBut",file: "images/mute_35x35.png",oData: {columns: 2,spriteWidth: 35,spriteHeight: 35}}], ctx, canvas.width, canvas.height, !1), assetLib.onReady(initSplash)
- }
- function resizeCanvas() {
- var a = window.innerWidth, b = window.innerHeight;
- a > 480 && (a -= 1, b -= 1), window.innerWidth > window.innerHeight && isMobile ? ("loading" != gameState && rotatePauseOn(), a / canvas.width < b / canvas.height ? (canvas.style.width = a + "px", canvas.style.height = a / canvas.width * canvas.height + "px", canvasX = 0, canvasY = (b - a / canvas.width * canvas.height) / 2, canvasScaleX = canvasScaleY = canvas.width / a, div.style.marginTop = canvasY + "px", div.style.marginLeft = canvasX + "px") : (canvas.style.width = b / canvas.height * canvas.width + "px", canvas.style.height = b + "px", canvasX = (a - b / canvas.height * canvas.width) / 2, canvasY = 0, canvasScaleX = canvasScaleY = canvas.height / b, div.style.marginTop = canvasY + "px", div.style.marginLeft = canvasX + "px")) : isMobile ? (rotatePause && rotatePauseOff(), canvasX = canvasY = 0, canvasScaleX = canvas.width / a, canvasScaleY = canvas.height / b, canvas.style.width = a + "px", canvas.style.height = b + "px", div.style.marginTop = "0px", div.style.marginLeft = "0px") : (rotatePause && rotatePauseOff(), a / canvas.width < b / canvas.height ? (canvas.style.width = a + "px", canvas.style.height = a / canvas.width * canvas.height + "px", canvasX = 0, canvasY = (b - a / canvas.width * canvas.height) / 2, canvasScaleX = canvasScaleY = canvas.width / a, div.style.marginTop = canvasY + "px", div.style.marginLeft = canvasX + "px") : (canvas.style.width = b / canvas.height * canvas.width + "px", canvas.style.height = b + "px", canvasX = (a - b / canvas.height * canvas.width) / 2, canvasY = 0, canvasScaleX = canvasScaleY = canvas.height / b, div.style.marginTop = canvasY + "px", div.style.marginLeft = canvasX + "px")), userInput.setCanvas(canvasX, canvasY, canvasScaleX, canvasScaleY)
- }
- function playSound(a) {
- allowSound && sound.play(a)
- }
- function toggleMute() {
- muted = !muted, allowSound && (muted ? Howler.mute() : Howler.unmute()), renderMuteBut()
- }
- function renderMuteBut() {
- if (allowSound) {
- var a = assetLib.getData("muteBut"), b = 0;
- muted && (b = 1);
- var c = b * a.oData.spriteWidth % a.img.width, d = Math.floor(b / (a.img.width / a.oData.spriteWidth)) * a.oData.spriteHeight;
- ctx.drawImage(a.img, c, d, a.oData.spriteWidth, a.oData.spriteHeight, 340, 10, a.oData.spriteWidth, a.oData.spriteHeight)
- }
- }
- function toggleManualPause() {
- if (manualPause)
- manualPause = !1, userInput.removeHitArea("quitFromPause"), userInput.removeHitArea("resumeFromPause"), pauseCoreOff();
- else {
- manualPause = !0, pauseCoreOn();
- var a = {oImgData: assetLib.getData("quitBut"),aPos: [120, 465]}, b = {oImgData: assetLib.getData("playBut"),aPos: [263, 465]}, c = new Array(a, b);
- userInput.addHitArea("quitFromPause", butEventHandler, null, {type: "image",oImageData: a.oImgData,aCentrePos: a.aPos}), userInput.addHitArea("resumeFromPause", butEventHandler, null, {type: "image",oImageData: b.oImgData,aCentrePos: b.aPos}), panel = new Elements.Panel(assetLib.getData("panels"), assetLib.getData("thinNumbers"), assetLib.getData("fatNumbers"), "pause", c, canvas.width, canvas.height), panel.render(ctx), userInput.addHitArea("pause", butEventHandler, null, {type: "rect",aRect: [294, 0, 336, 48]}, !0)
- }
- }
- function rotatePauseOn() {
- rotatePause = !0, ctx.drawImage(assetLib.getImg("rotateDeviceMessage"), 0, 0), userInput.pauseIsOn = !0, pauseCoreOn()
- }
- function rotatePauseOff() {
- rotatePause = !1, pauseCoreOff()
- }
- function pauseCoreOn() {
- switch (allowSound && Howler.mute(), gameState) {
- case "start":
- break;
- case "help":
- break;
- case "game":
- userInput.removeHitArea("dotHit"), userInput.removeHitArea("mouseUp");
- break;
- case "end":
- }
- }
- function pauseCoreOff() {
- switch (allowSound && (muted || Howler.unmute()), previousTime = (new Date).getTime(), userInput.pauseIsOn = !1, gameState) {
- case "splash":
- updateSplashScreenEvent();
- break;
- case "start":
- initStartScreen();
- break;
- case "tutorial":
- initPreGame();
- break;
- case "game":
- manualPause = !1;
- for (var a = 0; a < aDots.length; a++)
- userInput.addHitArea("dotHit", butEventHandler, {id: a,isDraggable: !0}, {type: "rect",aRect: [aDots[a].x - 22, aDots[a].targY - 22, aDots[a].x + 22, aDots[a].targY + 22]});
- userInput.addHitArea("mouseUp", butEventHandler, {multiTouch: !0}, {type: "rect",aRect: [0, 0, canvas.width, canvas.height]}), updateGameEvent();
- break;
- case "gameOver":
- initGameOver()
- }
- }
- var Utils;
- !function(a) {
- var b = function() {
- function a(a, b, c, d, e, f) {
- "undefined" == typeof f && (f = !0), this.oAssetData = {}, this.assetsLoaded = 0, this.totalAssets = b.length, this.ctx = c, this.canvasWidth = d, this.canvasHeight = e, this.showBar = f, this.topLeftX = this.canvasWidth / 2 - d / 4, this.topLeftY = this.canvasHeight / 2, this.showBar && (ctx.strokeStyle = "#aaaaaa", ctx.lineWidth = 2, ctx.fillStyle = "#ffffff", ctx.moveTo(this.topLeftX, this.topLeftY), ctx.lineTo(this.topLeftX + d / 2, this.topLeftY + 0), ctx.lineTo(this.topLeftX + d / 2, this.topLeftY + 20), ctx.lineTo(this.topLeftX + 0, this.topLeftY + 20), ctx.lineTo(this.topLeftX + 0, this.topLeftY + 0), ctx.stroke());
- for (var g = 0; g < b.length; g++)
- this.loadImage(b[g])
- }
- return a.prototype.loadImage = function(a) {
- var b = this, c = new Image;
- c.onload = function() {
- b.oAssetData[a.id] = {}, b.oAssetData[a.id].img = c, void 0 != a.oData && (b.oAssetData[a.id].oData = a.oData), ++b.assetsLoaded, b.showBar && ctx.fillRect(b.topLeftX + 2, b.topLeftY + 2, (b.canvasWidth / 2 - 4) / b.totalAssets * b.assetsLoaded, 16), b.checkLoadComplete()
- }, c.src = a.file
- }, a.prototype.checkLoadComplete = function() {
- this.assetsLoaded == this.totalAssets && this.loadedCallback()
- }, a.prototype.onReady = function(a) {
- this.loadedCallback = a
- }, a.prototype.getImg = function(a) {
- return this.oAssetData[a].img
- }, a.prototype.getData = function(a) {
- return this.oAssetData[a]
- }, a
- }();
- a.AssetLoader = b
- }(Utils || (Utils = {}));
- var Utils;
- !function(a) {
- var b = function() {
- function a(a, b, c, d) {
- this.x = 0, this.y = 0, this.rotation = 0, this.radius = 10, this.removeMe = !1, this.frameInc = 0, this.animType = "loop", this.offsetX = 0, this.offsetY = 0, this.scaleX = 1, this.scaleY = 1, this.oImgData = a, this.oAnims = this.oImgData.oData.oAnims, this.fps = b, this.radius = c, this.animId = d
- }
- return a.prototype.changeSpriteSheet = function(a) {
- this.oImgData = a, this.oAnims = this.oImgData.oData.oAnims, this.resetAnim()
- }, a.prototype.updateAnimation = function(a) {
- this.frameInc += this.fps * a
- }, a.prototype.resetAnim = function() {
- this.frameInc = 0
- }, a.prototype.setFrame = function(a) {
- this.fixedFrame = a
- }, a.prototype.setAnimType = function(a, b, c) {
- switch ("undefined" == typeof c && (c = !0), this.animId = b, this.animType = a, c && this.resetAnim(), a) {
- case "loop":
- break;
- case "once":
- this.maxIdx = this.oAnims[this.animId].length - 1
- }
- }, a.prototype.render = function(a) {
- if (null != this.animId) {
- var b = this.oAnims[this.animId].length, c = Math.floor(this.frameInc), d = this.oAnims[this.animId][c % b], e = d * this.oImgData.oData.spriteWidth % this.oImgData.img.width, f = Math.floor(d / (this.oImgData.img.width / this.oImgData.oData.spriteWidth)) * this.oImgData.oData.spriteHeight;
- if ("once" == this.animType && c > this.maxIdx) {
- this.fixedFrame = this.oAnims[this.animId][b - 1], this.animId = null, this.animEndedFunc();
- var e = this.fixedFrame * this.oImgData.oData.spriteWidth % this.oImgData.img.width, f = Math.floor(this.fixedFrame / (this.oImgData.img.width / this.oImgData.oData.spriteWidth)) * this.oImgData.oData.spriteHeight
- }
- } else
- var e = this.fixedFrame * this.oImgData.oData.spriteWidth % this.oImgData.img.width, f = Math.floor(this.fixedFrame / (this.oImgData.img.width / this.oImgData.oData.spriteWidth)) * this.oImgData.oData.spriteHeight;
- a.drawImage(this.oImgData.img, e, f, this.oImgData.oData.spriteWidth, this.oImgData.oData.spriteHeight, -this.oImgData.oData.spriteWidth / 2 + this.offsetX, -this.oImgData.oData.spriteHeight / 2 + this.offsetY, this.oImgData.oData.spriteWidth, this.oImgData.oData.spriteHeight)
- }, a
- }();
- a.AnimSprite = b
- }(Utils || (Utils = {}));
- var Utils;
- !function(a) {
- var b = function() {
- function a(a, b) {
- this.x = 0, this.y = 0, this.rotation = 0, this.radius = 10, this.removeMe = !1, this.offsetX = 0, this.offsetY = 0, this.scaleX = 1, this.scaleY = 1, this.oImgData = a, this.radius = b
- }
- return a.prototype.setFrame = function(a) {
- this.frameNum = a
- }, a.prototype.render = function(a) {
- var b = this.frameNum * this.oImgData.oData.spriteWidth % this.oImgData.img.width, c = Math.floor(this.frameNum / (this.oImgData.img.width / this.oImgData.oData.spriteWidth)) * this.oImgData.oData.spriteHeight;
- a.drawImage(this.oImgData.img, b, c, this.oImgData.oData.spriteWidth, this.oImgData.oData.spriteHeight, -this.oImgData.oData.spriteWidth / 2 + this.offsetX, -this.oImgData.oData.spriteHeight / 2 + this.offsetY, this.oImgData.oData.spriteWidth, this.oImgData.oData.spriteHeight)
- }, a
- }();
- a.BasicSprite = b
- }(Utils || (Utils = {}));
- var Utils;
- !function(a) {
- var b = function() {
- function a(a, b) {
- var c = this;
- this.canvasX = 0, this.canvasY = 0, this.canvasScaleX = 1, this.canvasScaleY = 1, this.prevHitTime = 0, this.pauseIsOn = !1, this.isDown = !1, this.isDetectingKeys = !1, this.isBugBrowser = b, a.addEventListener("touchstart", function(a) {
- for (var b = 0; b < a.changedTouches.length; b++)
- c.hitDown(a, a.changedTouches[b].pageX, a.changedTouches[b].pageY, a.changedTouches[b].identifier)
- }, !1), a.addEventListener("touchend", function(a) {
- for (var b = 0; b < a.changedTouches.length; b++)
- c.hitUp(a, a.changedTouches[b].pageX, a.changedTouches[b].pageY, a.changedTouches[b].identifier)
- }, !1), a.addEventListener("touchleave", function(a) {
- for (var b = 0; b < a.changedTouches.length; b++)
- c.leave(a, a.changedTouches[b].pageX, a.changedTouches[b].pageY, a.changedTouches[b].identifier)
- }, !1), a.addEventListener("touchmove", function(a) {
- for (var b = 0; b < c.aHitAreas.length; b++)
- void 0 != a.changedTouches[b] && c.move(a, a.changedTouches[b].pageX, a.changedTouches[b].pageY, a.changedTouches[b].identifier, !0)
- }, !1), a.addEventListener("mousedown", function(a) {
- c.isDown = !0, c.hitDown(a, a.pageX, a.pageY, 1)
- }, !1), a.addEventListener("mouseup", function(a) {
- c.isDown = !1, c.hitUp(a, a.pageX, a.pageY, 1)
- }, !1), a.addEventListener("mouseleave", function(a) {
- c.leave(a, a.pageX, a.pageY, 1)
- }, !1), a.addEventListener("mousemove", function(a) {
- c.move(a, a.pageX, a.pageY, 1, c.isDown)
- }, !1), this.aHitAreas = new Array, this.aKeys = new Array
- }
- return a.prototype.setCanvas = function(a, b, c, d) {
- this.canvasX = a, this.canvasY = b, this.canvasScaleX = c, this.canvasScaleY = d
- }, a.prototype.hitDown = function(a, b, c, d) {
- if (!this.pauseIsOn) {
- var e = (new Date).getTime();
- if (!(e - this.prevHitTime < 500 && isBugBrowser)) {
- this.prevHitTime = e, a.preventDefault(), a.stopPropagation(), b = (b - this.canvasX) * this.canvasScaleX, c = (c - this.canvasY) * this.canvasScaleY;
- for (var f = 0; f < this.aHitAreas.length; f++)
- if (this.aHitAreas[f].rect && b > this.aHitAreas[f].area[0] && c > this.aHitAreas[f].area[1] && b < this.aHitAreas[f].area[2] && c < this.aHitAreas[f].area[3]) {
- this.aHitAreas[f].aTouchIdentifiers.push(d), this.aHitAreas[f].oData.isDown || (this.aHitAreas[f].oData.isDown = !0, this.aHitAreas[f].callback(this.aHitAreas[f].id, this.aHitAreas[f].oData));
- break
- }
- }
- }
- }, a.prototype.hitUp = function(a, b, c, d) {
- if (!this.pauseIsOn) {
- a.preventDefault(), a.stopPropagation(), b = (b - this.canvasX) * this.canvasScaleX, c = (c - this.canvasY) * this.canvasScaleY;
- for (var e = 0; e < this.aHitAreas.length; e++)
- if (this.aHitAreas[e].rect && b > this.aHitAreas[e].area[0] && c > this.aHitAreas[e].area[1] && b < this.aHitAreas[e].area[2] && c < this.aHitAreas[e].area[3]) {
- for (var f = 0; f < this.aHitAreas[e].aTouchIdentifiers.length; f++)
- this.aHitAreas[e].aTouchIdentifiers[f] == d && (this.aHitAreas[e].aTouchIdentifiers.splice(f, 1), f -= 1);
- 0 == this.aHitAreas[e].aTouchIdentifiers.length && (this.aHitAreas[e].oData.isDown = !1, this.aHitAreas[e].oData.multiTouch && this.aHitAreas[e].callback(this.aHitAreas[e].id, this.aHitAreas[e].oData))
- }
- }
- }, a.prototype.move = function(a, b, c, d, e) {
- if (!this.pauseIsOn && e) {
- b = (b - this.canvasX) * this.canvasScaleX, c = (c - this.canvasY) * this.canvasScaleY;
- for (var f = 0; f < this.aHitAreas.length; f++)
- if (this.aHitAreas[f].rect)
- if (b > this.aHitAreas[f].area[0] && c > this.aHitAreas[f].area[1] && b < this.aHitAreas[f].area[2] && c < this.aHitAreas[f].area[3])
- this.aHitAreas[f].oData.isDown || (this.aHitAreas[f].oData.isDown = !0, this.aHitAreas[f].aTouchIdentifiers.push(d), this.aHitAreas[f].oData.multiTouch && this.aHitAreas[f].callback(this.aHitAreas[f].id, this.aHitAreas[f].oData)), this.aHitAreas[f].oData.isDraggable && (this.aHitAreas[f].oData.isBeingDragged = !0, this.aHitAreas[f].oData.posX = b, this.aHitAreas[f].oData.posY = c, this.aHitAreas[f].callback(this.aHitAreas[f].id, this.aHitAreas[f].oData), this.aHitAreas[f].oData.isBeingDragged = !1);
- else if (this.aHitAreas[f].oData.isDown) {
- for (var g = 0; g < this.aHitAreas[f].aTouchIdentifiers.length; g++)
- this.aHitAreas[f].aTouchIdentifiers[g] == d && (this.aHitAreas[f].aTouchIdentifiers.splice(g, 1), g -= 1);
- 0 == this.aHitAreas[f].aTouchIdentifiers.length && (this.aHitAreas[f].oData.isDown = !1, this.aHitAreas[f].oData.multiTouch && this.aHitAreas[f].callback(this.aHitAreas[f].id, this.aHitAreas[f].oData))
- }
- }
- }, a.prototype.leave = function(a, b, c, d) {
- if (!this.pauseIsOn) {
- a.preventDefault(), a.stopPropagation(), this.isDown = !1;
- for (var e = 0; e < this.aHitAreas.length; e++)
- if (this.aHitAreas[e].aTouchIdentifiers.length > 0) {
- for (var f = 0; f < this.aHitAreas[e].aTouchIdentifiers.length; f++)
- this.aHitAreas[e].aTouchIdentifiers[f] == d && (this.aHitAreas[e].aTouchIdentifiers.splice(f, 1), f -= 1);
- 0 == this.aHitAreas[e].aTouchIdentifiers.length && (this.aHitAreas[e].oData.isDown = !1, this.aHitAreas[e].callback(this.aHitAreas[e].id, this.aHitAreas[e].oData));
- break
- }
- }
- }, a.prototype.keyDown = function(a) {
- for (var b = 0; b < this.aKeys.length; b++)
- a.keyCode == this.aKeys[b].keyCode && (this.aKeys[b].oData.isDown = !0, this.aKeys[b].callback(this.aKeys[b].id, this.aKeys[b].oData))
- }, a.prototype.keyUp = function(a) {
- for (var b = 0; b < this.aKeys.length; b++)
- a.keyCode == this.aKeys[b].keyCode && (this.aKeys[b].oData.isDown = !1, this.aKeys[b].callback(this.aKeys[b].id, this.aKeys[b].oData))
- }, a.prototype.addKey = function(a, b, c, d) {
- var e = this;
- this.isDetectingKeys || (window.addEventListener("keydown", function(a) {
- e.keyDown(a)
- }, !1), window.addEventListener("keyup", function(a) {
- e.keyUp(a)
- }, !1), this.isDetectingKeys = !0), null == c && (c = new Object), this.aKeys.push({id: a,callback: b,oData: c,keyCode: d})
- }, a.prototype.removeKey = function(a) {
- for (var b = 0; b < this.aKeys.length; b++)
- this.aKeys[b].id == a && (this.aKeys.splice(b, 1), b -= 1)
- }, a.prototype.addHitArea = function(a, b, c, d, e) {
- "undefined" == typeof e && (e = !1), null == c && (c = new Object), e && this.removeHitArea(a);
- var f = new Array;
- switch (d.type) {
- case "image":
- d.oImageData.isSpriteSheet ? this.aHitAreas.push({id: a,aTouchIdentifiers: f,callback: b,oData: c,rect: !0,area: [d.aCentrePos[0] - d.oImageData.oData.spriteHeight / 2, d.aCentrePos[1] - d.oImageData.oData.spriteHeight / 2, d.aCentrePos[0] + d.oImageData.oData.spriteWidth / 2, d.aCentrePos[1] + d.oImageData.oData.spriteHeight / 2]}) : this.aHitAreas.push({id: a,aTouchIdentifiers: f,callback: b,oData: c,rect: !0,area: [d.aCentrePos[0] - d.oImageData.img.width / 2, d.aCentrePos[1] - d.oImageData.img.height / 2, d.aCentrePos[0] + d.oImageData.img.width / 2, d.aCentrePos[1] + d.oImageData.img.height / 2]});
- break;
- case "rect":
- this.aHitAreas.push({id: a,aTouchIdentifiers: f,callback: b,oData: c,rect: !0,area: d.aRect})
- }
- }, a.prototype.removeHitArea = function(a) {
- for (var b = 0; b < this.aHitAreas.length; b++)
- this.aHitAreas[b].id == a && (this.aHitAreas.splice(b, 1), b -= 1)
- }, a
- }();
- a.UserInput = b
- }(Utils || (Utils = {}));
- var Utils;
- !function(a) {
- var b = function() {
- function a(a) {
- this.updateFreq = 10, this.updateInc = 0, this.frameAverage = 0, this.display = 1, this.log = "", this.render = function(a) {
- this.frameAverage += this.delta / this.updateFreq, ++this.updateInc >= this.updateFreq && (this.updateInc = 0, this.display = this.frameAverage, this.frameAverage = 0), a.textAlign = "left", ctx.font = "10px Helvetica", a.fillStyle = "#333333", a.beginPath(), a.rect(0, this.canvasHeight - 15, 40, 15), a.closePath(), a.fill(), a.fillStyle = "#ffffff", a.fillText(Math.round(1e3 / (1e3 * this.display)) + " fps " + this.log, 5, this.canvasHeight - 5)
- }, this.canvasHeight = a
- }
- return a.prototype.update = function(a) {
- this.delta = a
- }, a
- }();
- a.FpsMeter = b
- }(Utils || (Utils = {}));
- var Elements;
- !function(a) {
- var b = function() {
- function a(a, b, c) {
- this.x = 0, this.y = 0, this.targY = 0, this.incY = 0, this.oImgData = a, this.canvasWidth = b, this.canvasHeight = c
- }
- return a.prototype.startScroll = function(a) {
- this.targY -= 5 * a, TweenLite.killTweensOf(this), TweenLite.to(this, 4, {y: this.targY,ease: "Quad.easeOut"})
- }, a.prototype.updateScroll = function(a) {
- this.incY += 5 * a, this.x = this.x - 50 * Math.sin(this.incY / 10) * a, this.y = this.y - 50 * a
- }, a.prototype.render = function(a) {
- this.x = this.x % this.canvasWidth, this.y = this.y % this.canvasHeight, this.x < 0 && (this.x += this.canvasWidth), this.y < 0 && (this.y += this.canvasHeight), a.drawImage(this.oImgData.img, this.x, this.y, this.canvasWidth, this.canvasHeight, 0, 0, this.canvasWidth, this.canvasHeight)
- }, a
- }();
- a.Background = b
- }(Elements || (Elements = {}));
- var Elements;
- !function(a) {
- var b = function() {
- function a(a, b, c, d, e) {
- this.incY = 0, this.score = 0, this.highestScore = 0, this.posY = 0, this.bgX = 0, this.bgY = 0, this.atmosX = 0, this.atmosY = 0, this.oButs = a, this.oBgImgData = b, this.oTitleImgData = c, this.canvasWidth = d, this.canvasHeight = e, this.posY = -this.canvasHeight
- }
- return a.prototype.setRenderFunc = function(a) {
- switch (this.posY = -this.canvasHeight, a) {
- case "start":
- this.renderFunc = this.renderStartScreen, TweenLite.to(this, .5, {posY: 0});
- break;
- case "help":
- break;
- case "end":
- }
- }, a.prototype.render = function(a, b) {
- this.renderFunc(a, b)
- }, a.prototype.renderStartScreen = function(a, b) {
- this.incY += 5 * b, this.bgY -= 50 * b, this.bgX -= 50 * Math.sin(this.incY / 10) * b;
- var c = this.bgX % this.canvasWidth, d = this.bgY % this.canvasHeight;
- 0 > c && (c += this.canvasWidth), 0 > d && (d += this.canvasHeight), a.drawImage(this.oBgImgData.img, c, d, this.canvasWidth, this.canvasHeight, 0, 0, this.canvasWidth, this.canvasHeight), a.drawImage(this.oTitleImgData.img, 15 + this.posY, 60), a.drawImage(this.oButs.play.imageData.img, this.oButs.play.pos[0] - this.oButs.play.imageData.img.width / 2, this.oButs.play.pos[1] - this.oButs.play.imageData.img.height / 2 - 5 * Math.sin(this.incY) - this.posY), a.drawImage(this.oButs.moreGames.imageData.img, this.oButs.moreGames.pos[0] - this.oButs.moreGames.imageData.img.width / 2, this.oButs.moreGames.pos[1] - this.oButs.moreGames.imageData.img.height / 2 - 5 * Math.sin(this.incY) - this.posY)
- }, a
- }();
- a.Screens = b
- }(Elements || (Elements = {}));
- var Elements;
- !function(a) {
- var b = function() {
- function a(a, b, c) {
- this.inc = 0, this.oSplashScreenImgData = a, this.canvasWidth = b, this.canvasHeight = c, this.posY = -this.canvasHeight, TweenLite.to(this, .5, {posY: 0})
- }
- return a.prototype.render = function(a, b) {
- this.inc += 5 * b, a.drawImage(this.oSplashScreenImgData.img, 0, 0 - this.posY)
- }, a
- }();
- a.Splash = b
- }(Elements || (Elements = {}));
- var Elements;
- !function(a) {
- var b = function() {
- function a(a, b, c, d, e, f, g) {
- this.timer = .3, this.endTime = 0, this.posY = 0, this.numberSpace = 17, this.incY = 0, this.oPanelsImgData = a, this.oThinNumbersImgData = b, this.oFatNumbersImgData = c, this.panelType = d, this.aButs = e, this.canvasWidth = f, this.canvasHeight = g
- }
- return a.prototype.update = function(a) {
- this.incY += 5 * a
- }, a.prototype.startTween = function() {
- this.posY = 550, TweenLite.to(this, .8, {posY: 0,ease: "Back.easeOut"})
- }, a.prototype.render = function(a) {
- switch (this.panelType) {
- case "start":
- var b = 6, c = b * this.oPanelsImgData.oData.spriteWidth % this.oPanelsImgData.img.width, d = Math.floor(b / (this.oPanelsImgData.img.width / this.oPanelsImgData.oData.spriteWidth)) * this.oPanelsImgData.oData.spriteHeight;
- a.drawImage(this.oPanelsImgData.img, c, d, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight, 0, 0 + this.posY - 20, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight);
- break;
- case "gameOver":
- var b = 5, c = b * this.oPanelsImgData.oData.spriteWidth % this.oPanelsImgData.img.width, d = Math.floor(b / (this.oPanelsImgData.img.width / this.oPanelsImgData.oData.spriteWidth)) * this.oPanelsImgData.oData.spriteHeight;
- a.drawImage(this.oPanelsImgData.img, c, d, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight, 0, 0 + this.posY, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight);
- for (var e = this.oScoreData.gameScore, f = 0; f < e.toString().length; f++) {
- b = parseFloat(e.toString().charAt(f));
- var c = b * this.oFatNumbersImgData.oData.spriteWidth % this.oFatNumbersImgData.img.width, d = Math.floor(b / (this.oFatNumbersImgData.img.width / this.oFatNumbersImgData.oData.spriteWidth)) * this.oFatNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oFatNumbersImgData.img, c, d, this.oFatNumbersImgData.oData.spriteWidth, this.oFatNumbersImgData.oData.spriteHeight, this.canvasWidth / 2 + 25 * f - 25 * e.toString().length / 2, 193 + this.posY, this.oFatNumbersImgData.oData.spriteWidth, this.oFatNumbersImgData.oData.spriteHeight)
- }
- for (var e = this.oScoreData.longestChain, f = 0; f < e.toString().length; f++) {
- b = parseFloat(e.toString().charAt(f));
- var c = b * this.oThinNumbersImgData.oData.spriteWidth % this.oThinNumbersImgData.img.width, d = Math.floor(b / (this.oThinNumbersImgData.img.width / this.oThinNumbersImgData.oData.spriteWidth)) * this.oThinNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oThinNumbersImgData.img, c, d, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight, 224 + f * this.numberSpace, 253 + this.posY, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight)
- }
- for (var e = this.oScoreData.balloonsPopped, f = 0; f < e.toString().length; f++) {
- b = parseFloat(e.toString().charAt(f));
- var c = b * this.oThinNumbersImgData.oData.spriteWidth % this.oThinNumbersImgData.img.width, d = Math.floor(b / (this.oThinNumbersImgData.img.width / this.oThinNumbersImgData.oData.spriteWidth)) * this.oThinNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oThinNumbersImgData.img, c, d, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight, 253 + f * this.numberSpace, 286 + this.posY, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight)
- }
- for (var e = this.oScoreData.highScore, f = 0; f < e.toString().length; f++) {
- b = parseFloat(e.toString().charAt(f));
- var c = b * this.oThinNumbersImgData.oData.spriteWidth % this.oThinNumbersImgData.img.width, d = Math.floor(b / (this.oThinNumbersImgData.img.width / this.oThinNumbersImgData.oData.spriteWidth)) * this.oThinNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oThinNumbersImgData.img, c, d, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight, 186 + f * this.numberSpace, 342 + this.posY, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight)
- }
- break;
- case "tutorial0":
- case "tutorial1":
- case "tutorial2":
- case "tutorial3":
- case "tutorial4":
- var b = parseFloat(this.panelType.charAt(this.panelType.length - 1)), c = b * this.oPanelsImgData.oData.spriteWidth % this.oPanelsImgData.img.width, d = Math.floor(b / (this.oPanelsImgData.img.width / this.oPanelsImgData.oData.spriteWidth)) * this.oPanelsImgData.oData.spriteHeight;
- a.drawImage(this.oPanelsImgData.img, c, d, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight, 0, 0 + this.posY, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight);
- break;
- case "pause":
- var b = 7, c = b * this.oPanelsImgData.oData.spriteWidth % this.oPanelsImgData.img.width, d = Math.floor(b / (this.oPanelsImgData.img.width / this.oPanelsImgData.oData.spriteWidth)) * this.oPanelsImgData.oData.spriteHeight;
- a.drawImage(this.oPanelsImgData.img, c, d, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight, 0, 0, this.oPanelsImgData.oData.spriteWidth, this.oPanelsImgData.oData.spriteHeight)
- }
- for (var f = 0; f < this.aButs.length; f++)
- 0 == f % 2 ? a.drawImage(this.aButs[f].oImgData.img, this.aButs[f].aPos[0] - this.aButs[f].oImgData.img.width / 2 + this.posY, this.aButs[f].aPos[1] - this.aButs[f].oImgData.img.height / 2 - 5 * Math.sin(this.incY + 180)) : a.drawImage(this.aButs[f].oImgData.img, this.aButs[f].aPos[0] - this.aButs[f].oImgData.img.width / 2 - this.posY, this.aButs[f].aPos[1] - this.aButs[f].oImgData.img.height / 2 - 5 * Math.sin(this.incY))
- }, a
- }();
- a.Panel = b
- }(Elements || (Elements = {}));
- var Elements;
- !function(a) {
- var b = function() {
- function a(a, b, c, d, e) {
- this.score = 0, this.oHudImgData = a, this.oThinNumbersImgData = b, this.oFatNumbersImgData = c, this.canvasWidth = d, this.canvasHeight = e, this.score = 0
- }
- return a.prototype.render = function(a, b) {
- a.drawImage(this.oHudImgData.img, 0, 0);
- for (var c = 0; c < this.score.toString().length; c++) {
- var d = parseFloat(this.score.toString().charAt(c)), e = d * this.oFatNumbersImgData.oData.spriteWidth % this.oFatNumbersImgData.img.width, f = Math.floor(d / (this.oFatNumbersImgData.img.width / this.oFatNumbersImgData.oData.spriteWidth)) * this.oFatNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oFatNumbersImgData.img, e, f, this.oFatNumbersImgData.oData.spriteWidth, this.oFatNumbersImgData.oData.spriteHeight, 175 + 25 * c - 25 * this.score.toString().length / 2, 18, this.oFatNumbersImgData.oData.spriteWidth, this.oFatNumbersImgData.oData.spriteHeight)
- }
- for (var c = 0; c < b.toString().length; c++) {
- var d = parseFloat(b.toString().charAt(c)), e = d * this.oThinNumbersImgData.oData.spriteWidth % this.oThinNumbersImgData.img.width, f = Math.floor(d / (this.oThinNumbersImgData.img.width / this.oThinNumbersImgData.oData.spriteWidth)) * this.oThinNumbersImgData.oData.spriteHeight;
- a.drawImage(this.oThinNumbersImgData.img, e, f, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight, 31 + 17 * c - 17 * b.toString().length / 2, 22, this.oThinNumbersImgData.oData.spriteWidth, this.oThinNumbersImgData.oData.spriteHeight)
- }
- }, a.prototype.updateScore = function(a) {
- this.score = a
- }, a
- }();
- a.Hud = b
- }(Elements || (Elements = {}));
- var __extends = this.__extends || function(a, b) {
- function c() {
- this.constructor = a
- }
- c.prototype = b.prototype, a.prototype = new c
- }, Elements;
- !function(a) {
- var b = function(a) {
- function b(b, c, d, e, f, g) {
- a.call(this, b, 15, 15, "unSelected" + e), this.canHit = !0, this.selected = !1, this.popDelay = -1, this.oDotImgData = b, this.oPopImgData = c, this.id = d, this.type = this.colour = e, this.canvasWidth = f, this.canvasHeight = g, this.offsetY = 10, this.frameInc = Math.ceil(20 * Math.random()), this.animEndedFunc = this.burst
- }
- return __extends(b, a), b.prototype.fall = function() {
- this.y = this.targY + 550, this.x = this.targX, TweenLite.to(this, .5, {y: this.targY,delay: .02 * this.id,ease: "Quad.easeOut"})
- }, b.prototype.replaceWithExistingDot = function(a) {
- this.y = a.targY, this.type = a.type, this.removeMe = !1, this.canHit = !0, this.x = this.targX, this.changeSpriteSheet(this.oDotImgData), this.frameInc = a.frameInc, this.unSelect(), TweenLite.to(this, .5, {y: this.targY,ease: "Quad.easeInOut"})
- }, b.prototype.replaceWithNewDot = function(a) {
- this.y = this.targY + 550, this.type = a, this.removeMe = !1, this.canHit = !0, this.x = this.targX, this.changeSpriteSheet(this.oDotImgData), this.frameInc = Math.ceil(20 * Math.random()), this.unSelect(), TweenLite.to(this, .5, {y: this.targY,ease: "Quad.easeOut"})
- }, b.prototype.trySelect = function(a) {
- var b = a.x - this.x, c = a.targY - this.targY, d = b * b + c * c;
- return 8100 > d && (a.colour == this.colour || this.type >= 6 || 6 == a.type) ? (this.select(), this.type >= 7 && (this.colour = a.colour), this.prevDot = a, this) : a
- }, b.prototype.select = function() {
- this.selected || (this.setAnimType("loop", "selected" + this.type, !1), this.selected = !0)
- }, b.prototype.unSelect = function() {
- this.setAnimType("loop", "unSelected" + this.type, !1), this.selected = !1, this.colour = this.type
- }, b.prototype.update = function(b) {
- a.prototype.updateAnimation.call(this, b), this.popDelay >= 0 && (this.popDelay += b, this.popDelay > this.popDelayTarg && this.pop())
- }, b.prototype.hit = function(a) {
- this.popDelay = 0, this.popDelayTarg = .25 * a
- }, b.prototype.pop = function() {
- this.popDelay = -1, this.changeSpriteSheet(this.oPopImgData), this.canHit = !1, this.setAnimType("once", "pop")
- }, b.prototype.burst = function() {
- this.removeMe = !0
- }, b
- }(Utils.AnimSprite);
- a.Dot = b
- }(Elements || (Elements = {}));
- var requestAnimFrame = function() {
- return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(a) {
- window.setTimeout(a, 1e3 / 60, (new Date).getTime())
- }
- }(), previousTime, canvas = document.getElementById("canvas"), ctx = canvas.getContext("2d");
- canvas.width = 383, canvas.height = 550;
- var canvasX, canvasY, canvasScaleX, canvasScaleY, div = document.getElementById("viewporter"), sound, music, allowSound = !1, muted = !1, splash, splashTimer = 0, screens, assetLib, preAssetLib, rotatePause = !1, manualPause = !1, isMobile = !1, gameState = "loading", aLangs = new Array("EN"), curLang = "", isBugBrowser = !1, deviceAgent = navigator.userAgent.toLowerCase();
- (deviceAgent.match(/(iphone|ipod|ipad)/) || deviceAgent.match(/(android)/) || deviceAgent.match(/(iemobile)/) || deviceAgent.match(/iphone/i) || deviceAgent.match(/ipad/i) || deviceAgent.match(/ipod/i) || deviceAgent.match(/blackberry/i) || deviceAgent.match(/bada/i)) && (isMobile = !0, deviceAgent.match(/(android)/) && !/Chrome/.test(navigator.userAgent) && (isBugBrowser = !0));
- var userInput = new Utils.UserInput(canvas, isBugBrowser);
- resizeCanvas(), window.onresize = function() {
- setTimeout(function() {
- resizeCanvas()
- }, 1)
- }, window.addEventListener("load", function() {
- setTimeout(function() {
- resizeCanvas()
- }, 0), window.addEventListener("orientationchange", function() {
- resizeCanvas()
- }, !1)
- }), ("undefined" != typeof window.AudioContext || "undefined" != typeof window.webkitAudioContext || -1 == navigator.userAgent.indexOf("Android")) && (allowSound = !0, sound = new Howl({urls: ["audio/sound.ogg", "audio/sound.m4a"],sprite: {pop1: [0, 400],pop2: [500, 400],pop3: [1e3, 750],click: [2e3, 300],timesUp: [2500, 2400],explode: [5e3, 1500],drag: [7e3, 400]}}), music = new Howl({urls: ["audio/music.ogg", "audio/music.m4a"],volume: .25,loop: !0}));
- var panel, hud, background, gameScore, gameNum = 0, aLevelUps, aTutorials = new Array({gameNum: 0,shown: !1,panelType: "tutorial0"}, {gameNum: 1,shown: !1,panelType: "tutorial1"}, {gameNum: 2,shown: !1,panelType: "tutorial2"}, {gameNum: 3,shown: !1,panelType: "tutorial3"}, {gameNum: 4,shown: !1,panelType: "tutorial4"}), panelFrame, aDots, lastSelectedDot, aSelected, blockTap = !1, removedDots, gameTime, longestChain, balloonsPopped, highScore = 0;
- loadPreAssets();
|