CInterface.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. function CInterface(ref,bChallenge){
  2. var _refCGame;
  3. var _bNewTopScoreBusy = false;
  4. var _bChallenge;
  5. var _oBg;
  6. var _oAudioToggle;
  7. var _oFade;
  8. var _oExitBut;
  9. var _oTextScore;
  10. var _oTimeText;
  11. var _oTextHiScore;
  12. var _oTextNewTopScore;
  13. var _oButFullscreen;
  14. var _fRequestFullScreen = null;
  15. var _fCancelFullScreen = null;
  16. var _pStartPosAudio;
  17. var _pStartPosExit;
  18. var _pStartPosScore;
  19. var _pStartPosTime;
  20. var _pStartPosTopScore;
  21. var _pStartPosFullscreen;
  22. this._init = function(ref,bChallenge){
  23. _refCGame = ref;
  24. _bChallenge = bChallenge;
  25. _oBg = new createjs.Bitmap(s_oSpriteLibrary.getSprite('bg_game'));
  26. s_oStage.addChild(_oBg);
  27. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  28. var oSprite = s_oSpriteLibrary.getSprite('audio_icon');
  29. _pStartPosAudio = {x:CANVAS_WIDTH - (oSprite.width/2) -35,y: (oSprite.height/2) + 15};
  30. _oAudioToggle = new CToggle(_pStartPosAudio.x,_pStartPosAudio.y,oSprite,s_oStage);
  31. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  32. oSprite = s_oSpriteLibrary.getSprite('but_fullscreen');
  33. _pStartPosFullscreen = {x: _pStartPosAudio.x - (oSprite.width / 2) - 10, y: _pStartPosAudio.y};
  34. }else{
  35. oSprite = s_oSpriteLibrary.getSprite('but_fullscreen');
  36. _pStartPosFullscreen = {x:CANVAS_WIDTH - (oSprite.width/2) -35,y: (oSprite.height/2) + 15};
  37. }
  38. var doc = window.document;
  39. var docEl = doc.documentElement;
  40. _fRequestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;
  41. _fCancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;
  42. if(ENABLE_FULLSCREEN === false){
  43. _fRequestFullScreen = false;
  44. }
  45. if (_fRequestFullScreen && screenfull.enabled){
  46. _oButFullscreen = new CToggle(_pStartPosFullscreen.x,_pStartPosFullscreen.y,oSprite,s_bFullscreen,s_oStage);
  47. _oButFullscreen.addEventListener(ON_MOUSE_UP, this._onFullscreenRelease, this);
  48. }
  49. var oSprite = s_oSpriteLibrary.getSprite('but_exit');
  50. _pStartPosExit = {x:CANVAS_WIDTH - (oSprite.width/2) + 5,y:(oSprite.height/2) + 8};
  51. _oExitBut = new CGfxButton(_pStartPosExit.x, _pStartPosExit.y,oSprite);
  52. _oExitBut.addEventListener(ON_MOUSE_UP, this._onExit, this);
  53. var szNewTopScore;
  54. var szScore;
  55. var szHiScore;
  56. if (!_bChallenge) {
  57. szNewTopScore = TEXT_NEWHISCORE;
  58. szScore = TEXT_SCORE + 0;
  59. szHiScore = TEXT_HISCORE + 0;
  60. } else {
  61. szNewTopScore = TEXT_NEWHIGRAVITY;
  62. szScore = TEXT_GRAVITY + INIT_GRAVITY_CHALLENGE;
  63. szHiScore = TEXT_HIGRAVITY + 0;
  64. };
  65. _oTextNewTopScore = new createjs.Text(szNewTopScore, "24px "+FONT_GAME, "Orange");
  66. _oTextNewTopScore.x = CANVAS_WIDTH/2;
  67. _oTextNewTopScore.y = 300;
  68. _oTextNewTopScore.textBaseline = "alphabetic";
  69. _oTextNewTopScore.textAlign = "center";
  70. _oTextNewTopScore.shadow = new createjs.Shadow("#000000", 2, 2, 2);
  71. _oTextNewTopScore.visible = false;
  72. _pStartPosScore = {x:20,y:65};
  73. _oTextScore = new createjs.Text(szScore, "60px "+FONT_GAME, "#5b8e2d");
  74. _oTextScore.x = _pStartPosScore.x;
  75. _oTextScore.y = _pStartPosScore.y;
  76. _oTextScore.textBaseline = "alphabetic";
  77. _oTextScore.textAlign = "left";
  78. _oTextScore.shadow = new createjs.Shadow("#000000", 3, 3, 2);
  79. _pStartPosTime = {x:20,y:125};
  80. _oTimeText = new createjs.Text(TEXT_TIME,"50px "+FONT_GAME, "#5b8e2d");
  81. _oTimeText.x = _pStartPosTime.x;
  82. _oTimeText.y = _pStartPosTime.y;
  83. _oTimeText.textAlign = "left";
  84. _oTimeText.textBaseline = "alphabetic";
  85. _oTimeText.shadow = new createjs.Shadow("#000000", 3, 3, 2);
  86. s_oStage.addChild(_oTimeText);
  87. _pStartPosTopScore = {x:CANVAS_WIDTH/2,y:CANVAS_HEIGHT - 10};
  88. _oTextHiScore = new createjs.Text(szHiScore, "24px "+FONT_GAME, "#fff");
  89. _oTextHiScore.x = _pStartPosTopScore.x;
  90. _oTextHiScore.y = _pStartPosTopScore.y;
  91. _oTextHiScore.textBaseline = "alphabetic";
  92. _oTextHiScore.textAlign = "center";
  93. _oTextHiScore.shadow = new createjs.Shadow("#000000", 2, 2, 2);
  94. s_oStage.addChild(_oTextNewTopScore,_oTextScore,_oTextHiScore);
  95. _oFade = new createjs.Shape();
  96. _oFade.graphics.beginFill("black").drawRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);
  97. s_oStage.addChild(_oFade);
  98. createjs.Tween.get(_oFade).to({alpha:0}, 1000).call(function(){_oFade.visible = false;});
  99. this.refreshButtonPos (s_iOffsetX,s_iOffsetY);
  100. };
  101. this.refreshButtonPos = function(iNewX,iNewY){
  102. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  103. _oAudioToggle.setPosition(_pStartPosAudio.x - iNewX,iNewY + _pStartPosAudio.y);
  104. }
  105. if (_fRequestFullScreen && screenfull.enabled){
  106. _oButFullscreen.setPosition(_pStartPosFullscreen.x - s_iOffsetX,_pStartPosFullscreen.y + s_iOffsetY);
  107. }
  108. _oExitBut.setPosition(_pStartPosExit.x - iNewX,_pStartPosExit.y + iNewY);
  109. _oTextScore.x = _pStartPosScore.x + iNewX;
  110. _oTextScore.y = _pStartPosScore.y + iNewY;
  111. _oTimeText.x = _pStartPosTime.x + iNewX;
  112. _oTimeText.y = _pStartPosTime.y + iNewY;
  113. _oTextHiScore.x = _pStartPosTopScore.x;
  114. _oTextHiScore.y = _pStartPosTopScore.y - iNewY;
  115. };
  116. this.unload = function(){
  117. s_oStage.removeChild(_oBg,_oTextNewTopScore,_oTextScore,_oTextHiScore);
  118. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  119. _oAudioToggle.unload();
  120. }
  121. if (_fRequestFullScreen && screenfull.enabled){
  122. _oButFullscreen.unload();
  123. }
  124. _oExitBut.unload();
  125. s_oInterface = null;
  126. };
  127. this.updateScore = function(iScore,iHiScore){
  128. if (!_bChallenge) {
  129. var szScore = TEXT_SCORE + iScore;
  130. _oTextScore.text = szScore;
  131. var szHiScore = TEXT_HISCORE + iHiScore;
  132. _oTextHiScore.text = szHiScore;
  133. } else {
  134. var _iScore;
  135. if (iScore === 0) {
  136. _iScore = INIT_GRAVITY_CHALLENGE;
  137. } else {
  138. _iScore = iScore;
  139. };
  140. var szScore = TEXT_GRAVITY + _iScore;
  141. _oTextScore.text = szScore;
  142. var szHiScore = TEXT_HIGRAVITY + iHiScore;
  143. _oTextHiScore.text = szHiScore;
  144. };
  145. };
  146. this.refreshTime = function(iValue){
  147. _oTimeText.text = TEXT_TIME + " " + iValue;
  148. };
  149. this.newTopScore = function(){
  150. if (_bNewTopScoreBusy === false) {
  151. _bNewTopScoreBusy = true;
  152. _oTextNewTopScore.text = TEXT_NEWHISCORE;
  153. _oTextNewTopScore.x = - 200;
  154. _oTextNewTopScore.alpha = 0.5;
  155. _oTextNewTopScore.visible = true;
  156. _oTextNewTopScore.color = "Orange";
  157. createjs.Tween.get(_oTextNewTopScore)
  158. .to({x: CANVAS_WIDTH/2, scaleX: 1.5, scaleY: 1.5, alpha:1}, 750,createjs.Ease.backInOut)
  159. .wait(500)
  160. .call(function(){
  161. createjs.Tween.get(_oTextNewTopScore).
  162. to({x: CANVAS_WIDTH + 200, scaleX: 1, scaleY: 1, alpha:0.5}, 750,createjs.Ease.backInOut).
  163. call(function(){
  164. _oTextNewTopScore.visible = false;
  165. _bNewTopScoreBusy = false;
  166. });
  167. });
  168. };
  169. };
  170. this.encouragement = function(){
  171. if (_bNewTopScoreBusy === false) {
  172. var rnd = Math.floor(Math.random()*(TEXT_SUPPORT_STRINGS + 1));
  173. _bNewTopScoreBusy = true;
  174. _oTextNewTopScore.text = TEXT_SUPPORT[rnd];
  175. _oTextNewTopScore.x = - 200;
  176. _oTextNewTopScore.alpha = 0.5;
  177. _oTextNewTopScore.visible = true;
  178. _oTextNewTopScore.color = "#fcd000";
  179. createjs.Tween.get(_oTextNewTopScore)
  180. .to({x: CANVAS_WIDTH/2, scaleX: 1.5, scaleY: 1.5, alpha:1}, 750,createjs.Ease.backInOut)
  181. .wait(500)
  182. .call(function(){
  183. createjs.Tween.get(_oTextNewTopScore).
  184. to({x: CANVAS_WIDTH + 200, scaleX: 1, scaleY: 1, alpha:0.5}, 750,createjs.Ease.backInOut).
  185. call(function(){
  186. _oTextNewTopScore.visible = false;
  187. _bNewTopScoreBusy = false;
  188. });
  189. });
  190. };
  191. };
  192. this._onExit = function(){
  193. this.unload();
  194. _refCGame.unload();
  195. $(s_oMain).trigger("end_session", _oTextHiScore.text.substring(TEXT_HISCORE.length));
  196. };
  197. this._onAudioToggle = function(){
  198. Howler.mute(s_bAudioActive);
  199. s_bAudioActive = !s_bAudioActive;
  200. };
  201. this.resetFullscreenBut = function(){
  202. if (_fRequestFullScreen && screenfull.enabled){
  203. _oButFullscreen.setActive(s_bFullscreen);
  204. }
  205. };
  206. this._onFullscreenRelease = function(){
  207. if(s_bFullscreen) {
  208. _fCancelFullScreen.call(window.document);
  209. }else{
  210. _fRequestFullScreen.call(window.document.documentElement);
  211. }
  212. sizeHandler();
  213. };
  214. this.getTopScore = function(){
  215. return _oTextHiScore.text;
  216. };
  217. s_oInterface = this;
  218. this._init(ref,bChallenge);
  219. };
  220. var s_oInterface = null;