CInterface.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. function CInterface(iNextBlock) {
  2. var _pStartPosPause;
  3. var _pStartPosAudio;
  4. var _pStartPosExit;
  5. var _pStartPosLogo;
  6. var _pStartPosFullscreen;
  7. var _fRequestFullScreen = null;
  8. var _fCancelFullScreen = null;
  9. var _oAudioToggle;
  10. var _oButPause;
  11. var _oButExit;
  12. var _oHelpPanel;
  13. var _oFpsText;
  14. var _oFpsTextStruct;
  15. var _oWinPanel;
  16. var _oCongratPanel;
  17. var _oGameOverPanel;
  18. var _oPausePanel;
  19. var _oNextBlockBoard;
  20. var _oInfoBoard;
  21. var _oScoreBoard;
  22. var _oLogo;
  23. var _oController = null;
  24. var _oButFullscreen;
  25. this._init = function (iNextBlock) {
  26. var iPadding = 30;
  27. var oSpriteExit = s_oSpriteLibrary.getSprite('but_exit');
  28. _pStartPosExit = {x: CANVAS_WIDTH - (oSpriteExit.width / 2) - iPadding, y: (oSpriteExit.height / 2) + iPadding};
  29. _oButExit = new CGfxButton(_pStartPosExit.x, _pStartPosExit.y, oSpriteExit);
  30. _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  31. var oSpritePause = s_oSpriteLibrary.getSprite('but_pause');
  32. _pStartPosPause = {x: CANVAS_WIDTH - (oSpritePause.width / 2) - (oSpriteExit.width) - iPadding - 15, y: (oSpritePause.height / 2) + iPadding};
  33. _oButPause = new CGfxButton(_pStartPosPause.x, _pStartPosPause.y, oSpritePause);
  34. _oButPause.addEventListener(ON_MOUSE_UP, this.onButPauseRelease, this);
  35. var oSpriteFullscreen = s_oSpriteLibrary.getSprite('but_fullscreen');
  36. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  37. var oSprite = s_oSpriteLibrary.getSprite('icon_audio');
  38. _pStartPosAudio = {x: CANVAS_WIDTH - (oSprite.width / 2) - (oSpritePause.width) - (oSpriteExit.width / 2) - iPadding - 30,
  39. y: (oSprite.height / 2) + iPadding};
  40. _oAudioToggle = new CToggle(_pStartPosAudio.x, _pStartPosAudio.y, oSprite, s_bAudioActive,s_oStage);
  41. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  42. _pStartPosFullscreen = {x: _pStartPosAudio.x - oSpriteFullscreen.width/2 - 10,y:_pStartPosAudio.y};
  43. }else{
  44. _pStartPosFullscreen = {x: CANVAS_WIDTH - (oSpriteFullscreen.width / 2) - (oSpritePause.width) - (oSpriteExit.width / 2) - iPadding - 30,
  45. y: (oSpriteFullscreen.height / 2) + iPadding};
  46. }
  47. var doc = window.document;
  48. var docEl = doc.documentElement;
  49. _fRequestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;
  50. _fCancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;
  51. if(ENABLE_FULLSCREEN === false){
  52. _fRequestFullScreen = false;
  53. }
  54. if (_fRequestFullScreen && screenfull.isEnabled ) {
  55. _oButFullscreen = new CToggle(_pStartPosFullscreen.x,_pStartPosFullscreen.y,oSpriteFullscreen,s_bFullscreen,s_oStage);
  56. _oButFullscreen.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this);
  57. }
  58. var oSpriteNextBoard = s_oSpriteLibrary.getSprite("next_board");
  59. _oNextBlockBoard = new CNextBlockBoard(800, 417, oSpriteNextBoard, iNextBlock, s_oStage);
  60. var oSpriteInfoBoard = s_oSpriteLibrary.getSprite("info_board");
  61. _oInfoBoard = new CInfoBoard(800, 757, oSpriteInfoBoard, s_oStage);
  62. var oSpriteScoreBoard = s_oSpriteLibrary.getSprite("score_board");
  63. _oScoreBoard = new CScoreBoard(800, 1051, oSpriteScoreBoard, s_oStage);
  64. var oSpriteLogo = s_oSpriteLibrary.getSprite("small_logo");
  65. _pStartPosLogo = {x: oSpriteLogo.width * 0.5 + 30, y: oSpriteLogo.height * 0.5 + 30};
  66. _oLogo = createBitmap(oSpriteLogo);
  67. _oLogo.x = _pStartPosLogo;
  68. _oLogo.y = _pStartPosLogo;
  69. _oLogo.regX = oSpriteLogo.width * 0.5;
  70. _oLogo.regY = oSpriteLogo.height * 0.5;
  71. s_oStage.addChild(_oLogo);
  72. if (SHOW_FPS === true) {
  73. var iX = -330;
  74. var iY = 550;
  75. _oFpsText = new createjs.Text("", "normal " + 60 + "px " + PRIMARY_FONT, "#ffd800");
  76. _oFpsText.textAlign = "center";
  77. _oFpsText.textBaseline = "alphabetic";
  78. _oFpsText.x = CANVAS_WIDTH * 0.5 + iX;
  79. _oFpsText.y = CANVAS_HEIGHT * 0.5 + iY;
  80. _oFpsTextStruct = new createjs.Text("", "normal " + 60 + "px " + PRIMARY_FONT, "#025cce");
  81. _oFpsTextStruct.textAlign = "center";
  82. _oFpsTextStruct.textBaseline = "alphabetic";
  83. _oFpsTextStruct.x = CANVAS_WIDTH * 0.5 + iX + 2;
  84. _oFpsTextStruct.y = CANVAS_HEIGHT * 0.5 + iY + 2;
  85. s_oStage.addChild(_oFpsTextStruct, _oFpsText);
  86. }
  87. if (s_bMobile) {
  88. _oController = new CController();
  89. }
  90. this.refreshButtonPos(s_iOffsetX, s_iOffsetY);
  91. };
  92. this.refreshButtonPos = function () {
  93. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  94. _oAudioToggle.setPosition(_pStartPosAudio.x - s_iOffsetX, _pStartPosAudio.y + s_iOffsetY);
  95. }
  96. if (_fRequestFullScreen && screenfull.isEnabled){
  97. _oButFullscreen.setPosition(_pStartPosFullscreen.x - s_iOffsetX,_pStartPosFullscreen.y + s_iOffsetY);
  98. }
  99. _oButPause.setPosition(_pStartPosPause.x - s_iOffsetX, _pStartPosPause.y + s_iOffsetY);
  100. _oButExit.setPosition(_pStartPosExit.x - s_iOffsetX, _pStartPosExit.y + s_iOffsetY);
  101. var oPosNextBlockBoard = _oNextBlockBoard.getStartPos();
  102. _oNextBlockBoard.setPosition(oPosNextBlockBoard.x - s_iOffsetX, oPosNextBlockBoard.y);
  103. var oPosInfoBoard = _oInfoBoard.getStartPos();
  104. _oInfoBoard.setPosition(oPosInfoBoard.x - s_iOffsetX, oPosInfoBoard.y);
  105. var oPosScoreBoard = _oScoreBoard.getStartPos();
  106. _oScoreBoard.setPosition(oPosScoreBoard.x - s_iOffsetX, oPosScoreBoard.y);
  107. _oLogo.x = _pStartPosLogo.x + s_iOffsetX;
  108. _oLogo.y = _pStartPosLogo.y + s_iOffsetY;
  109. if (_oController !== null) {
  110. var oPosLeft = _oController.getStartPositionControlLeft();
  111. _oController.setPositionControlLeft(oPosLeft.x + s_iOffsetX, oPosLeft.y - s_iOffsetY);
  112. var oPosRight = _oController.getStartPositionControlRight();
  113. _oController.setPositionControlRight(oPosRight.x + s_iOffsetX, oPosRight.y - s_iOffsetY);
  114. var oPosUp = _oController.getStartPositionControlUp();
  115. _oController.setPositionControlUp(oPosUp.x - s_iOffsetX, oPosUp.y - s_iOffsetY);
  116. var oPosDown = _oController.getStartPositionControlDown();
  117. _oController.setPositionControlDown(oPosDown.x + s_iOffsetX, oPosDown.y - s_iOffsetY);
  118. }
  119. };
  120. this.finishGame = function (iScore) {
  121. var oSpriteBg = s_oSpriteLibrary.getSprite("msg_box")
  122. _oCongratPanel = new CCongratulations(oSpriteBg, iScore);
  123. };
  124. this._onButNextLevelRelease = function () {
  125. setVolume("soundtrack",SOUNDTRACK_VOLUME_IN_GAME);
  126. _oWinPanel = null;
  127. s_oGame.nextLevel();
  128. };
  129. this._onButSpaceBarRelease = function () {
  130. if (_oWinPanel) {
  131. _oWinPanel._onContinue();
  132. }
  133. };
  134. this._onButMenuRelease = function () {
  135. if (_oCongratPanel) {
  136. _oCongratPanel.unload();
  137. _oCongratPanel = null;
  138. }
  139. s_oGame.onExit();
  140. };
  141. this.refreshScore = function (iScore) {
  142. _oScoreBoard.refreshScore(iScore);
  143. };
  144. this.refreshLevel = function (iLevel) {
  145. _oInfoBoard.refreshLevel(iLevel);
  146. };
  147. this.refreshLines = function (iLines) {
  148. _oInfoBoard.refreshLines(iLines);
  149. };
  150. this.unloadPause = function () {
  151. _oPausePanel.unload();
  152. _oPausePanel = null;
  153. };
  154. this.onButPauseRelease = function () {
  155. _oPausePanel = new CPause();
  156. };
  157. this.onContinuePauseRelease = function () {
  158. if (_oPausePanel)
  159. _oPausePanel._onLeavePause();
  160. };
  161. this.showHelpPanel = function () {
  162. var oSpriteBg = s_oSpriteLibrary.getSprite("msg_box");
  163. _oHelpPanel = new CHelpPanel(0, 0, oSpriteBg);
  164. };
  165. this.gameOver = function (iScore, iLevel, iLines) {
  166. var oSpriteBg = s_oSpriteLibrary.getSprite("msg_box");
  167. _oGameOverPanel = new CGameOver(oSpriteBg, iScore, iLevel, iLines);
  168. };
  169. this.unloadHelp = function () {
  170. _oHelpPanel.unload();
  171. _oHelpPanel = null;
  172. };
  173. this._onButRestartLevelRelease = function () {
  174. _oGameOverPanel = null;
  175. s_oGame.restartLevelFromGameOver();
  176. _oButExit.block(false);
  177. };
  178. this.unload = function () {
  179. _oButExit.unload();
  180. _oButExit = null;
  181. _oButPause.unload();
  182. _oButPause = null;
  183. if (_oController !== null) {
  184. _oController.unload();
  185. _oController = null;
  186. }
  187. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  188. _oAudioToggle.unload();
  189. _oAudioToggle = null;
  190. }
  191. if (_fRequestFullScreen && screenfull.isEnabled){
  192. _oButFullscreen.unload();
  193. }
  194. s_oInterface = null;
  195. };
  196. this.refreshNextBlock = function (iNextBlock) {
  197. _oNextBlockBoard.refreshBlock(iNextBlock);
  198. };
  199. this.refreshFPS = function () {
  200. var iFPS = Math.ceil(createjs.Ticker.getMeasuredFPS());
  201. _oFpsText.text = "FPS:" + iFPS;
  202. _oFpsTextStruct.text = "FPS:" + iFPS;
  203. };
  204. this._onExit = function () {
  205. var _oAreYouSure = new CAreYouSurePanel(s_oStage);
  206. _oAreYouSure.show();
  207. };
  208. this._onButRestartLevelRelease = function () {
  209. s_oGame.restartGame();
  210. };
  211. this._onAudioToggle = function () {
  212. Howler.mute(s_bAudioActive);
  213. s_bAudioActive = !s_bAudioActive;
  214. };
  215. this.resetFullscreenBut = function(){
  216. if (_fRequestFullScreen && screenfull.isEnabled){
  217. _oButFullscreen.setActive(s_bFullscreen);
  218. }
  219. };
  220. this._onFullscreenRelease = function(){
  221. if(s_bFullscreen) {
  222. _fCancelFullScreen.call(window.document);
  223. }else{
  224. _fRequestFullScreen.call(window.document.documentElement);
  225. }
  226. sizeHandler();
  227. };
  228. s_oInterface = this;
  229. this._init(iNextBlock);
  230. return this;
  231. }
  232. var s_oInterface = null;