CMain.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. function CMain(oData) {
  2. var _bUpdate;
  3. var _iCurResource = 0;
  4. var RESOURCE_TO_LOAD = 0;
  5. var _iState = STATE_LOADING;
  6. var _oData;
  7. var _oPreloader;
  8. var _oMenu;
  9. var _oGame;
  10. this.initContainer = function () {
  11. s_oCanvas = document.getElementById("canvas");
  12. s_oStage = new createjs.Stage(s_oCanvas);
  13. s_oStage.preventSelection = false;
  14. createjs.Touch.enable(s_oStage,true);
  15. s_bMobile = isMobile();
  16. if (s_bMobile === false) {
  17. s_oStage.enableMouseOver(20);
  18. }
  19. s_iPrevTime = new Date().getTime();
  20. createjs.Ticker.addEventListener("tick", this._update);
  21. createjs.Ticker.setFPS(30);
  22. if (navigator.userAgent.match(/Windows Phone/i)) {
  23. DISABLE_SOUND_MOBILE = true;
  24. }
  25. s_oSpriteLibrary = new CSpriteLibrary();
  26. //ADD PRELOADER
  27. _oPreloader = new CPreloader();
  28. };
  29. this.preloaderReady = function () {
  30. this._loadImages();
  31. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  32. this._initSounds();
  33. }
  34. _bUpdate = true;
  35. };
  36. this.soundLoaded = function () {
  37. _iCurResource++;
  38. var iPerc = Math.floor(_iCurResource / RESOURCE_TO_LOAD * 100);
  39. _oPreloader.refreshLoader(iPerc);
  40. };
  41. this._initSounds = function(){
  42. Howler.mute(!s_bAudioActive);
  43. s_aSoundsInfo = new Array();
  44. s_aSoundsInfo.push({path: './sounds/',filename:'delete_lines',loop:false,volume:1, ingamename: 'delete_lines'});
  45. s_aSoundsInfo.push({path: './sounds/',filename:'click',loop:false,volume:1, ingamename: 'click'});
  46. s_aSoundsInfo.push({path: './sounds/',filename:'game_over',loop:false,volume:1, ingamename: 'game_over'});
  47. s_aSoundsInfo.push({path: './sounds/',filename:'shift_piece',loop:false,volume:1, ingamename: 'shift_piece'});
  48. s_aSoundsInfo.push({path: './sounds/',filename:'soundtrack',loop:true,volume:1, ingamename: 'soundtrack'});
  49. RESOURCE_TO_LOAD += s_aSoundsInfo.length;
  50. s_aSounds = new Array();
  51. for(var i=0; i<s_aSoundsInfo.length; i++){
  52. this.tryToLoadSound(s_aSoundsInfo[i], false);
  53. }
  54. };
  55. this.tryToLoadSound = function(oSoundInfo, bDelay){
  56. setTimeout(function(){
  57. s_aSounds[oSoundInfo.ingamename] = new Howl({
  58. src: [oSoundInfo.path+oSoundInfo.filename+'.mp3'],
  59. autoplay: false,
  60. preload: true,
  61. loop: oSoundInfo.loop,
  62. volume: oSoundInfo.volume,
  63. onload: s_oMain.soundLoaded,
  64. onloaderror: function(szId,szMsg){
  65. for(var i=0; i < s_aSoundsInfo.length; i++){
  66. if ( szId === s_aSounds[s_aSoundsInfo[i].ingamename]._sounds[0]._id){
  67. s_oMain.tryToLoadSound(s_aSoundsInfo[i], true);
  68. break;
  69. }
  70. }
  71. },
  72. onplayerror: function(szId) {
  73. for(var i=0; i < s_aSoundsInfo.length; i++){
  74. if ( szId === s_aSounds[s_aSoundsInfo[i].ingamename]._sounds[0]._id){
  75. s_aSounds[s_aSoundsInfo[i].ingamename].once('unlock', function() {
  76. s_aSounds[s_aSoundsInfo[i].ingamename].play();
  77. if(s_aSoundsInfo[i].ingamename === "soundtrack" && s_oGame !== null){
  78. setVolume("soundtrack",SOUNDTRACK_VOLUME_IN_GAME);
  79. }
  80. });
  81. break;
  82. }
  83. }
  84. }
  85. });
  86. }, (bDelay ? 200 : 0) );
  87. };
  88. this._loadImages = function () {
  89. s_oSpriteLibrary.init(this._onImagesLoaded, this._onAllImagesLoaded, this);
  90. s_oSpriteLibrary.addSprite("bg_menu", "./sprites/bg_menu.jpg");
  91. s_oSpriteLibrary.addSprite("bg_game", "./sprites/bg_game.jpg");
  92. s_oSpriteLibrary.addSprite("but_exit", "./sprites/but_exit.png");
  93. s_oSpriteLibrary.addSprite("but_pause", "./sprites/but_pause.png");
  94. s_oSpriteLibrary.addSprite("icon_audio", "./sprites/icon_audio.png");
  95. s_oSpriteLibrary.addSprite("but_play", "./sprites/but_play.png");
  96. s_oSpriteLibrary.addSprite("but_restart", "./sprites/but_restart.png");
  97. s_oSpriteLibrary.addSprite("but_continue", "./sprites/but_continue.png");
  98. s_oSpriteLibrary.addSprite("but_home", "./sprites/but_home.png");
  99. s_oSpriteLibrary.addSprite("but_not", "./sprites/but_not.png");
  100. s_oSpriteLibrary.addSprite("but_rotation", "./sprites/but_rotation.png");
  101. s_oSpriteLibrary.addSprite("small_logo", "./sprites/small_logo.png");
  102. s_oSpriteLibrary.addSprite("block_blur", "./sprites/block_blur.png");
  103. s_oSpriteLibrary.addSprite("block_rotation", "./sprites/block_rotation.png");
  104. s_oSpriteLibrary.addSprite("block_down", "./sprites/block_down.png");
  105. s_oSpriteLibrary.addSprite("logo_ctl", "./sprites/logo_ctl.png");
  106. s_oSpriteLibrary.addSprite("pause_text", "./sprites/pause_text.png");
  107. s_oSpriteLibrary.addSprite("cell", "./sprites/cell.png");
  108. s_oSpriteLibrary.addSprite("msg_box", "./sprites/msg_box.png");
  109. s_oSpriteLibrary.addSprite("but_yes", "./sprites/but_yes.png");
  110. s_oSpriteLibrary.addSprite("but_info", "./sprites/but_info.png");
  111. s_oSpriteLibrary.addSprite("arrow", "./sprites/arrow.png");
  112. s_oSpriteLibrary.addSprite("next_board", "./sprites/next_board.png");
  113. s_oSpriteLibrary.addSprite("info_board", "./sprites/info_board.png");
  114. s_oSpriteLibrary.addSprite("score_board", "./sprites/score_board.png");
  115. s_oSpriteLibrary.addSprite("frame_top", "./sprites/frame_top.png");
  116. s_oSpriteLibrary.addSprite("frame_bottom", "./sprites/frame_bottom.png");
  117. s_oSpriteLibrary.addSprite("key_down", "./sprites/key_down.png");
  118. s_oSpriteLibrary.addSprite("key_up", "./sprites/key_up.png");
  119. s_oSpriteLibrary.addSprite("key_right", "./sprites/key_right.png");
  120. s_oSpriteLibrary.addSprite("key_left", "./sprites/key_left.png");
  121. s_oSpriteLibrary.addSprite("logo_menu", "./sprites/logo_menu.png");
  122. s_oSpriteLibrary.addSprite("but_fullscreen", "./sprites/but_fullscreen.png");
  123. for (var i = 0; i < BLOCKS_TYPE.length; i++) {
  124. s_oSpriteLibrary.addSprite("cell_" + i, "./sprites/cell_" + i + ".png");
  125. }
  126. RESOURCE_TO_LOAD += s_oSpriteLibrary.getNumSprites();
  127. s_oSpriteLibrary.loadSprites();
  128. };
  129. this._onImagesLoaded = function () {
  130. _iCurResource++;
  131. var iPerc = Math.floor(_iCurResource / RESOURCE_TO_LOAD * 100);
  132. _oPreloader.refreshLoader(iPerc);
  133. };
  134. this._onAllImagesLoaded = function () {
  135. };
  136. this._onRemovePreloader = function(){
  137. _oPreloader.unload();
  138. s_oSoundTrack = playSound("soundtrack", 1, true);
  139. s_oMain.gotoMenu();
  140. };
  141. this.gotoMenu = function () {
  142. _oMenu = new CMenu();
  143. _iState = STATE_MENU;
  144. };
  145. this.gotoGame = function () {
  146. _oGame = new CGame(_oData);
  147. _iState = STATE_GAME;
  148. $(s_oMain).trigger("start_session");
  149. };
  150. this.stopUpdate = function(){
  151. _bUpdate = false;
  152. createjs.Ticker.paused = true;
  153. $("#block_game").css("display","block");
  154. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  155. Howler.mute(true);
  156. }
  157. };
  158. this.startUpdate = function(){
  159. s_iPrevTime = new Date().getTime();
  160. _bUpdate = true;
  161. createjs.Ticker.paused = false;
  162. $("#block_game").css("display","none");
  163. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  164. if(s_bAudioActive){
  165. Howler.mute(false);
  166. }
  167. }
  168. };
  169. this._update = function (event) {
  170. if (_bUpdate === false) {
  171. return;
  172. }
  173. var iCurTime = new Date().getTime();
  174. s_iTimeElaps = iCurTime - s_iPrevTime;
  175. s_iCntTime += s_iTimeElaps;
  176. s_iCntFps++;
  177. s_iPrevTime = iCurTime;
  178. if (s_iCntTime >= 1000) {
  179. s_iCurFps = s_iCntFps;
  180. s_iCntTime -= 1000;
  181. s_iCntFps = 0;
  182. }
  183. if (_iState === STATE_GAME) {
  184. _oGame.update();
  185. }
  186. s_oStage.update(event);
  187. };
  188. s_oMain = this;
  189. _oData = oData;
  190. ENABLE_FULLSCREEN = oData.fullscreen;
  191. ENABLE_CHECK_ORIENTATION = oData.check_orientation;
  192. s_bAudioActive = oData.audio_enable_on_startup;
  193. this.initContainer();
  194. }
  195. var s_bMobile;
  196. var s_bAudioActive = true;
  197. var s_iCntTime = 0;
  198. var s_iTimeElaps = 0;
  199. var s_iPrevTime = 0;
  200. var s_iCntFps = 0;
  201. var s_iCurFps = 0;
  202. var s_iAdsLevel = 1;
  203. var s_iLevelReached = 1;
  204. var s_oStage;
  205. var s_oMain;
  206. var s_oSpriteLibrary;
  207. var s_oSoundTrack = null;
  208. var s_oCanvas;
  209. var s_aSounds;
  210. var s_bFullscreen = false;
  211. var s_aSoundsInfo;