CInterface.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. function CInterface(refGame){
  2. var _bKeyIsDown;
  3. var _pStartPosExit;
  4. var _pStartPosAudio;
  5. var _pStartPosFullscreen;
  6. var _bMouseBusy = true,
  7. _bVectorAquired = false,
  8. _bAnimX = false,
  9. _bAnimY = false,
  10. _bAnimXLeft = false,
  11. _bAnimYUp = false,
  12. _fReturnX = undefined,
  13. _fReturnY = undefined,
  14. _fMaxShotBallDistance = SHOTGUI_SIZE/3,
  15. _iIniShotBallPosX = CANVAS_WIDTH*0.85,
  16. _iIniShotBallPosY = CANVAS_HEIGHT*0.45,
  17. _refGame,
  18. _oShapeKeyListener,
  19. _oSpriteShotBallX,
  20. _oSpriteShotBallY,
  21. _oSpriteShotGui,
  22. _oSpriteTimePanel,
  23. _oAudioToggle,
  24. _oExitBut,
  25. _oTextTime,
  26. _oTextPoints,
  27. _oTextShots,
  28. _oContainerDisplay;
  29. var _oButFullscreen;
  30. var _fRequestFullScreen = null;
  31. var _fCancelFullScreen = null;
  32. this.init = function(refGame){
  33. _refGame = refGame;
  34. var oSpriteGUI = s_oSpriteLibrary.getSprite("shot_gui");
  35. _oSpriteShotGui = createBitmap(oSpriteGUI);
  36. _oSpriteShotGui.regX = SHOTGUI_SIZE/2;
  37. _oSpriteShotGui.regY = SHOTGUI_SIZE/2;
  38. _oSpriteShotGui.x = _iIniShotBallPosX;
  39. _oSpriteShotGui.y = _iIniShotBallPosY;
  40. s_oStage.addChild(_oSpriteShotGui);
  41. _oContainerDisplay = new createjs.Container();
  42. _oContainerDisplay.x = 80;
  43. s_oStage.addChild(_oContainerDisplay);
  44. var oSpritePanel = s_oSpriteLibrary.getSprite("time_panel");
  45. _oSpriteTimePanel = createBitmap(oSpritePanel);
  46. _oContainerDisplay.addChild(_oSpriteTimePanel);
  47. _oTextTime = new CTLText(_oContainerDisplay,
  48. _oSpriteTimePanel.x+5, 40, oSpritePanel.width-10, 24,
  49. 24, "center", "#ffde00", FONT_GAME2, 1,
  50. 0, 0,
  51. TEXT_TIME_LEFT+" "+formatTime(TIME_AVAILABLE),
  52. true, true, false,
  53. false );
  54. _oTextTime.setShadow("#000000", 3, 3, 4);
  55. var szPoints = TEXT_SCORE + " 0";
  56. _oTextPoints = new CTLText(_oContainerDisplay,
  57. _oSpriteTimePanel.x+5, 68, oSpritePanel.width-10, 30,
  58. 30, "center", "#ffde00", FONT_GAME2, 1,
  59. 0, 0,
  60. szPoints,
  61. true, true, false,
  62. false );
  63. _oTextPoints.setShadow("#000000", 3, 3, 4);
  64. var szShots = TEXT_SHOTS + " 0";
  65. _oTextShots = new CTLText(_oContainerDisplay,
  66. _oSpriteTimePanel.x+5, 100, oSpritePanel.width-10, 30,
  67. 30, "center", "#ffde00", FONT_GAME2, 1,
  68. 0, 0,
  69. szShots,
  70. true, true, false,
  71. false );
  72. _oTextShots.setShadow("#000000", 3, 3, 4);
  73. _oSpriteShotBallX = createBitmap(s_oSpriteLibrary.getSprite("shot_ball"));
  74. _oSpriteShotBallX.regX = SHOTBALL_SIZE/2;
  75. _oSpriteShotBallX.regY = SHOTBALL_SIZE/2;
  76. _oSpriteShotBallX.x = _iIniShotBallPosX - 100;
  77. _oSpriteShotBallX.y = _iIniShotBallPosY;
  78. s_oStage.addChild(_oSpriteShotBallX);
  79. _oSpriteShotBallY = createBitmap(s_oSpriteLibrary.getSprite("shot_ball"));
  80. _oSpriteShotBallY.regX = SHOTBALL_SIZE/2;
  81. _oSpriteShotBallY.regY = SHOTBALL_SIZE/2;
  82. _oSpriteShotBallY.x = _iIniShotBallPosX ;
  83. _oSpriteShotBallY.y = _iIniShotBallPosY - 100;
  84. _oSpriteShotBallY.visible = false;
  85. s_oStage.addChild(_oSpriteShotBallY);
  86. _oShapeKeyListener = new createjs.Shape();
  87. _oShapeKeyListener.graphics.beginFill("Black").drawRect(0,75,CANVAS_WIDTH,CANVAS_HEIGHT-75);
  88. _oShapeKeyListener.alpha = 0.01;
  89. s_oStage.addChild(_oShapeKeyListener);
  90. _oShapeKeyListener.on("mousedown", this._handleClick, this);
  91. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  92. var oSprite = s_oSpriteLibrary.getSprite('audio_icon');
  93. _pStartPosAudio = {x: CANVAS_WIDTH - (oSprite.width/4) - 5, y: (oSprite.height/2) + 5};
  94. _oAudioToggle = new CToggle(_pStartPosAudio.x,_pStartPosAudio.y,oSprite,s_bAudioActive,s_oStage);
  95. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  96. };
  97. var doc = window.document;
  98. var docEl = doc.documentElement;
  99. _fRequestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;
  100. _fCancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;
  101. if(ENABLE_FULLSCREEN === false){
  102. _fRequestFullScreen = false;
  103. }
  104. if (_fRequestFullScreen && screenfull.isEnabled){
  105. oSprite = s_oSpriteLibrary.getSprite('but_fullscreen');
  106. _pStartPosFullscreen = {x:oSprite.width/4 + 10,y:(oSprite.height/2) + 5};
  107. _oButFullscreen = new CToggle(_pStartPosFullscreen.x,_pStartPosFullscreen.y,oSprite,s_bFullscreen,s_oStage);
  108. _oButFullscreen.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this);
  109. }
  110. var oSprite = s_oSpriteLibrary.getSprite('but_exit');
  111. _pStartPosExit = {x: CANVAS_WIDTH - (oSprite.width/2) - 62, y: (oSprite.height/2) + 5};
  112. _oExitBut = new CGfxButton(_pStartPosExit.x,_pStartPosExit.y,oSprite);
  113. _oExitBut.addEventListener(ON_MOUSE_UP, this._onExit, this);
  114. _bKeyIsDown = false;
  115. if(s_bMobile === false){
  116. document.onkeydown = this.onKeyDown;
  117. document.onkeyup = this.onKeyUp;
  118. }
  119. this.refreshButtonPos(s_iOffsetX,s_iOffsetY);
  120. };
  121. this.refreshButtonPos = function(iNewX,iNewY){
  122. _oExitBut.setPosition(_pStartPosExit.x - iNewX,iNewY + _pStartPosExit.y);
  123. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  124. _oAudioToggle.setPosition(_pStartPosAudio.x - iNewX,iNewY + _pStartPosAudio.y);
  125. }
  126. if (_fRequestFullScreen && screenfull.isEnabled){
  127. _oButFullscreen.setPosition(_pStartPosFullscreen.x + s_iOffsetX,_pStartPosFullscreen.y + s_iOffsetY);
  128. }
  129. _oContainerDisplay.y = iNewY;
  130. };
  131. this.unload = function(){
  132. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  133. _oAudioToggle.unload();
  134. };
  135. if (_fRequestFullScreen && screenfull.isEnabled){
  136. _oButFullscreen.unload();
  137. }
  138. _oExitBut.unload();
  139. document.onkeydown = null;
  140. document.onkeyup = null;
  141. s_oInterface = null;
  142. };
  143. this.resetFullscreenBut = function(){
  144. _oButFullscreen.setActive(s_bFullscreen);
  145. };
  146. this.updateTime = function(iTime){
  147. var szTimeLeft = TEXT_TIME_LEFT +" "+formatTime(iTime);
  148. _oTextTime.refreshText(szTimeLeft);
  149. };
  150. this.updateScore = function(iScore){
  151. var szScore = TEXT_SCORE + " "+iScore;
  152. _oTextPoints.refreshText(szScore);
  153. };
  154. this.updateShots = function(iShots){
  155. var szShots = TEXT_SHOTS + " "+iShots;
  156. _oTextShots.refreshText(szShots);
  157. };
  158. this._handleClick = function(e){
  159. if (!_bMouseBusy) {
  160. _bMouseBusy = false;
  161. if (_bAnimX === true){
  162. _bAnimX = false;
  163. _bAnimY = true;
  164. _fReturnX = Math.floor((_oSpriteShotBallX.x - _iIniShotBallPosX)/(_fMaxShotBallDistance)*100)/100;
  165. _oSpriteShotBallY.visible = true;
  166. return true;
  167. };
  168. if (_bAnimY === true){
  169. _bAnimY = false;
  170. _fReturnY = Math.floor((_oSpriteShotBallY.y - _iIniShotBallPosY)/(_fMaxShotBallDistance)*100)/100;
  171. _bVectorAquired = true;
  172. };
  173. };
  174. };
  175. this.onKeyUp = function(evt) {
  176. _bKeyIsDown = false;
  177. };
  178. this.onKeyDown = function(evt) {
  179. if(_bKeyIsDown){
  180. return;
  181. }
  182. _bKeyIsDown = true;
  183. if(!evt){
  184. evt = window.event;
  185. }
  186. switch(evt.keyCode) {
  187. // spacebar
  188. case 32: {
  189. s_oInterface._handleClick();
  190. break;
  191. }
  192. }
  193. evt.preventDefault();
  194. return false;
  195. };
  196. this.listenForClick = function(){
  197. _bMouseBusy = false;
  198. if(_bVectorAquired){
  199. return true;
  200. } else if (_bAnimX === false && _bAnimY === false){
  201. _bAnimX = true;
  202. this._animateShotBall();
  203. return true;
  204. } else {
  205. this._animateShotBall();
  206. return true;
  207. };
  208. };
  209. this._animateShotBall = function(){
  210. if (_bAnimX) {
  211. // animX
  212. if (_bAnimXLeft) {
  213. _oSpriteShotBallX.x -= SELECTOR_SPEED;
  214. if (_oSpriteShotBallX.x < CANVAS_WIDTH*0.85 - _fMaxShotBallDistance) {
  215. _bAnimXLeft = false;
  216. };
  217. } else {
  218. _oSpriteShotBallX.x += SELECTOR_SPEED;
  219. if (_oSpriteShotBallX.x > CANVAS_WIDTH*0.85 + _fMaxShotBallDistance) {
  220. _bAnimXLeft = true;
  221. };
  222. };
  223. } else if (_bAnimY) {
  224. // animY
  225. if (_bAnimYUp) {
  226. _oSpriteShotBallY.y -= SELECTOR_SPEED;
  227. if (_oSpriteShotBallY.y < CANVAS_HEIGHT*0.45 - _fMaxShotBallDistance) {
  228. _bAnimYUp = false;
  229. };
  230. } else {
  231. _oSpriteShotBallY.y += SELECTOR_SPEED;
  232. if (_oSpriteShotBallY.y > CANVAS_HEIGHT*0.45 + _fMaxShotBallDistance) {
  233. _bAnimYUp = true;
  234. };
  235. };
  236. };
  237. };
  238. this.isVectorAquired = function(){
  239. return {state: _bVectorAquired,vector: {x: _fReturnX, y: _fReturnY}};
  240. };
  241. this.newBall = function(){
  242. _bMouseBusy = true;
  243. _bVectorAquired = false;
  244. _bAnimX = false;
  245. _bAnimY = false;
  246. _bAnimXLeft = false;
  247. _bAnimYUp = false;
  248. _oSpriteShotBallX.x = _iIniShotBallPosX - 100;
  249. _oSpriteShotBallX.y = _iIniShotBallPosY;
  250. _oSpriteShotBallY.x = _iIniShotBallPosX ;
  251. _oSpriteShotBallY.y = _iIniShotBallPosY - 100;
  252. _oSpriteShotBallY.visible = false;
  253. };
  254. this._onAudioToggle = function(){
  255. Howler.mute(s_bAudioActive);
  256. s_bAudioActive = !s_bAudioActive;
  257. };
  258. this._onExit = function(){
  259. _refGame.unload();
  260. };
  261. this._onFullscreenRelease = function(){
  262. if(s_bFullscreen) {
  263. _fCancelFullScreen.call(window.document);
  264. }else{
  265. _fRequestFullScreen.call(window.document.documentElement);
  266. }
  267. sizeHandler();
  268. };
  269. s_oInterface = this;
  270. this.init(refGame);
  271. };
  272. var s_oInterface = null;