| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486 |
- function CGame(oData, iLevel) {
- var _oBgLevel;
- var _oInterface;
- var _iLevel;
- var _bPause;
- var _aBall;
- var _aBrick;
- var _aBullet;
- var _oPadding;
- var _pPaddingDim = {};
- var _iRadius;
- var _iCheckDistance;
- var _fPhysicsTime = 0;
- var _aBrickSectionUpRight;
- var _aBrickSectionUpLeft;
- var _aBrickSectionDownRight;
- var _aBrickSectionDownLeft;
- var _aBrickSectionCenterH;
- var _aBrickSectionCenterY;
- var _iCanvasWidthHalf;
- var _iCanvasHeightHalf;
- var _pBrickDim = {};
- var _iCenterYDiagram;
- var _iTotBrick;
- var _iRow;
- var _iCenterXDiagram;
- var _iOffsetYBricks;
- var _iOffsetXBricks;
- var _iOffsetBounceYBricks;
- var _iOffsetBounceXBrick;
- var _iOffsetXPadRight;
- var _iOffsetXPadLeft;
- var _iOffsetYBallMagnetic;
- var _oSettingsLevel;
- var _aBonusOccurrence;
- var _aBonus;
- var _iNum_Of_Bonus_Spawned;
- var _iSpaceBetWall;
- var _bLaunch;
- var _iTimeFireBall;
- var _iTimeFloor;
- var _iTimeMagnetic;
- var _iTimeShot;
- var _bAlmostABonus;
- var _iTimeReflectBrick;
- var _bLargePad;
- var _bFireBall;
- var _bFloor;
- var _bMagnetic;
- var _bShot;
- var _bSlowBall;
- var _bFastBall;
- var _bSmallPad;
- var _oSpriteBullet;
- var _oPowerUpEdge;
- var _iLife;
- var _iScore;
- var _iCurLevelScore;
- var _iBulletSPWRate;
- var _iFiredBullet;
- var _bShotLeft;
- var _iSpeedBallRate;
- var _iOffsetWallRight;
- var _iOffsetWallLeft;
- var _iOffsetBrickYPos;
- var _iOffsetBrickXPos;
- var _iOffsetBrickSectionX;
- var _iOffsetBrickSectionY;
- var _oDetectiveX = {};
- var _oDetectiveY = {};
- var _oCannons;
- var _iCurAngleRot;
- var _fTimeBounce;
- var _iLevelAds;
- this._init = function (iLevel) {
- _bPause = false;
- var oSpriteBall = s_oSpriteLibrary.getSprite("normal_ball");
- _iNum_Of_Bonus_Spawned = 0;
- _iCanvasWidthHalf = CANVAS_WIDTH / 2;
- _iCanvasHeightHalf = CANVAS_HEIGHT / 2;
- _aBall = new Array();
- _aBrick = new Array();
- _aBonus = new Array();
- _iSpaceBetWall = SPACE_BETWEEN_BRICKS;
- _iCheckDistance = 0;
- _iTotBrick = 0;
- var oSpriteBrick = s_oSpriteLibrary.getSprite("brick0");
- _pBrickDim = {x: oSpriteBrick.width / 2, y: oSpriteBrick.height / 2};
- _iSpeedBallRate = 1;
- _iRadius = (oSpriteBall.height / 2) + OFFSET_RADIUS_BALL;
- _iLevel = iLevel;
- _iScore = s_oMain.getScoreTillLevel(_iLevel);
- _iCurLevelScore = 0;
- _fTimeBounce = 0;
- _iBulletSPWRate = MAX_TIME_SHOT_BONUS;
- _iLife = LIFE;
- _oSettingsLevel = new CSettingsLevel();
- _aBrickSectionDownLeft = new Array();
- _aBrickSectionDownRight = new Array();
- _aBrickSectionUpLeft = new Array();
- _aBrickSectionUpRight = new Array();
- _aBrickSectionCenterH = new Array();
- _aBrickSectionCenterY = new Array();
- this.createPadding(CANVAS_WIDTH / 2);
- _bLargePad = false;
- _bFireBall = false;
- _bFloor = false;
- _bMagnetic = false;
- _bShot = false;
- _bSlowBall = false;
- _bFastBall = false;
- _bSmallPad = false;
- _bAlmostABonus = false;
- _iTimeShot = 0;
- _iLevelAds = 0;
- var iEdgeRightWidth = -OFFSETEDGERIGHT - _iRadius;
- var iEdgeLeftWidth = OFFSETEDGELEFT + _iRadius;
- _iOffsetWallRight = CANVAS_WIDTH + iEdgeRightWidth;
- _iOffsetWallLeft = iEdgeLeftWidth;
- _oBgLevel = createBitmap(s_oSpriteLibrary.getSprite("bg_level_1"));
- s_oStage.addChild(_oBgLevel); //Draws on canvas
- _oBgLevel.addEventListener("click", this.launchBall);
- s_oStage.setChildIndex(_oBgLevel, 0);
- _aBonusOccurrence = new Array();
- _iOffsetYBricks = _pBrickDim.y + _iRadius + OFFSET_HEIGHT_BRICK;
- _iOffsetXBricks = _pBrickDim.x + _iRadius + OFFSET_WIDTH_BRICK;
- _iOffsetBounceYBricks = _iOffsetYBricks + OFFSET_Y_BRICK;
- _iOffsetBounceXBrick = _iOffsetXBricks + OFFSET_X_BRICK;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- _iOffsetYBallMagnetic = OFFSET_PAD_MAGNETIC_Y;
- _iOffsetBrickYPos = (_pBrickDim.y * 2) + OFFSET_BRICK_Y_POS;
- _iOffsetBrickXPos = (_pBrickDim.x * 2);
- _iOffsetBrickSectionX = OFFSET_BRICK_SECTION_X + OFFSET_DETECTION_BRICK_SECTION_X;
- _iOffsetBrickSectionY = OFFSET_BRICK_SECTION_Y + OFFSET_DETECTION_BRICK_SECTION_Y;
- _iTimeReflectBrick = TIME_REFLECT_IRON_BRICK;
- _oInterface = new CInterface(_iScore);
- this.createABall(0, _oPadding.x, _oPadding.y - _iRadius - _pPaddingDim.y, oSpriteBall, true);
- this.createLevel();
- if (_iLevel === 1) {
- _oInterface.help(_iLevel);
- } else {
- _oInterface.showNumLevel(_iLevel);
- }
- _oInterface.numLevel(_iLevel);
- _bShotLeft = true;
- _bLaunch = false;
- _iFiredBullet = 0;
- setVolume("soundtrack", SOUNDTRACK_VOLUME_IN_GAME);
- };
- this.launchBall = function () {
- if (_bLaunch === false && _bPause === false) {
- if (_oPadding.x > _iCanvasWidthHalf) {
- _oPadding.x -= _iCanvasWidthHalf;
- _iCurAngleRot = -(_oPadding.x / _iCanvasWidthHalf);
- } else {
- _iCurAngleRot = _oPadding.x / _iCanvasWidthHalf;
- }
- _aBall[0].setPosition(null, _aBall[0].getY() - 3);
- _aBall[0].setDirection(_iCurAngleRot, -1);
- _aBall[0].setInfoData("OnPad", false);
- _bLaunch = true;
- } else if (_bMagnetic === true) {
- s_oGame.launchUnmagneticBall();
- }
- };
- this.createLevel = function () {
- this.setLevelBrick();
- document.dispatchEvent(new CustomEvent("start_level", {detail: { level: _iLevel } }));
- _aBonusOccurrence = _oSettingsLevel.createBonusOccurance(_iLevel);
- };
- this.createABall = function (iID, iXPos, iYPos, oSpriteBall, bVal, iXDir, iYDir) {
- _aBall[iID] = new CBall(iXPos, iYPos, oSpriteBall, iXDir, iYDir, _iSpeedBallRate, _bFireBall, _iRadius);
- _aBall[iID].setInfoData("ID", iID);
- _aBall[iID].setInfoData("OnPad", bVal);
- _aBall[iID].setInfoData("Collision", 0);
- _aBall[iID].changeRotation();
- if (_bFloor === true) {
- _aBall[iID].downFloor(true);
- }
- if (bVal === true) {
- _bLaunch = false;
- }
- };
- this.generateABonus = function (iXPos, iYPos) {
- var iTypeRand = Math.floor(Math.random() * _aBonusOccurrence.length);
- var oSpriteBonus = s_oSpriteLibrary.getSprite("bonus" + _aBonusOccurrence[iTypeRand]);
- _aBonus.push(new CBonus(iXPos, iYPos, oSpriteBonus, _aBonusOccurrence[iTypeRand]));
- _aBonus[_iNum_Of_Bonus_Spawned].setInfoData("ID", _iNum_Of_Bonus_Spawned);
- _iNum_Of_Bonus_Spawned++;
- };
- this.createPadding = function (iXPos) {
- if (_oPadding) {
- s_oStage.removeChild();
- }
- var oSprite = s_oSpriteLibrary.getSprite("paddle");
- var oData = {
- images: [oSprite],
- // width, height & registration point of each sprite
- frames: {width: oSprite.width / 7, height: oSprite.height / 2, regX: (oSprite.width / 2) / 7, regY: (oSprite.height / 2) / 7},
- animations: {
- small: {
- frames: [0]
- },
- normal: {
- frames: [6]
- },
- big: {
- frames: [12]
- },
- StoN: {
- frames: [1, 2, 3, 4, 5, 6]
- },
- NtoB: {
- frames: [7, 8, 9, 10, 11, 12]
- },
- BtoN: {
- frames: [11, 10, 9, 8, 7, 6]
- },
- NtoS: {
- frames: [5, 4, 3, 2, 1, 0]
- }
- }
- };
- var oSpriteSheet = new createjs.SpriteSheet(oData);
- _oPadding = createSprite(oSpriteSheet, "normal", (oSprite.width / 2) / 7, (oSprite.height / 2) / 2, oSprite.width / 7, oSprite.height / 2);
- _oPadding.x = iXPos;
- _oPadding.y = HEIGHT_OF_PADDLE;
- s_oStage.addChild(_oPadding);
- s_oStage.setChildIndex(_oPadding, 3);
- _pPaddingDim = {x: PADDLE_DIMENSION[1] / 2, y: ((oSprite.height / 2) / 2) - OFFSET_PAD_Y};
- };
- this.setLevelBrick = function () {
- var aLevelDiagram = BRICKS_LEVEL_POSITION[_iLevel-1];
- var iBrickNum = 0;
- var iMakeBrick = 0;
- _iRow = aLevelDiagram.length / MAX_BRICK_FOR_ROW;
- for (var i = 0; i < _iRow; i++) {
- for (var j = 0; j < MAX_BRICK_FOR_ROW; j++) {
- if (aLevelDiagram[iBrickNum] !== -1) {
- var oSpriteBrick = s_oSpriteLibrary.getSprite("brick" + aLevelDiagram[iBrickNum]);
- var iXPos = CANVAS_WIDTH / 2 - 250 - _iSpaceBetWall + ((_iOffsetBrickXPos + _iSpaceBetWall) * j);
- var iYPos = CANVAS_HEIGHT / 2 - 310 + ((_iOffsetBrickYPos + _iSpaceBetWall) * i);
- _aBrick[iMakeBrick] = new CBrick(iXPos, iYPos, oSpriteBrick, BRICKS_RESISTANCE[aLevelDiagram[iBrickNum]], BRICKS_DESTRUCTIBLE[aLevelDiagram[iBrickNum]]);
- _aBrick[iMakeBrick].setInfoData("resistance", BRICKS_RESISTANCE[aLevelDiagram[iBrickNum]]);
- _aBrick[iMakeBrick].setInfoData("score", BRICKS_SCORE[aLevelDiagram[iBrickNum]]);
- _aBrick[iMakeBrick].setInfoData("destructible", BRICKS_DESTRUCTIBLE[aLevelDiagram[iBrickNum]]);
- _aBrick[iMakeBrick].setChildIndex(4);
- if (BRICKS_DESTRUCTIBLE[aLevelDiagram[iBrickNum]] === true) {
- _iTotBrick++; //TOTAL BRICK TO DESTROY FOR COMPLETE THE LEVEL
- }
- else
- {
- //DON'T COUNT THE INDESTRUCTIBLE BRICKS
- }
- iMakeBrick++;
- }
- iBrickNum++;
- }
- }
- _iCheckDistance = _aBrick[iMakeBrick - 1].getY() + OFFSET_DIAGRAM_CHECK + _pBrickDim.y;
- this.createBricksSections();
- };
- this.loseBall = function (iID) {
- this.unloadBall(iID);
- if (_aBall.length < 1) {
- _iLife--;
- _oInterface.refreshBallLife(_iLife);
- if (_bLargePad === true) {
- this.deactiveLargePad();
- } else if (_bSmallPad === true) {
- this.deactiveSmallPad();
- }
- if (_bShot === true) {
- _iTimeShot = 0;
- } else if (_bMagnetic === true) {
- this.deactiveMagnetic();
- }
- if (_bFloor === true) {
- this.deactiveFloor();
- }
- if (_bFireBall === true) {
- this.stopFireSound();
- }
- _bLargePad = false;
- _bFireBall = false;
- _bFloor = false;
- _bMagnetic = false;
- _bSlowBall = false;
- _bFastBall = false;
- _iSpeedBallRate = 1;
- this.checkOtherActiveBonus();
- //create a ball if the user has more than a life
- if (_iLife > 0) {
- _bLaunch = false;
- var oSpriteBall = s_oSpriteLibrary.getSprite("normal_ball");
- this.createABall(0, _oPadding.x, _oPadding.y - _iRadius - _pPaddingDim.y, oSpriteBall, true);
- }
- else
- {
- _oInterface.gameOver(_iScore);
- }
- }
- playSound("ball_lose", 1, false);
- };
- this.setPause = function (bVal) {
- _bPause = bVal;
- };
- this.createBricksSections = function () {
- var iInsBrickRUp = 0;
- var iInsBrickLUp = 0;
- var iInsBrickRDown = 0;
- var iInsBrickLDown = 0;
- var iInsBrickCenterX = 0;
- var iInsBrickCenterY = 0;
- if (_iRow % 2 === 1) {
- _iCenterYDiagram = _aBrick[Math.floor(_aBrick.length / 2)].getY() + _pBrickDim.y * 2 + OFFSET_CENTER_Y_DIAGRAM;
- }
- else
- {
- _iCenterYDiagram = _aBrick[Math.floor(_aBrick.length / 2)].getY() - _pBrickDim.y + OFFSET_CENTER_Y_DIAGRAM;
- }
- _iCenterXDiagram = _iCanvasWidthHalf + _iOffsetYBricks + Math.floor(_iSpaceBetWall / 2) + OFFSET_CENTER_X_DIAGRAM;
- _oDetectiveX = {left: _iCenterXDiagram + _iOffsetBrickSectionX, right: _iCenterXDiagram - _iOffsetBrickSectionX, cleft: _iCenterXDiagram + OFFSET_BRICK_SECTION_X, cright: _iCenterXDiagram - OFFSET_BRICK_SECTION_X};
- _oDetectiveY = {down: _iCenterYDiagram + OFFSET_BRICK_SECTION_Y, up: _iCenterYDiagram - OFFSET_BRICK_SECTION_Y, cdown: _iCenterYDiagram + OFFSET_DETECTION_BRICK_SECTION_Y, cup: _iCenterYDiagram - OFFSET_DETECTION_BRICK_SECTION_Y};
- for (var i = 0; i < _aBrick.length; i++) {
- //INSERTION OF BRICKS IN SUB ARRAY
- if (_aBrick[i].getX() <= _iCenterXDiagram - OFFSET_BRICK_SECTION_X && _aBrick[i].getY() < _iCenterYDiagram - OFFSET_BRICK_SECTION_Y) {
- _aBrickSectionUpLeft[iInsBrickLUp] = _aBrick[i];
- iInsBrickLUp++;
- } else
- if (_aBrick[i].getX() >= _iCenterXDiagram + OFFSET_BRICK_SECTION_X && _aBrick[i].getY() < _iCenterYDiagram - OFFSET_BRICK_SECTION_Y) {
- _aBrickSectionUpRight[iInsBrickRUp] = _aBrick[i];
- iInsBrickRUp++;
- } else
- if (_aBrick[i].getX() <= _iCenterXDiagram - OFFSET_BRICK_SECTION_X && _aBrick[i].getY() > _iCenterYDiagram + OFFSET_BRICK_SECTION_Y) {
- _aBrickSectionDownLeft[iInsBrickLDown] = _aBrick[i];
- iInsBrickLDown++;
- } else
- if (_aBrick[i].getX() >= _iCenterXDiagram + OFFSET_BRICK_SECTION_X && _aBrick[i].getY() > _iCenterYDiagram + OFFSET_BRICK_SECTION_Y) {
- _aBrickSectionDownRight[iInsBrickRDown] = _aBrick[i];
- iInsBrickRDown++;
- } else if (_aBrick[i].getX() <= _iCenterXDiagram + OFFSET_BRICK_SECTION_X && _aBrick[i].getX() >= _iCenterXDiagram - OFFSET_BRICK_SECTION_X) {
- _aBrickSectionCenterH[iInsBrickCenterX] = _aBrick[i];
- iInsBrickCenterX++;
- } else if (_aBrick[i].getY() <= _iCenterYDiagram + OFFSET_BRICK_SECTION_Y && _aBrick[i].getY() >= _iCenterYDiagram - OFFSET_BRICK_SECTION_Y && _aBrick[i] && _aBrick[i].getX() >= _iCenterXDiagram + OFFSET_BRICK_SECTION_X || _aBrick[i].getX() <= _iCenterXDiagram - OFFSET_BRICK_SECTION_X) {
- _aBrickSectionCenterY[iInsBrickCenterY] = _aBrick[i];
- iInsBrickCenterY++;
- }
- }
- };
- this.onExit = function () {
- s_oGame.unload();
- s_oMain.gotoMenu();
- document.dispatchEvent(new CustomEvent("end_level", {detail: { score: _iScore, level: _iLevel } }));
- document.dispatchEvent(new CustomEvent("show_interlevel_ad"));
- document.dispatchEvent(new CustomEvent("end_session", {detail: { score: _iScore, level: _iLevel } }));
- setVolume("soundtrack", 1);
- };
- this.bonusLargePad = function () {
- _iCurLevelScore += BONUS_SCORE.s0;
- _iScore += BONUS_SCORE.s0;
- _oInterface.refreshScore(_iScore);
- if (_bSmallPad === true) {
- this.deactiveSmallPad();
- return;
- } else if (_bMagnetic === true) {
- this.deactiveMagnetic();
- } else if (_oCannons) {
- _iTimeShot = 0;
- _oCannons.gotoAndPlay("go");
- _oCannons.on("animationend", function () {
- s_oStage.removeChild(_oCannons);
- _oCannons = null;
- });
- }
- this.audioPowerUpBonus();
- if (_bLargePad) {
- return;
- }
- _pPaddingDim.x = PADDLE_DIMENSION[2] / 2;
- _oPadding.gotoAndPlay("NtoB");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("big");
- });
- _bLargePad = true;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- };
- this.bonusSmallPad = function () {
- _iCurLevelScore += BONUS_SCORE.s9;
- _iScore += BONUS_SCORE.s9;
- _oInterface.refreshScore(_iScore);
- this.audioPowerUpMalus();
- if (_bLargePad === true) {
- this.deactiveLargePad();
- return;
- } else if (_bMagnetic === true) {
- this.deactiveMagnetic();
- } else if (_oCannons) {
- _iTimeShot = 0;
- _oCannons.gotoAndPlay("go");
- _oCannons.on("animationend", function () {
- s_oStage.removeChild(_oCannons);
- _oCannons = null;
- });
- }
- if (_bSmallPad) {
- return;
- }
- _pPaddingDim.x = PADDLE_DIMENSION[0] / 2;
- _oPadding.gotoAndPlay("NtoS");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("small");
- });
- _bSmallPad = true;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- };
- this.bonusMultiBall = function () {
- _iCurLevelScore += BONUS_SCORE.s5;
- _iScore += BONUS_SCORE.s5;
- _oInterface.refreshScore(_iScore);
- if (_aBall.length >= MAX_BALL_SPAWN) {
- return;
- }
- this.audioPowerUpBonus();
- var iAddBalls = 0;
- var iCnt = 0;
- var oSpriteBall;
- iAddBalls = _aBall.length + BONUS_MULTI_BALL;
- var iNBallsPres = _aBall.length;
- if (_bFireBall === false && _bMagnetic === false) {
- oSpriteBall = s_oSpriteLibrary.getSprite("normal_ball");
- } else if (_bFireBall === true) {
- oSpriteBall = s_oSpriteLibrary.getSprite("fire_ball");
- }
- else {
- oSpriteBall = s_oSpriteLibrary.getSprite("iron_ball");
- }
- for (var i = iNBallsPres; i < iNBallsPres + iAddBalls; i++) {
- if (iCnt % 2 === 0) {
- this.createABall(i, _aBall[iCnt].getX(), _aBall[iCnt].getY(), oSpriteBall, false, 1, -1);
- }
- else
- {
- this.createABall(i, _aBall[iCnt].getX(), _aBall[iCnt].getY(), oSpriteBall, false, -1, 1);
- }
- iCnt++;
- }
- };
- this.bonusFireBall = function () {
- _iCurLevelScore += BONUS_SCORE.s1;
- _iScore += BONUS_SCORE.s1;
- _oInterface.refreshScore(_iScore);
- _iTimeFireBall = BONUS_TIME.t1;
- if (_bFireBall === true) {
- return;
- }
- var oSpriteFireBall = s_oSpriteLibrary.getSprite("fire_ball");
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].changeSprite(oSpriteFireBall, "fire");
- }
- _bFireBall = true;
- if (_bMagnetic === true) {
- s_oStage.removeChild(_oPadding);
- this.createPadding(_oPadding.x);
- this.launchUnmagneticBall();
- _bMagnetic = false;
- }
- _bAlmostABonus = true;
- playSound("fireball", 1,true);
-
- this.audioPowerUpBonus();
- };
- this.createFloor = function () {
- var oSpriteEdge = s_oSpriteLibrary.getSprite("powerup_edge");
- _oPowerUpEdge = createBitmap(oSpriteEdge);
- _oPowerUpEdge.x = _iCanvasWidthHalf;
- _oPowerUpEdge.y = CANVAS_HEIGHT + oSpriteEdge.height / 2;
- _oPowerUpEdge.regX = oSpriteEdge.width / 2;
- _oPowerUpEdge.regY = oSpriteEdge.height / 2;
- s_oStage.addChild(_oPowerUpEdge);
- s_oStage.setChildIndex(_oPowerUpEdge, s_oStage.numChildren - 1);
- createjs.Tween.get(_oPowerUpEdge).to({y: 940}, 800, createjs.Ease.backOut);
- };
- this.bonusMagnetic = function () {
- _iCurLevelScore += BONUS_SCORE.s3;
- _iScore += BONUS_SCORE.s3;
- _oInterface.refreshScore(_iScore);
- _iTimeMagnetic = BONUS_TIME.t3;
- this.audioPowerUpBonus();
- if (_bMagnetic === true) {
- return;
- }
- var oSpriteIronBall = s_oSpriteLibrary.getSprite("iron_ball");
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].changeSprite(oSpriteIronBall, "magnetic");
- }
- if (_bLargePad === true) {
- _oPadding.gotoAndPlay("BtoN");
- _oPadding.on("animationend", function () {
- s_oStage.removeChild(_oPadding);
- s_oGame.createMagneticPad(_oPadding.x);
- });
- _bLargePad = false;
- } else if (_bSmallPad === true) {
- _oPadding.gotoAndPlay("StoN");
- _oPadding.on("animationend", function () {
- s_oStage.removeChild(_oPadding);
- s_oGame.createMagneticPad(_oPadding.x);
- });
- _bSmallPad = false;
- } else if (_oCannons) {
- _iTimeShot = 0;
- _oCannons.gotoAndPlay("go");
- _oCannons.on("animationend", function () {
- s_oStage.removeChild(_oCannons);
- _oCannons = null;
- s_oStage.removeChild(_oPadding);
- s_oGame.createMagneticPad(_oPadding.x);
- });
- } else {
- this.createMagneticPad(_oPadding.x);
- }
- if (_bFireBall === true) {
- _bFireBall = false;
- this.stopFireSound();
- }
- _bMagnetic = true;
- _bAlmostABonus = true;
- };
- this.createMagneticPad = function (iXPos) {
- s_oStage.removeChild(_oPadding);
- var oSprite = s_oSpriteLibrary.getSprite("paddle_magnet");
- var oData = {
- images: [oSprite],
- // width, height & registration point of each sprite
- frames: {width: oSprite.width / 5, height: oSprite.height / 2, regX: ((oSprite.width + REG_X_OFFSET_PADDLE_MAGNETIC) / 2) / 5, regY: ((oSprite.height + REG_Y_OFFSET_PADDLE_MAGNETIC) / 2) / 7},
- animations: {magnetic: [0, 9, "magnetic", 0.5]}
- };
- var oSpriteSheet = new createjs.SpriteSheet(oData);
- _oPadding = createSprite(oSpriteSheet, "magnetic", ((oSprite.width + REG_X_OFFSET_PADDLE_MAGNETIC) / 2) / 5, ((oSprite.height + REG_Y_OFFSET_PADDLE_MAGNETIC) / 2) / 2, oSprite.width / 5, oSprite.height / 2);
- _oPadding.x = iXPos;
- _oPadding.y = HEIGHT_OF_PADDLE;
- s_oStage.addChild(_oPadding);
- _pPaddingDim.x = PADDLE_DIMENSION[1] / 2;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- };
- this.bonusLife = function () {
- _iCurLevelScore += BONUS_SCORE.s4;
- _iScore += BONUS_SCORE.s4;
- _oInterface.refreshScore(_iScore);
- _oInterface.refreshBallLife(_iLife);
- _iLife++;
- this.audioPowerUpBonus();
- };
- this.bonusSlowBall = function () {
- _iCurLevelScore += BONUS_SCORE.s7;
- _iScore += BONUS_SCORE.s7;
- _oInterface.refreshScore(_iScore);
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].setVelocityRate(_iSpeedBallRate);
- }
- if (_iSpeedBallRate < 1) {
- _bSlowBall = true;
- this.audioPowerUpMalus();
- }
- else
- {
- this.audioPowerUpBonus();
- }
- if (_iSpeedBallRate > MIN_VELOCITY_LIMIT) {
- _iSpeedBallRate -= SPEED_DOWN_BALL;
- }
- if (_iSpeedBallRate < MIN_VELOCITY_LIMIT) {
- _iSpeedBallRate = MIN_VELOCITY_LIMIT;
- }
- };
- this.bonusFastBall = function () {
- _iCurLevelScore += BONUS_SCORE.s8;
- _iScore += BONUS_SCORE.s8;
- _oInterface.refreshScore(_iScore);
- if (_iSpeedBallRate < MAX_VELOCITY_LIMIT) {
- _iSpeedBallRate += SPEED_UP_BALL;
- } else {
- return;
- }
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].setVelocityRate(_iSpeedBallRate);
- }
- if (_iSpeedBallRate > 1) {
- _bFastBall = true;
- this.audioPowerUpMalus();
- }
- else
- {
- this.audioPowerUpBonus();
- }
- };
- this.bonusShot = function () {
- _iCurLevelScore += BONUS_SCORE.s6;
- _iScore += BONUS_SCORE.s6;
- _oInterface.refreshScore(_iScore);
- this.audioPowerUpBonus();
- _iTimeShot = BONUS_TIME.t6;
- if (_bShot === false) {
- _bShot = true;
- _oSpriteBullet = s_oSpriteLibrary.getSprite("bullet");
- _aBullet = new Array();
- if (_bLargePad === true) {
- _oPadding.gotoAndPlay("BtoN");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("normal");
- });
- _bLargePad = false;
- } else if (_bSmallPad === true) {
- _oPadding.gotoAndPlay("StoN");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("normal");
- });
- _bSmallPad = false;
- } else if (_bMagnetic === true) {
- this.deactiveMagnetic();
- }
- if (!_oCannons) {
- this.createCannons();
- }
- else
- {
- _oCannons.gotoAndPlay("come");
- _oCannons.on("animationend", function () {
- _oCannons.gotoAndStop(5);
- });
- }
- }
- _bAlmostABonus = true;
- };
- this.bonusFloor = function () {
- _iCurLevelScore += BONUS_SCORE.s2;
- _iScore += BONUS_SCORE.s2;
- _oInterface.refreshScore(_iScore);
- _iTimeFloor = BONUS_TIME.t2;
- if (_bFloor !== true) {
- if (!_oPowerUpEdge) {
- this.createFloor();
- }
-
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].downFloor(true);
- }
- }
- _bFloor = true;
- _bAlmostABonus = true;
- this.audioPowerUpBonus();
- };
- this.createCannons = function () {
- var oSprite = s_oSpriteLibrary.getSprite("cannons");
- var oData = {
- images: [oSprite],
- // width, height & registration point of each sprite
- frames: {width: oSprite.width / 3, height: oSprite.height / 2, regX: (oSprite.width / 2) / 3, regY: (oSprite.height / 2) / 2},
- animations: {
- come: {
- frames: [0, 1, 2, 3, 4, 5],
- speed: 0.5
- },
- go: {
- frames: [5, 4, 3, 2, 1, 0],
- speed: 0.5
- }
- }
- };
- var oSpriteSheet = new createjs.SpriteSheet(oData);
- _oCannons = createSprite(oSpriteSheet, "come", (oSprite.width / 2) / 3, (oSprite.height / 2) / 2, oSprite.width / 3, oSprite.height / 2);
- _oCannons.x = _oPadding.x;
- _oCannons.y = _oPadding.y + OFFSET_CANNONS_Y_POS;
- s_oStage.addChild(_oCannons);
- _oCannons.on("animationend", function () {
- _oCannons.gotoAndStop(5);
- });
- s_oStage.setChildIndex(_oCannons, 5);
- _pPaddingDim.x = (PADDLE_DIMENSION[1] + OFFSET_DIM_X_CANNONS) / 2;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- };
- this.launchUnmagneticBall = function () {
- for (var i = 0; i < _aBall.length; i++) {
- if (_aBall[i].getInfoData("OnPad") === true) {
- var iDirection = _aBall[i].getInfoData("Collision") / _pPaddingDim.x;
- var iCurAngleRot = Math.sin(iDirection);
- _aBall[i].setPosition(null, _aBall[i].getY() - 2);
- _aBall[i].changeDirection(-iCurAngleRot, -1, false, "launch");
- _aBall[i].setInfoData("OnPad", false);
- _aBall[i].changeRotation();
- }
- }
- };
- this.unload = function () {
- _oInterface.unload();
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].unload();
- }
- for (var i = 0; i < _aBonus.length; i++) {
- _aBonus[i].unload();
- }
- createjs.Tween.removeAllTweens();
- s_oStage.removeAllChildren();
- };
- this.__updatePhysics = function (fPhysicsScaleTime) {
- var fSecond = (1 / createjs.Ticker.framerate) / _iPhysicsUpdateTime;
- _oPadding.x = s_oStage.mouseX/s_iScaleFactor;
- if (_oPadding.x < _iOffsetXPadLeft) {
- _oPadding.x = _iOffsetXPadLeft;
- }
- if (_oPadding.x > _iOffsetXPadRight) {
- _oPadding.x = _iOffsetXPadRight;
- }
- if (_oCannons) {
- _oCannons.x = _oPadding.x;
- }
- for (var i = 0; i < _aBall.length; i++) {
- if (_aBall[i].getInfoData("OnPad") === false) {
- var iBallX = _aBall[i].getX();
- var iBallY = _aBall[i].getY();
- _aBall[i].update(fPhysicsScaleTime);
- if (iBallX > _oPadding.x - _pPaddingDim.x && iBallX < _oPadding.x + _pPaddingDim.x && iBallY > (_oPadding.y - _pPaddingDim.y) - _iRadius && iBallY < (_oPadding.y + _pPaddingDim.y) + _iRadius) {
- if (_bMagnetic === false) {
- if (_iCurAngleRot === 0) {
- var iCollision = (_oPadding.x - iBallX);
- var iDirection = iCollision / _pPaddingDim.x;
- _aBall[i].setPosition(null, iBallY - 1);
- _iCurAngleRot = Math.sin(iDirection);
- _aBall[i].changeDirection(-_iCurAngleRot, -1, true);
- _aBall[i].changeRotation();
- }
- _iCurAngleRot = 0;
- }
- else
- {
- var iCollision = (_oPadding.x - _aBall[i].getX());
- _aBall[i].setInfoData("Collision", iCollision);
- if (_aBall[i].getInfoData("OnPad") === false) {
- _aBall[i].setPosition(null, _oPadding.y - _pPaddingDim.y - _iRadius);
- _aBall[i].setInfoData("OnPad", true);
- }
- break;
- }
- this.audioBoing();
- }
- if (iBallY < _iCheckDistance) {
- if (iBallX < _oDetectiveX.left && iBallY > _oDetectiveY.down) {
- for (var j = 0; j < _aBrickSectionDownLeft.length; j++) {
- if (iBallX > _aBrickSectionDownLeft[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionDownLeft[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionDownLeft[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionDownLeft[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionDownLeft[j].getX();
- var iBrickY = _aBrickSectionDownLeft[j].getY();
- this.gestureBricks(_aBrickSectionDownLeft, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- break;
- }
- }
- } else if (iBallX > _oDetectiveX.right && iBallY > _oDetectiveY.down) {
- for (var j = 0; j < _aBrickSectionDownRight.length; j++) {
- if (iBallX > _aBrickSectionDownRight[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionDownRight[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionDownRight[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionDownRight[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionDownRight[j].getX();
- var iBrickY = _aBrickSectionDownRight[j].getY();
- this.gestureBricks(_aBrickSectionDownRight, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- break;
- }
- }
- }
- else if (iBallX < _oDetectiveX.left && iBallY < _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionUpLeft.length; j++) {
- if (iBallX > _aBrickSectionUpLeft[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionUpLeft[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionUpLeft[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionUpLeft[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionUpLeft[j].getX();
- var iBrickY = _aBrickSectionUpLeft[j].getY();
- this.gestureBricks(_aBrickSectionUpLeft, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- }
- }
- } else if (iBallX > _oDetectiveX.right && iBallY < _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionUpRight.length; j++) {
- if (iBallX > _aBrickSectionUpRight[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionUpRight[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionUpRight[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionUpRight[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionUpRight[j].getX();
- var iBrickY = _aBrickSectionUpRight[j].getY();
- this.gestureBricks(_aBrickSectionUpRight, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- break;
- }
- }
- }
- if (iBallX > _oDetectiveX.cright && iBallX < _oDetectiveX.cleft) {
- for (var j = 0; j < _aBrickSectionCenterH.length; j++) {
- if (iBallX > _aBrickSectionCenterH[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionCenterH[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionCenterH[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionCenterH[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionCenterH[j].getX();
- var iBrickY = _aBrickSectionCenterH[j].getY();
- this.gestureBricks(_aBrickSectionCenterH, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- break;
- }
- }
- }
- if (iBallY < _oDetectiveY.cdown && iBallY > _oDetectiveY.cup) {
- for (var j = 0; j < _aBrickSectionCenterY.length; j++) {
- if (iBallX > _aBrickSectionCenterY[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionCenterY[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionCenterY[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionCenterY[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionCenterY[j].getX();
- var iBrickY = _aBrickSectionCenterY[j].getY();
- this.gestureBricks(_aBrickSectionCenterY, j, iBrickX, iBrickY);
- this.ballBounce(i, iBallX, iBallY, iBrickX, iBrickY);
- break;
- }
- }
- }
- }
- }
- else
- {
- _aBall[i].setPosition(_oPadding.x - _aBall[i].getInfoData("Collision"), null);
- if (_aBall[i].getX() > _iOffsetWallRight) {
- _aBall[i].setInfoData("Collision", _aBall[i].getInfoData("Collision") + 1);
- } else if (_aBall[i].getX() < _iOffsetWallLeft) {
- _aBall[i].setInfoData("Collision", _aBall[i].getInfoData("Collision") - 1);
- }
- }
- }
- //ACTIVE BONUS
- this.timeBonus(fSecond);
- //REFLECT IRON BRICK
- if (_iTimeReflectBrick > 0) {
- _iTimeReflectBrick -= fSecond;
- }
- else
- {
- for (i = 0; i < _aBrick.length; i++) {
- if (_aBrick[i].getInfoData("destructible") === false) {
- _aBrick[i].reflectBrick();
- _aBrick[i].setInfoData("Reflect", true);
- }
- _iTimeReflectBrick = TIME_REFLECT_IRON_BRICK;
- }
- }
- if (_fTimeBounce > 0) {
- _fTimeBounce -= fSecond;
- }
- //BONUS
- if (_iNum_Of_Bonus_Spawned === 0) {
- return;
- }
- else
- {
- this.bonusGesture();
- }
- };
- this.allBrickDestroyed = function () {
- if (_iTotBrick > 0) {
- return;
- }
- else
- {
- this.setPause(true);
- _oInterface.levelComplete(_iLevel, _iScore);
- _iLevelAds++;
- if (_iLevelAds === NUM_LEVELS_FOR_ADS) {
- _iLevelAds = 0;
- document.dispatchEvent(new CustomEvent("show_interlevel_ad"));
- }
- document.dispatchEvent(new CustomEvent("end_level", {detail: { score: _iScore, level: _iLevel } }));
- //document.dispatchEvent(new CustomEvent("submit_score", {detail: { score: _iScore, level: _iLevel } }));
-
- s_oMain.setLocalStorageLevel(_iLevel+1);
- s_oMain.setLocalStorageScore(_iCurLevelScore,_iLevel);
- }
- if (_bFireBall === true) {
- this.stopFireSound();
- }
- };
- this.stopFireSound = function () {
- stopSound("fireball");
- };
- this.timeBonus = function (fSecond) {
- if (_bAlmostABonus === true) {
- if (_bFireBall === true) {
- if (_iTimeFireBall > 0) {
- _iTimeFireBall -= fSecond;
- }
- else {
- this.deactiveFireBall();
- this.checkOtherActiveBonus();
- }
- } else if (_bMagnetic === true) {
- if (_iTimeMagnetic > 0) {
- _iTimeMagnetic -= fSecond;
- }
- else {
- this.deactiveMagnetic();
- this.checkOtherActiveBonus();
- }
- }
- if (_bFloor === true) {
- if (_iTimeFloor > 0) {
- _iTimeFloor -= fSecond;
- }
- else {
- this.deactiveFloor();
- this.checkOtherActiveBonus();
- }
- }
- if (_bShot === true) {
- if (_iTimeShot > 0) {
- _iTimeShot -= fSecond;
- _iBulletSPWRate -= 1;
- if (_iBulletSPWRate < 0) {
- if (_bShotLeft === true) {
- _aBullet.push(new CBullet(_oPadding.x - _pPaddingDim.x, _oPadding.y - _pPaddingDim.y, _oSpriteBullet));
- _bShotLeft = false;
- } else {
- _aBullet.push(new CBullet(_oPadding.x + _pPaddingDim.x, _oPadding.y - _pPaddingDim.y, _oSpriteBullet));
- _bShotLeft = true;
- }
- _aBullet[_iFiredBullet].setIndex(_iFiredBullet);
- _iBulletSPWRate = MAX_TIME_SHOT_BONUS;
- _iFiredBullet++;
- this.audioBullet();
- }
- }
- if (_aBullet.length < 1 && _iTimeShot < 0.1) {
- this.deactiveShot();
- this.checkOtherActiveBonus();
- } else {
- this.detectiveCollisionBullet();
- }
- }
- }
- };
- this.nextLevel = function () {
- this.unloadLevel();
- _iLevel++;
- this.createLevel();
- var oSpriteBall = s_oSpriteLibrary.getSprite("normal_ball");
- _iSpeedBallRate = 1;
- this.createABall(0, _oPadding.x, _oPadding.y - _iRadius - _pPaddingDim.y, oSpriteBall, true);
- _bShotLeft = true;
- _bLaunch = false;
- _iFiredBullet = 0;
- _iCurLevelScore = 0;
-
- _oInterface.showNumLevel(_iLevel);
- _oInterface.numLevel(_iLevel);
- };
- this.audioBrickExplosion = function () {
- playSound("brick_explosion", 1, false);
- };
- this.audioPowerUpBonus = function () {
- playSound("power_up_bonus", 1, false);
- };
- this.audioPowerUpMalus = function () {
- playSound("power_up_malus", 1, false);
- };
- this.audioBrickMetal = function () {
- playSound("brick_metal", 1, false);
- };
- this.audioBullet = function () {
- playSound("bullet", 1, false);
- };
- this.audioBoing = function () {
- playSound("boing", 1, false);
- };
- this.ballBounce = function (iID, iBallX, iBallY, iBrickX, iBrickY) {
- if (_bFireBall === true || _fTimeBounce > 0) {
- return;
- }
- if (iBallX > iBrickX + _iOffsetBounceXBrick || iBallX < iBrickX - _iOffsetBounceXBrick && iBallY > iBrickY - _iOffsetBounceYBricks && iBallY < iBrickY + _iOffsetBounceYBricks) {
- if (iBallX > iBrickX) {
- _aBall[iID].changeDirection(-1, 1, false, "side");
- _aBall[iID].setPosition(_aBall[iID].getX() + 3, null);
- _fTimeBounce = TIME_BOUNCE_BALL;
- }
- else
- {
- _aBall[iID].changeDirection(-1, 1, false, "side");
- _aBall[iID].setPosition(_aBall[iID].getX() - 3, null);
- _fTimeBounce = TIME_BOUNCE_BALL;
- }
- }
- else
- if (iBallX > iBrickX - _iOffsetXBricks && iBallX < iBrickX + _iOffsetXBricks && iBallY > iBrickY - _iOffsetYBricks && iBallY < iBrickY + _iOffsetYBricks) {
- if (iBallY > iBrickY) {
- _aBall[iID].changeDirection(1, 1, false, "base");
- _aBall[iID].setPosition(null, _aBall[iID].getY() + 3);
- _fTimeBounce = TIME_BOUNCE_BALL;
- }
- else
- {
- _aBall[iID].changeDirection(1, -1, false, "base");
- _aBall[iID].setPosition(null, _aBall[iID].getY() - 3);
- _fTimeBounce = TIME_BOUNCE_BALL;
- }
- _aBall[iID].changeRotation();
- }
- this.audioBoing();
- };
- this.gestureBricks = function (aBrick, iID, iBrickX, iBrickY) {
- if (aBrick[iID].getInfoData("destructible") === true || _bFireBall === true) {
- if (aBrick[iID].getInfoData("resistance") === 0) {
- _iCurLevelScore += aBrick[iID].getInfoData("score");
- _iScore += aBrick[iID].getInfoData("score");
- _oInterface.refreshScore(_iScore);
- if (aBrick[iID].getInfoData("destructible") === true) {
- _iTotBrick--;
- this.allBrickDestroyed();
- }
- if (aBrick[iID].getInfoData("Effect") === false) {
- aBrick[iID].unload();
- }
- else
- {
- aBrick[iID].animBrick("destroyed");
- this.audioBrickExplosion();
- }
- this.randomBonus(iBrickX, iBrickY);
- aBrick.splice(iID, 1);
- }
- else
- {
- aBrick[iID].setInfoData("resistance", aBrick[iID].getInfoData("resistance") - 1);
- aBrick[iID].damageBrick(aBrick[iID].getInfoData("resistance"));
- playSound("brick_crack", 1, false);
- }
- } else {
- aBrick[iID].reflectBrick();
- aBrick[iID].setInfoData("Reflect", true);
- this.audioBrickMetal();
- }
- };
- this.detectiveCollisionBullet = function () {
- for (var i = 0; i < _aBullet.length; i++) {
- var iBallX = _aBullet[i].getX();
- var iBallY = _aBullet[i].getY();
- _aBullet[i].update();
- if (iBallY < _iCheckDistance) {
- if (iBallX < _oDetectiveX.left && iBallY > _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionDownLeft.length; j++) {
- if (iBallX > _aBrickSectionDownLeft[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionDownLeft[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionDownLeft[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionDownLeft[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionDownLeft[j].getX();
- var iBrickY = _aBrickSectionDownLeft[j].getY();
- this.gestureBricks(_aBrickSectionDownLeft, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- break;
- }
- }
- } else if (iBallX > _oDetectiveX.right && iBallY > _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionDownRight.length; j++) {
- if (iBallX > _aBrickSectionDownRight[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionDownRight[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionDownRight[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionDownRight[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionDownRight[j].getX();
- var iBrickY = _aBrickSectionDownRight[j].getY();
- this.gestureBricks(_aBrickSectionDownRight, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- break;
- }
- }
- }
- else if (iBallX < _oDetectiveX.left && iBallY < _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionUpLeft.length; j++) {
- if (iBallX > _aBrickSectionUpLeft[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionUpLeft[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionUpLeft[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionUpLeft[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionUpLeft[j].getX();
- var iBrickY = _aBrickSectionUpLeft[j].getY();
- this.gestureBricks(_aBrickSectionUpLeft, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- }
- }
- } else if (iBallX > _oDetectiveX.right && iBallY < _iCenterYDiagram) {
- for (var j = 0; j < _aBrickSectionUpRight.length; j++) {
- if (iBallX > _aBrickSectionUpRight[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionUpRight[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionUpRight[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionUpRight[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionUpRight[j].getX();
- var iBrickY = _aBrickSectionUpRight[j].getY();
- this.gestureBricks(_aBrickSectionUpRight, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- break;
- }
- }
- }
- if (iBallX > _oDetectiveX.cright && iBallX < _oDetectiveX.cleft) {
- for (var j = 0; j < _aBrickSectionCenterH.length; j++) {
- if (iBallX > _aBrickSectionCenterH[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionCenterH[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionCenterH[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionCenterH[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionCenterH[j].getX();
- var iBrickY = _aBrickSectionCenterH[j].getY();
- this.gestureBricks(_aBrickSectionCenterH, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- break;
- }
- }
- }
- if (iBallY < _oDetectiveY.cdown && iBallY > _oDetectiveY.cup) {
- for (var j = 0; j < _aBrickSectionCenterY.length; j++) {
- if (iBallX > _aBrickSectionCenterY[j].getX() - _iOffsetXBricks && iBallX < _aBrickSectionCenterY[j].getX() + _iOffsetXBricks && iBallY > _aBrickSectionCenterY[j].getY() - _iOffsetYBricks && iBallY < _aBrickSectionCenterY[j].getY() + _iOffsetYBricks) {
- var iBrickX = _aBrickSectionCenterY[j].getX();
- var iBrickY = _aBrickSectionCenterY[j].getY();
- this.gestureBricks(_aBrickSectionCenterY, j, iBrickX, iBrickY);
- this.unloadBullet(_aBullet[i].getIndex());
- break;
- }
- }
- }
- }
- }
- };
- this.deactiveFireBall = function () {
- var oSpriteNormalBall = s_oSpriteLibrary.getSprite("normal_ball");
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].changeSprite(oSpriteNormalBall, "normal");
- }
- _bFireBall = false;
- this.stopFireSound();
- };
- this.deactiveLargePad = function () {
- _oPadding.gotoAndPlay("BtoN");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("normal");
- });
- _pPaddingDim.x = PADDLE_DIMENSION[1] / 2;
- _iOffsetXPadRight = CANVAS_WIDTH - 102 - _pPaddingDim.x;
- _iOffsetXPadLeft = 102 + _pPaddingDim.x;
- _bLargePad = false;
- };
- this.deactiveSmallPad = function () {
- _oPadding.gotoAndPlay("StoN");
- _oPadding.on("animationend", function () {
- _oPadding.gotoAndStop("normal");
- });
- _pPaddingDim.x = PADDLE_DIMENSION[1] / 2;
- _iOffsetXPadRight = CANVAS_WIDTH - 102 - _pPaddingDim.x;
- _iOffsetXPadLeft = 102 + _pPaddingDim.x;
- _bSmallPad = false;
- };
- this.deactiveFloor = function () {
- var oSpriteEdge = s_oSpriteLibrary.getSprite("powerup_edge");
- createjs.Tween.get(_oPowerUpEdge).to({y: CANVAS_HEIGHT + oSpriteEdge.height / 2}, 800, createjs.Ease.backIn).call(function () {
- if (_bFloor === false) {
- s_oStage.removeChild(_oPowerUpEdge);
- _oPowerUpEdge = null;
- }
- else
- {
- createjs.Tween.get(_oPowerUpEdge).to({y: 940}, 800, createjs.Ease.backOut);
- }
- });
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].downFloor(false);
- }
- _bFloor = false;
- };
- this.deactiveMagnetic = function () {
- var oSpriteNormalBall = s_oSpriteLibrary.getSprite("normal_ball");
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].changeSprite(oSpriteNormalBall, "normal");
- }
- s_oStage.removeChild(_oPadding);
- this.createPadding(_oPadding.x);
- this.launchUnmagneticBall();
- _bMagnetic = false;
- };
- this.deactiveShot = function () {
- _oSpriteBullet = null;
- _bShot = false;
- if (_oCannons) {
- _oCannons.gotoAndPlay("go");
- _oCannons.on("animationend", function () {
- if (_bShot === false) {
- s_oStage.removeChild(_oCannons);
- _oCannons = null;
- }
- });
- }
- _pPaddingDim.x = PADDLE_DIMENSION[1] / 2;
- _iOffsetXPadRight = CANVAS_WIDTH - EDGE_OFFSET - _pPaddingDim.x;
- _iOffsetXPadLeft = EDGE_OFFSET + _pPaddingDim.x;
- };
- this.checkOtherActiveBonus = function () {
- if (_bFireBall === false && _bFloor === true && _bMagnetic === false && _bShot === false) {
- _bAlmostABonus = false;
- }
- };
- this.bonusGesture = function () {
- for (var i = 0; i < _iNum_Of_Bonus_Spawned; i++) {
- _aBonus[i].update();
- if (_aBonus[i] !== undefined) {
- if (_aBonus[i].getX() > (_oPadding.x - _pPaddingDim.x) - _aBonus[i].getInfoData("offsetX") && _aBonus[i].getX() < (_oPadding.x + _pPaddingDim.x) + _aBonus[i].getInfoData("offsetX") && _aBonus[i].getY() > (_oPadding.y - _pPaddingDim.y) - _aBonus[i].getInfoData("offsetY") && _aBonus[i].getY() < (_oPadding.y + _pPaddingDim.y) + _aBonus[i].getInfoData("offsetY")) {
- switch (_aBonus[i].getInfoData("Type")) {
- case 0:
- this.bonusLargePad();
- break;
- case 1:
- this.bonusFireBall();
- break;
- case 2:
- this.bonusFloor();
- break;
- case 3:
- this.bonusMagnetic();
- break;
- case 4:
- this.bonusLife();
- break;
- case 5:
- this.bonusMultiBall();
- break;
- case 6:
- this.bonusShot();
- break;
- case 7:
- this.bonusSlowBall();
- break;
- case 8:
- this.bonusFastBall();
- break;
- case 9:
- this.bonusSmallPad();
- break;
- }
- this.unloadBonus(i);
- break;
- }
- }
- }
- };
- this.unloadBonus = function (ID) {
- _aBonus[ID].unload();
- _aBonus.splice(ID, 1);
- if (_iNum_Of_Bonus_Spawned > 0) {
- _iNum_Of_Bonus_Spawned--;
- }
- for (var i = 0; i < _iNum_Of_Bonus_Spawned; i++) {
- _aBonus[i].resetTheIndex(i);
- }
- };
- this.unloadBall = function (ID) {
- _aBall[ID].unload();
- _aBall.splice(ID, 1);
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].resetTheIndex(i);
- }
- };
- this.unloadBullet = function (ID) {
- _aBullet[ID].unload();
- _aBullet.splice(ID, 1);
- _iFiredBullet--;
- for (var i = 0; i < _aBullet.length; i++) {
- _aBullet[i].setIndex(i);
- }
- };
- this.randomBonus = function (iXPos, iYPos) {
- var iRand = Math.floor(Math.random() * 100);
- if (iRand < SPAWN_BONUS_PROBABILITY[_iLevel-1] && _iTotBrick > 0) {
- this.generateABonus(iXPos, iYPos);
- }
- };
- this.unloadLevel = function () {
- for (var i = 0; i < _aBall.length; i++) {
- _aBall[i].unload();
- _aBall[i] = null;
- }
- for (var i = 0; i < _aBonus.length; i++) {
- _aBonus[i].unload();
- _aBonus[i] = null;
- }
- if (_aBullet !== undefined) {
- for (var i = 0; i < _aBullet.length; i++) {
- _aBullet[i].unload();
- _aBullet[i] = null;
- }
- }
- if (_bLargePad === true) {
- this.deactiveLargePad();
- } else if (_bSmallPad === true) {
- this.deactiveSmallPad();
- }
- if (_bShot === true) {
- _iTimeShot = 0;
- s_oStage.removeChild(_oCannons);
- _oCannons = null;
- }
- if (_bFloor === true) {
- s_oStage.removeChild(_oPowerUpEdge);
- _oPowerUpEdge = null;
- }
- if (_bMagnetic === true) {
- s_oStage.removeChild(_oPadding);
- this.createPadding(_oPadding.x);
- }
- _bShot = false;
- _bLargePad = false;
- _bFloor = false;
- _bSlowBall = false;
- _bMagnetic = false;
- _bFireBall = false;
- _bAlmostABonus = false;
- for (var i = 0; i < _aBrick.length; i++) {
- _aBrick[i].unload();
- _aBrick[i] = null;
- }
- _iNum_Of_Bonus_Spawned = 0;
- _aBrick = null;
- _aBrickSectionCenterH = null;
- _aBrickSectionCenterY = null;
- _aBrickSectionDownLeft = null;
- _aBrickSectionDownRight = null;
- _aBrickSectionUpLeft = null;
- _aBrickSectionUpRight = null;
- _aBonus = null;
- _aBullet = null;
- _aBall = null;
- _aBrick = new Array();
- _aBrickSectionCenterH = new Array();
- _aBrickSectionCenterY = new Array();
- _aBrickSectionDownLeft = new Array();
- _aBrickSectionDownRight = new Array();
- _aBrickSectionUpLeft = new Array();
- _aBrickSectionUpRight = new Array();
- _aBonus = new Array();
- _aBullet = new Array();
- _aBall = new Array();
- };
- this.update = function () {
- if (_bPause === false) {
- _fPhysicsTime += s_iTimeElaps;
- var iTimePhysicUpdate = parseInt(_fPhysicsTime / _iPhysicsUpdateTime);
- _fPhysicsTime -= (_iPhysicsUpdateTime * iTimePhysicUpdate);
- for (var i = 0; i < iTimePhysicUpdate; i++) {
- for (var k = 0; k < _iPhysicsScaleTime; k++) {
- this.__updatePhysics();
- }
- }
- }
- };
- s_oGame = this;
- var _iPhysicsUpdateTime = 16;
- var _iPhysicsScaleTime = 10;
- BALL_SPEED = oData.ball_speed / _iPhysicsScaleTime;
- BRICKS_SCORE = oData.bricks_score;
- BRICKS_RESISTANCE = oData.bricks_resistance;
- BRICKS_DESTRUCTIBLE = oData.bricks_destructible;
- BONUS_SPEED = oData.bonus_speed / _iPhysicsScaleTime;
- BONUS_TIME = oData.bonus_time;
- BONUS_SCORE = oData.bonus_score;
- BULLET_SPEED = oData.bullet_speed;
- LIFE = oData.life;
- SPEED_DOWN_BALL = oData.speed_down_ball;
- SPEED_UP_BALL = oData.speed_up_ball;
- NUM_LEVELS_FOR_ADS = oData.num_levels_for_ads;
- this._init(iLevel);
- }
- var s_oGame;
|