CInterface.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. function CInterface(iScore) {
  2. var _oAudioToggle;
  3. var _pStartPosPause;
  4. var _pStartPosAudio;
  5. var _pStartPosExit;
  6. var _pStartPosFullscreen;
  7. var _bStoppedTime;
  8. var _oButPause;
  9. var _oPauseText;
  10. var _oButExit;
  11. var _oButContinue;
  12. var _oUpEdge;
  13. var _oLife;
  14. var _oLifeText;
  15. var _oScoreText;
  16. var _oFade;
  17. var _oButReturnToMenu;
  18. var _oTextGameOver;
  19. var _oTransBg;
  20. var _oButNextLevel;
  21. var _oTextLevelComplete;
  22. var _oTextScoreLevelComplete;
  23. var _oTextCongrat;
  24. var _oHelpPanel;
  25. var _oHelpText;
  26. var _oLevelText;
  27. var _oButFullscreen;
  28. var _fRequestFullScreen = null;
  29. var _fCancelFullScreen = null;
  30. this._init = function (iScore) {
  31. var oSprite = s_oSpriteLibrary.getSprite('icon_audio');
  32. var oButtonX = CANVAS_WIDTH - (oSprite.width / 2) - 130;
  33. _bStoppedTime = false;
  34. _oUpEdge = createBitmap(s_oSpriteLibrary.getSprite("up_edges"));
  35. s_oStage.addChild(_oUpEdge);
  36. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  37. _pStartPosAudio = {x: oButtonX, y: (oSprite.height / 2) + 10};
  38. _oAudioToggle = new CToggle(_pStartPosAudio.x, _pStartPosAudio.y, oSprite, s_bAudioActive);
  39. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  40. _pStartPosFullscreen = {x:_pStartPosAudio.x - oSprite.width/2 - 10,y:_pStartPosAudio.y};
  41. }else{
  42. _pStartPosFullscreen = {x: oButtonX, y: (oSprite.height / 2) + 10};
  43. }
  44. var doc = window.document;
  45. var docEl = doc.documentElement;
  46. _fRequestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;
  47. _fCancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;
  48. if(ENABLE_FULLSCREEN === false){
  49. _fRequestFullScreen = false;
  50. }
  51. if (_fRequestFullScreen && screenfull.isEnabled){
  52. oSprite = s_oSpriteLibrary.getSprite('but_fullscreen');
  53. _oButFullscreen = new CToggle(_pStartPosFullscreen.x,_pStartPosFullscreen.y,oSprite,s_bFullscreen,true);
  54. _oButFullscreen.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this);
  55. }
  56. _oScoreText = new CTLText(s_oStage,
  57. CANVAS_WIDTH / 2 - 150, CANVAS_HEIGHT / 2 - 430, 100, 70,
  58. 50, "center", "#fff", PRIMARY_FONT, 1,
  59. 0, 0,
  60. TEXT_SCORE+"\n"+iScore,
  61. true, true, true,
  62. false );
  63. _oLevelText =new CTLText(s_oStage,
  64. CANVAS_WIDTH / 2 - 290, CANVAS_HEIGHT / 2 - 430, 100, 70,
  65. 50, "center", "#fff", PRIMARY_FONT, 1,
  66. 0, 0,
  67. TEXT_LEVEL_UPPERCASE,
  68. true, true, true,
  69. false );
  70. var oSpriteExit = s_oSpriteLibrary.getSprite('but_exit');
  71. oButtonX = CANVAS_WIDTH - (oSpriteExit.width / 2) - 100;
  72. _pStartPosExit = {x: oButtonX + 85, y: (oSpriteExit.height / 2) + 10};
  73. _oButExit = new CGfxButton(_pStartPosExit.x, _pStartPosExit.y, oSpriteExit,s_oStage);
  74. _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  75. var oSpritePause = s_oSpriteLibrary.getSprite('but_pause');
  76. oButtonX = CANVAS_WIDTH - (oSpritePause.width / 2) - 90;
  77. _pStartPosPause = {x: oButtonX, y: (oSpritePause.height / 2) + 10};
  78. _oButPause = new CGfxButton(_pStartPosPause.x, _pStartPosPause.y, oSpritePause,s_oStage);
  79. _oButPause.addEventListener(ON_MOUSE_UP, this._onButPauseRelease, this);
  80. var oSpriteLife = s_oSpriteLibrary.getSprite("life");
  81. _oLife = createBitmap(oSpriteLife);
  82. _oLife.x = CANVAS_WIDTH * 0.5 + 60;
  83. _oLife.y = 120;
  84. _oLife.regX = oSpriteLife.width * 0.5;
  85. _oLife.regY = oSpriteLife.width * 0.5;
  86. s_oStage.addChild(_oLife);
  87. _oLifeText = new createjs.Text("x" + LIFE, "normal " + 40 + "px " + PRIMARY_FONT, "#ffffff");
  88. _oLifeText.textAlign = "center";
  89. _oLifeText.textBaseline = "alphabetic";
  90. _oLifeText.x = CANVAS_WIDTH * 0.5 + 100;
  91. _oLifeText.y = 125;
  92. s_oStage.addChild(_oLifeText);
  93. s_oGame.setPause(true);
  94. this.refreshButtonPos(s_iOffsetX, s_iOffsetY);
  95. };
  96. this.refreshButtonPos = function (iNewX, iNewY) {
  97. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  98. _oAudioToggle.setPosition(_pStartPosAudio.x - iNewX, _pStartPosAudio.y + iNewY);
  99. }
  100. if (_fRequestFullScreen && screenfull.isEnabled){
  101. _oButFullscreen.setPosition(_pStartPosFullscreen.x - iNewX,_pStartPosFullscreen.y + iNewY);
  102. }
  103. _oButPause.setPosition(_pStartPosPause.x - iNewX, _pStartPosPause.y + iNewY);
  104. _oButExit.setPosition(_pStartPosExit.x - iNewX, _pStartPosExit.y + iNewY);
  105. };
  106. this.rereshNumLevel = function () {
  107. };
  108. this.refreshBallLife = function (iValue) {
  109. _oLifeText.text = "x" + +iValue;
  110. };
  111. this.gameOver = function (iScore) {
  112. s_oGame.setPause(true);
  113. _oButPause.block(true);
  114. _oFade = new createjs.Shape();
  115. _oFade.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  116. _oFade.alpha = 0;
  117. s_oStage.addChild(_oFade);
  118. _oTextGameOver = new CTLText(s_oStage,
  119. CANVAS_WIDTH/2-300, -120, 600, 300,
  120. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  121. 0, 0,
  122. TEXT_SCORE_GAMEOVER + "\n\n" + iScore,
  123. true, true, true,
  124. false );
  125. createjs.Tween.get(_oFade).to({alpha: 0.5}, 1000, createjs.Ease.backOut).call(function () {
  126. createjs.Tween.get(_oTextGameOver.getText()).to({y: CANVAS_HEIGHT / 2 - 200}, 1000, createjs.Ease.bounceOut).call(function () {
  127. var oSpriteRestart = s_oSpriteLibrary.getSprite("but_restart");
  128. _oButReturnToMenu = new CGfxButton((CANVAS_WIDTH / 2), CANVAS_HEIGHT / 2 + 200, oSpriteRestart,s_oStage);
  129. _oButReturnToMenu.addEventListener(ON_MOUSE_UP, s_oInterface._onButReturnToMenuRelease, this);
  130. });
  131. });
  132. document.dispatchEvent(new CustomEvent("share_event", {detail: { score: iScore } }));
  133. document.dispatchEvent(new CustomEvent("save_score", {detail: { score: iScore } }));
  134. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  135. var oGameOver = playSound("game_over",1,false);
  136. setVolume("soundtrack",0);
  137. if(oGameOver){
  138. oGameOver.on("end", function () {
  139. setVolume("soundtrack",1);
  140. oGameOver = null;
  141. });
  142. }
  143. }
  144. };
  145. this.levelComplete = function (iLevel, iScore) {
  146. var iLv = iLevel;
  147. if (iLv < BRICKS_LEVEL_POSITION.length) {
  148. _oFade = createBitmap(s_oSpriteLibrary.getSprite("msg_box"));
  149. _oFade.alpha = 0;
  150. s_oStage.addChild(_oFade);
  151. s_oStage.setChildIndex(_oFade, s_oStage.numChildren - 1);
  152. _oButPause.block(true);
  153. _oTextLevelComplete = new CTLText(s_oStage,
  154. CANVAS_WIDTH/2-300, - 150, 600, 300,
  155. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  156. 0, 0,
  157. TEXT_LEVEL + " " + iLv + " " + TEXT_COMPLETE,
  158. true, true, true,
  159. false );
  160. _oTextScoreLevelComplete = new CTLText(s_oStage,
  161. CANVAS_WIDTH/2-300, CANVAS_HEIGHT / 2 - 150, 600, 300,
  162. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  163. 0, 0,
  164. TEXT_SCORE + "\n\n" + iScore,
  165. true, true, true,
  166. false );
  167. createjs.Tween.get(_oFade).to({alpha: 1}, 1000, createjs.Ease.backOut);
  168. createjs.Tween.get(_oTextScoreLevelComplete.getText()).to({alpha: 1}, 1000, createjs.Ease.bounceOut).call(function () {
  169. var oSpriteButNext = s_oSpriteLibrary.getSprite("but_continue");
  170. _oButNextLevel = new CGfxButton((CANVAS_WIDTH / 2), CANVAS_HEIGHT / 2 + 300, oSpriteButNext,s_oStage);
  171. _oButNextLevel.addEventListener(ON_MOUSE_UP, s_oInterface._onButNextLevelRelease, this);
  172. });
  173. createjs.Tween.get(_oTextLevelComplete.getText()).to({y: CANVAS_HEIGHT / 2 - 300}, 1000, createjs.Ease.bounceOut);
  174. }
  175. else
  176. {
  177. this.finishGame(iScore);
  178. }
  179. };
  180. this.finishGame = function (iScore) {
  181. console.log("finishGame");
  182. s_oGame.setPause(true);
  183. _oButPause.block(true);
  184. _oFade = createBitmap(s_oSpriteLibrary.getSprite("msg_box"));
  185. _oFade.alpha = 0;
  186. s_oStage.addChild(_oFade);
  187. s_oStage.setChildIndex(_oFade, s_oStage.numChildren - 1);
  188. _oTextCongrat = new CTLText(s_oStage,
  189. CANVAS_WIDTH/2-300, -170, 600, 200,
  190. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  191. 0, 0,
  192. TEXT_CONGRATULATIONS,
  193. true, true, true,
  194. false );
  195. _oTextGameOver = new CTLText(s_oStage,
  196. CANVAS_WIDTH/2-300,CANVAS_HEIGHT / 2 - 100, 600, 250,
  197. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  198. 0, 0,
  199. TEXT_SCORE_GAMEOVER + "\n\n" + iScore,
  200. true, true, true,
  201. false );
  202. createjs.Tween.get(_oFade).to({alpha: 1}, 1000, createjs.Ease.backOut);
  203. createjs.Tween.get(_oTextCongrat.getText()).to({y: CANVAS_HEIGHT / 2 - 370}, 1200, createjs.Ease.bounceOut);
  204. createjs.Tween.get(_oTextGameOver.getText()).to({alpha: 1}, 1000, createjs.Ease.bounceOut).call(function () {
  205. var oSpriteRestart = s_oSpriteLibrary.getSprite("but_restart");
  206. _oButReturnToMenu = new CGfxButton((CANVAS_WIDTH / 2), CANVAS_HEIGHT / 2 + 300, oSpriteRestart,s_oStage);
  207. _oButReturnToMenu.addEventListener(ON_MOUSE_UP, s_oInterface._onButReturnToMenuRelease, this);
  208. });
  209. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  210. var oGameCompleted = playSound("game_completed",1,false);//insert an appropriate sound
  211. setVolume("soundtrack",0);
  212. if(oGameCompleted){
  213. oGameCompleted.on("end", function () {
  214. setVolume("soundtrack",1);
  215. oGameCompleted = null;
  216. });
  217. }
  218. }
  219. document.dispatchEvent(new CustomEvent("share_event", {detail: { score: iScore } }));
  220. document.dispatchEvent(new CustomEvent("save_score", {detail: { score: iScore } }));
  221. };
  222. this._onButNextLevelRelease = function () {
  223. _oTextScoreLevelComplete.unload();
  224. _oTextLevelComplete.unload();
  225. s_oStage.removeChild(_oFade);
  226. _oTextLevelComplete = null;
  227. _oFade = null;
  228. _oTextScoreLevelComplete = null;
  229. _oButNextLevel.unload();
  230. _oButNextLevel = null;
  231. _oButPause.block(false);
  232. s_oGame.nextLevel();
  233. };
  234. this._onButReturnToMenuRelease = function () {
  235. s_oGame.onExit();
  236. };
  237. this.refreshScore = function (iScore) {
  238. _oScoreText.refreshText("SCORE\n" + iScore);
  239. };
  240. this._onButPauseRelease = function () {
  241. playSound("click", 1, false);
  242. s_oGame.setPause(true);
  243. _oTransBg = new createjs.Shape();
  244. _oTransBg.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  245. _oTransBg.alpha = 0.5;
  246. s_oStage.addChild(_oTransBg);
  247. _oPauseText = new createjs.Text("Pause", "normal " + 70 + "px " + PRIMARY_FONT, "#ffffff");
  248. _oPauseText.textAlign = "center";
  249. _oPauseText.textBaseline = "alphabetic";
  250. _oPauseText.x = CANVAS_WIDTH / 2;
  251. _oPauseText.y = CANVAS_HEIGHT / 2 - 250;
  252. s_oStage.addChild(_oPauseText);
  253. _oButPause.block(true);
  254. _oButExit.block(true);
  255. createjs.Ticker.paused = true;
  256. var oSpriteContinue = s_oSpriteLibrary.getSprite('but_continue');
  257. _oButContinue = new CGfxButton(CANVAS_WIDTH / 2, CANVAS_HEIGHT / 2, oSpriteContinue,s_oStage);
  258. _oButContinue.addEventListener(ON_MOUSE_UP, this._onButContinueRelease, this);
  259. };
  260. this._onButContinueRelease = function () {
  261. playSound("click", 1, false);
  262. _oButContinue.unload();
  263. _oButContinue = null;
  264. s_oStage.removeChild(_oPauseText, _oTransBg);
  265. _oTransBg = false;
  266. _oPauseText = null;
  267. _oButPause.block(false);
  268. _oButExit.block(false);
  269. createjs.Ticker.paused = false;
  270. s_oGame.setPause(false);
  271. };
  272. this.help = function (iLv) {
  273. var iLevel = iLv;
  274. var oSpriteHelpBg = s_oSpriteLibrary.getSprite('msg_box');
  275. _oHelpPanel = createBitmap(oSpriteHelpBg);
  276. _oHelpPanel.on("click", function () {
  277. s_oInterface.unloadHelp(iLevel);
  278. }, null, true);
  279. s_oStage.addChild(_oHelpPanel);
  280. if (!_oHelpText) {
  281. _oHelpText = new CTLText(s_oStage,
  282. CANVAS_WIDTH/2-300,CANVAS_HEIGHT / 2 - 120, 600, 250,
  283. 100, "center", "#ffff00", PRIMARY_FONT, 1,
  284. 0, 0,
  285. TEXT_HELP_PAGE_1_PC,
  286. true, true, true,
  287. false );
  288. } else if (s_bMobile === true) {
  289. _oHelpText.refreshText(TEXT_HELP_PAGE_1_MOBILE);
  290. } else {
  291. _oHelpText.refreshText(TEXT_HELP_PAGE_1_PC);
  292. }
  293. };
  294. this.unloadHelp = function (iLevel) {
  295. createjs.Tween.get(_oHelpPanel).to({alpha: 0}, 1000, createjs.Ease.cubicOut).call(function () {
  296. s_oStage.removeChild(_oHelpPanel);
  297. });
  298. createjs.Tween.get(_oHelpText.getText()).to({alpha: 0}, 1000, createjs.Ease.cubicOut).call(function () {
  299. _oHelpText.unload();
  300. s_oInterface.showNumLevel(iLevel);
  301. });
  302. };
  303. this.numLevel = function (iLevel) {
  304. var iLv = iLevel;
  305. _oLevelText.refreshText(TEXT_LEVEL_UPPERCASE + "\n" + iLv);
  306. };
  307. this.showNumLevel = function (iLevel) {
  308. var oCurLevel;
  309. var oCurLevelCont;
  310. var oCurLevelContainer;
  311. var iRand = Math.floor(Math.random() * COLOR_TEXT_LEVEL.length);
  312. oCurLevel = new createjs.Text(TEXT_LEVEL_UPPERCASE + " " + iLevel, "normal " + 100 + "px " + PRIMARY_FONT, COLOR_TEXT_LEVEL[iRand]);
  313. oCurLevel.textAlign = "center";
  314. oCurLevel.textBaseline = "alphabetic";
  315. oCurLevel.x = 0;
  316. oCurLevel.y = 0;
  317. oCurLevelCont = new createjs.Text(TEXT_LEVEL_UPPERCASE + " " + iLevel, "normal " + 100 + "px " + PRIMARY_FONT, "#000000");
  318. oCurLevelCont.textAlign = "center";
  319. oCurLevelCont.textBaseline = "alphabetic";
  320. oCurLevelCont.x = 0;
  321. oCurLevelCont.y = 0;
  322. oCurLevelCont.outline = 5;
  323. oCurLevelContainer = new createjs.Container();
  324. oCurLevelContainer.addChild(oCurLevelCont, oCurLevel);
  325. oCurLevelContainer.x = -100;
  326. oCurLevelContainer.y = CANVAS_HEIGHT * 0.5;
  327. s_oStage.addChild(oCurLevelContainer);
  328. createjs.Tween.get(oCurLevelContainer).to({x: CANVAS_WIDTH * 0.5}, 600, createjs.Ease.cubicOut).call(function () {
  329. createjs.Tween.get(oCurLevelContainer).wait(500).to({x: CANVAS_WIDTH + 100}, 600, createjs.Ease.cubicIn).call(function () {
  330. s_oStage.removeChild(oCurLevelContainer);
  331. s_oGame.setPause(false);
  332. });
  333. });
  334. };
  335. this.unload = function () {
  336. if(_oTextGameOver){
  337. _oTextGameOver.unload();
  338. }
  339. s_oStage.removeChild( _oButReturnToMenu, _oFade);
  340. _oTextGameOver = null;
  341. _oButReturnToMenu = null;
  342. _oFade = null;
  343. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  344. _oAudioToggle.unload();
  345. _oAudioToggle = null;
  346. }
  347. if (_fRequestFullScreen && screenfull.isEnabled){
  348. _oButFullscreen.unload();
  349. }
  350. s_oInterface = null;
  351. };
  352. this._onExit = function () {
  353. s_oGame.onExit();
  354. };
  355. this._onAudioToggle = function () {
  356. Howler.mute(s_bAudioActive);
  357. s_bAudioActive = !s_bAudioActive;
  358. };
  359. this.resetFullscreenBut = function(){
  360. if (_fRequestFullScreen && screenfull.isEnabled){
  361. _oButFullscreen.setActive(s_bFullscreen);
  362. }
  363. };
  364. this._onFullscreenRelease = function(){
  365. if(s_bFullscreen) {
  366. _fCancelFullScreen.call(window.document);
  367. }else{
  368. _fRequestFullScreen.call(window.document.documentElement);
  369. }
  370. sizeHandler();
  371. };
  372. s_oInterface = this;
  373. this._init(iScore);
  374. return this;
  375. }
  376. var s_oInterface = null;