CInterface.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. function CInterface() {
  2. var _oAudioToggle;
  3. var _oButExit;
  4. var _oButPause;
  5. var _oButFullscreen;
  6. var _fRequestFullScreen = null;
  7. var _fCancelFullScreen = null;
  8. var _oSpriteBall;
  9. var _oScoreText;
  10. var _oScoreText1;
  11. var _oBallText1;
  12. var _oScoreBoard;
  13. var _oController = null;
  14. var _oPause;
  15. var _oHelpPanel = null;
  16. var _oHitArea = null;
  17. var _pStartPosScore;
  18. var _pStartPosBall;
  19. var _pStartPositionScoreText;
  20. var _pStartPositionScore;
  21. var _pStartPositionBallText;
  22. var _pStartPosExit;
  23. var _pStartPosAudio;
  24. var _pStartPosPause;
  25. var _pStartPosFullscreen;
  26. var _iStep;
  27. this._init = function () {
  28. var oSprite = s_oSpriteLibrary.getSprite('but_exit');
  29. _pStartPosExit = {x: CANVAS_WIDTH - (oSprite.height / 2) - 10, y: (oSprite.height / 2) + 10};
  30. _oButExit = new CGfxButton(_pStartPosExit.x, _pStartPosExit.y, oSprite);
  31. _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  32. var oSprite = s_oSpriteLibrary.getSprite('but_pause');
  33. _pStartPosPause = {x: _pStartPosExit.x - oSprite.height - 10, y: _pStartPosExit.y};
  34. _oButPause = new CGfxButton(_pStartPosPause.x, _pStartPosPause.y, oSprite);
  35. _oButPause.addEventListener(ON_MOUSE_UP, this.onButPauseRelease, this);
  36. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  37. var oSprite = s_oSpriteLibrary.getSprite('audio_icon');
  38. _pStartPosAudio = {x: _pStartPosPause.x - oSprite.height - 10, y: _pStartPosExit.y};
  39. _oAudioToggle = new CToggle(_pStartPosAudio.x, _pStartPosAudio.y, oSprite, s_bAudioActive);
  40. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  41. _pStartPosFullscreen = {x:_pStartPosAudio.x - oSprite.width/2 - 10,y:_pStartPosAudio.y};
  42. }else{
  43. _pStartPosFullscreen = {x: _pStartPosPause.x - oSprite.height - 10, y: _pStartPosExit.y};
  44. }
  45. var doc = window.document;
  46. var docEl = doc.documentElement;
  47. _fRequestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;
  48. _fCancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;
  49. if(ENABLE_FULLSCREEN === false){
  50. _fRequestFullScreen = false;
  51. }
  52. if (_fRequestFullScreen && screenfull.enabled){
  53. oSprite = s_oSpriteLibrary.getSprite('but_fullscreen');
  54. _oButFullscreen = new CToggle(_pStartPosFullscreen.x,_pStartPosFullscreen.y,oSprite,s_bFullscreen,s_oStage);
  55. _oButFullscreen.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this);
  56. }
  57. var oSpriteScore = s_oSpriteLibrary.getSprite('score_panel');
  58. _pStartPosScore = {x: (CANVAS_WIDTH / 2) - 260, y: 35};
  59. _oScoreBoard = createBitmap(oSpriteScore);
  60. _oScoreBoard.x = _pStartPosScore.x;
  61. _oScoreBoard.y = _pStartPosScore.y;
  62. _oScoreBoard.regX = oSpriteScore.width * 0.5;
  63. _oScoreBoard.regY = oSpriteScore.height * 0.5;
  64. s_oStage.addChild(_oScoreBoard);
  65. _pStartPositionScoreText = {x: (CANVAS_WIDTH / 2) - 315, y: 47};
  66. _oScoreText = new createjs.Text(SCORE_TEXT, "30px " + FONT, "#ffffff");
  67. _oScoreText.x = _pStartPositionScoreText.x;
  68. _oScoreText.y = _pStartPositionScoreText.y;
  69. _oScoreText.textAlign = "center";
  70. _oScoreText.textBaseline = "alphabetic";
  71. s_oStage.addChild(_oScoreText);
  72. _pStartPositionScore = {x: (CANVAS_WIDTH / 2) - 150, y: 47};
  73. _oScoreText1 = new createjs.Text("0", "30px " + FONT, "#ffffff");
  74. _oScoreText1.x = _pStartPositionScore.x;
  75. _oScoreText1.y = _pStartPositionScore.y;
  76. _oScoreText1.textAlign = "right";
  77. _oScoreText1.textBaseline = "alphabetic";
  78. s_oStage.addChild(_oScoreText1);
  79. _oSpriteBall = new CBall(s_oStage);
  80. _pStartPosBall = {x: (CANVAS_WIDTH / 2) - 370, y: 80};
  81. _oSpriteBall.setPosition(_pStartPosBall.x, _pStartPosBall.y);
  82. _oSpriteBall.changeState(15);
  83. _pStartPositionBallText = {x: (CANVAS_WIDTH / 2) - 350, y: 88};
  84. _oBallText1 = new createjs.Text("x " + LIVES, "30px " + FONT2, "#fff");
  85. _oBallText1.x = _pStartPositionBallText.x;
  86. _oBallText1.y = _pStartPositionBallText.y;
  87. _oBallText1.textAlign = "left";
  88. _oBallText1.textBaseline = "alphabetic";
  89. s_oStage.addChild(_oBallText1);
  90. this.refreshButtonPos(s_iOffsetX, s_iOffsetY);
  91. };
  92. this.unload = function () {
  93. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  94. _oAudioToggle.unload();
  95. _oAudioToggle = null;
  96. }
  97. if (_fRequestFullScreen && screenfull.enabled){
  98. _oButFullscreen.unload();
  99. }
  100. _oButExit.unload();
  101. if (s_bMobile) {
  102. _oHitArea.removeAllEventListeners();
  103. _oController.unload();
  104. }
  105. s_oInterface = null;
  106. };
  107. this.refreshButtonPos = function (iNewX, iNewY) {
  108. _oButExit.setPosition(_pStartPosExit.x - iNewX, iNewY + _pStartPosExit.y);
  109. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  110. _oAudioToggle.setPosition(_pStartPosAudio.x - iNewX, iNewY + _pStartPosAudio.y);
  111. }
  112. if (_fRequestFullScreen && screenfull.enabled){
  113. _oButFullscreen.setPosition(_pStartPosFullscreen.x - iNewX,_pStartPosFullscreen.y + iNewY);
  114. }
  115. _oScoreBoard.x = _pStartPosScore.x + iNewX;
  116. _oScoreBoard.y = _pStartPosScore.y + iNewY;
  117. _oSpriteBall.setPosition(_pStartPosBall.x + iNewX, iNewY + _pStartPosBall.y);
  118. _oButPause.setPosition(_pStartPosPause.x - iNewX, iNewY + _pStartPosPause.y);
  119. _oScoreText.x = _pStartPositionScoreText.x + iNewX;
  120. _oScoreText1.x = _pStartPositionScore.x + iNewX;
  121. _oBallText1.x = _pStartPositionBallText.x + iNewX;
  122. if (_oController !== null) {
  123. var oPosLeft = _oController.getStartPositionControlLeft();
  124. _oController.setPositionControlLeft(oPosLeft.x + iNewX, oPosLeft.y - iNewY);
  125. var oPosRight = _oController.getStartPositionControlRight();
  126. _oController.setPositionControlRight(oPosRight.x - iNewX, oPosRight.y - iNewY);
  127. }
  128. };
  129. this.createController = function () {
  130. _oController = new CController();
  131. };
  132. this.createHitArea = function () {
  133. _oHitArea = new createjs.Shape();
  134. _oHitArea.graphics.beginFill("#0f0f0f").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  135. _oHitArea.alpha = 0.01;
  136. _oHitArea.on("click", function () {});
  137. s_oStage.addChild(_oHitArea);
  138. };
  139. this.setHitAreaVisible = function (bVal) {
  140. if (_oHitArea !== null)
  141. _oHitArea.visible = bVal;
  142. };
  143. this.createAnimText = function (szText, iSize, bStrobo, aColors, iTime, oFunction) {
  144. var oContainer = new createjs.Container();
  145. oContainer.scaleX = 0;
  146. oContainer.scaleY = 0;
  147. var oTextStroke = new createjs.Text(szText, iSize + "px " + FONT2, "#000");
  148. oTextStroke.x = 0;
  149. oTextStroke.y = 0;
  150. oTextStroke.textAlign = "center";
  151. oTextStroke.textBaseline = "middle";
  152. oTextStroke.outline = 4;
  153. oContainer.addChild(oTextStroke);
  154. var oText = new createjs.Text(szText, iSize + "px " + FONT2, "#ffffff");
  155. oText.x = 0;
  156. oText.y = 0;
  157. oText.textAlign = "center";
  158. oText.textBaseline = "middle";
  159. oContainer.addChild(oText);
  160. oContainer.x = CANVAS_WIDTH_HALF;
  161. oContainer.y = CANVAS_HEIGHT_HALF;
  162. if (bStrobo) {
  163. _iStep = 0;
  164. s_oInterface.strobeText(oText, aColors);
  165. }
  166. s_oStage.addChild(oContainer);
  167. createjs.Tween.get(oContainer).to({scaleX: 1, scaleY: 1}, iTime, createjs.Ease.cubicOut).call(function () {
  168. createjs.Tween.get(oContainer).wait(300).to({scaleX: 0, scaleY: 0}, iTime, createjs.Ease.cubicOut).call(function () {
  169. if (bStrobo) {
  170. createjs.Tween.removeTweens(oText);
  171. }
  172. oFunction();
  173. s_oStage.removeChild(oContainer);
  174. });
  175. });
  176. };
  177. this.strobeText = function (oText, aColors) {
  178. createjs.Tween.get(oText).wait(30).call(function () {
  179. if (_iStep < aColors.length - 1) {
  180. _iStep++;
  181. } else {
  182. _iStep = 0;
  183. }
  184. oText.color = aColors[_iStep];
  185. s_oInterface.strobeText(oText, aColors);
  186. });
  187. };
  188. this.animBallHit = function () {
  189. var oSpriteHit = s_oSpriteLibrary.getSprite("hit_msg");
  190. var oHit = createBitmap(oSpriteHit);
  191. oHit.x = CANVAS_WIDTH_HALF;
  192. oHit.y = CANVAS_HEIGHT_HALF;
  193. oHit.regX = oSpriteHit.width * 0.5;
  194. oHit.regY = oSpriteHit.height * 0.5;
  195. oHit.scaleX = 0;
  196. oHit.scaleY = 0;
  197. s_oStage.addChild(oHit);
  198. createjs.Tween.get(oHit).to({scaleX: 1, scaleY: 1}, (500), createjs.Ease.cubicOut).wait(800).call(function () {
  199. s_oGame.afterBallHit();
  200. s_oStage.removeChild(oHit);
  201. });
  202. };
  203. this.viewScore = function (iValue) {
  204. _oScoreText1.text = iValue;
  205. };
  206. this.refreshLivesText = function (iLives) {
  207. _oBallText1.text = "x " + iLives;
  208. };
  209. this.createHelpPanel = function () {
  210. _oHelpPanel = new CHelpPanel(0, 0, s_oSpriteLibrary.getSprite("bg_help"));
  211. };
  212. this._onButRestartRelease = function () {
  213. s_oGame.restartGame();
  214. };
  215. this.onExitFromHelp = function () {
  216. if (_oHelpPanel !== null)
  217. _oHelpPanel.unload();
  218. };
  219. this.unloadPause = function () {
  220. _oPause.unload();
  221. _oPause = null;
  222. };
  223. this.onButPauseRelease = function () {
  224. _oPause = new CPause();
  225. };
  226. this._onAudioToggle = function () {
  227. Howler.mute(s_bAudioActive);
  228. s_bAudioActive = !s_bAudioActive;
  229. };
  230. this._onExit = function () {
  231. var oAreYouSure = new CAreYouSurePanel(s_oStage);
  232. oAreYouSure.show();
  233. };
  234. this.resetFullscreenBut = function(){
  235. if (_fRequestFullScreen && screenfull.enabled){
  236. _oButFullscreen.setActive(s_bFullscreen);
  237. }
  238. };
  239. this._onFullscreenRelease = function(){
  240. if(s_bFullscreen) {
  241. _fCancelFullScreen.call(window.document);
  242. }else{
  243. _fRequestFullScreen.call(window.document.documentElement);
  244. }
  245. sizeHandler();
  246. };
  247. s_oInterface = this;
  248. this._init();
  249. return this;
  250. }
  251. var s_oInterface = null;