CMain.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. function CMain(oData){
  2. var _bUpdate = false;
  3. var _iCurResource = 0;
  4. var RESOURCE_TO_LOAD;
  5. var _iState = STATE_LOADING;
  6. var _oData;
  7. var _oPreloader;
  8. var _oMenu;
  9. var _oHelp;
  10. var _oGame;
  11. this.initContainer = function(){
  12. var canvas = document.getElementById("canvas");
  13. s_oStage = new createjs.Stage(canvas);
  14. createjs.Touch.enable(s_oStage);
  15. s_bMobile = jQuery.browser.mobile;
  16. if(s_bMobile === false){
  17. s_oStage.enableMouseOver(20);
  18. $('body').on('contextmenu', '#canvas', function(e){ return false; });
  19. }
  20. s_iPrevTime = new Date().getTime();
  21. createjs.Ticker.addEventListener("tick", this._update);
  22. createjs.Ticker.setFPS(30);
  23. if(navigator.userAgent.match(/Windows Phone/i)){
  24. DISABLE_SOUND_MOBILE = true;
  25. }
  26. s_oSpriteLibrary = new CSpriteLibrary();
  27. //ADD PRELOADER
  28. _oPreloader = new CPreloader();
  29. };
  30. this._initSounds = function(){
  31. var aSoundsInfo = new Array();
  32. aSoundsInfo.push({path: './sounds/',filename:'explosion',loop:false,volume:1, ingamename: 'explosion'});
  33. aSoundsInfo.push({path: './sounds/',filename:'click',loop:false,volume:1, ingamename: 'click'});
  34. aSoundsInfo.push({path: './sounds/',filename:'game_over',loop:false,volume:1, ingamename: 'game_over'});
  35. aSoundsInfo.push({path: './sounds/',filename:'bonus',loop:false,volume:1, ingamename: 'bonus'});
  36. aSoundsInfo.push({path: './sounds/',filename:'win',loop:false,volume:1, ingamename: 'win'});
  37. aSoundsInfo.push({path: './sounds/',filename:'soundtrack',loop:true,volume:1, ingamename: 'soundtrack'});
  38. RESOURCE_TO_LOAD += aSoundsInfo.length;
  39. s_aSounds = new Array();
  40. for(var i=0; i<aSoundsInfo.length; i++){
  41. s_aSounds[aSoundsInfo[i].ingamename] = new Howl({
  42. src: [aSoundsInfo[i].path+aSoundsInfo[i].filename+'.mp3', aSoundsInfo[i].path+aSoundsInfo[i].filename+'.ogg'],
  43. autoplay: false,
  44. preload: true,
  45. loop: aSoundsInfo[i].loop,
  46. volume: aSoundsInfo[i].volume,
  47. onload: s_oMain.handleFileLoad()
  48. });
  49. }
  50. };
  51. this._loadImages = function(){
  52. s_oSpriteLibrary.init( this.handleFileLoad,this._onAllImagesLoaded, this );
  53. s_oSpriteLibrary.addSprite("but_play","./sprites/but_play.png");
  54. s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png");
  55. s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg");
  56. s_oSpriteLibrary.addSprite("bg_help","./sprites/bg_help.png");
  57. s_oSpriteLibrary.addSprite("bg_game","./sprites/bg_game.jpg");
  58. s_oSpriteLibrary.addSprite("hook","./sprites/hook.png");
  59. s_oSpriteLibrary.addSprite("nugget_1","./sprites/nugget_1.png");
  60. s_oSpriteLibrary.addSprite("nugget_2","./sprites/nugget_2.png");
  61. s_oSpriteLibrary.addSprite("nugget_3","./sprites/nugget_3.png");
  62. s_oSpriteLibrary.addSprite("nugget_4","./sprites/nugget_4.png");
  63. s_oSpriteLibrary.addSprite("malus","./sprites/malus.png");
  64. s_oSpriteLibrary.addSprite("msg_box","./sprites/msg_box.png");
  65. s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png");
  66. s_oSpriteLibrary.addSprite("clock","./sprites/clock.png");
  67. s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png");
  68. s_oSpriteLibrary.addSprite("but_credits","./sprites/but_credits.png");
  69. s_oSpriteLibrary.addSprite("ctl_logo","./sprites/ctl_logo.png");
  70. RESOURCE_TO_LOAD = s_oSpriteLibrary.getNumSprites();
  71. s_oSpriteLibrary.loadSprites();
  72. };
  73. this.handleFileLoad = function(){
  74. _iCurResource++;
  75. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  76. _oPreloader.refreshLoader(iPerc);
  77. if(_iCurResource === RESOURCE_TO_LOAD){
  78. this._allResourcesLoaded();
  79. }
  80. };
  81. this._onAllImagesLoaded = function(){
  82. };
  83. this.preloaderReady = function(){
  84. this._loadImages();
  85. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  86. this._initSounds();
  87. }
  88. _bUpdate = true;
  89. };
  90. this._allResourcesLoaded = function(){
  91. _oPreloader.unload();
  92. if (!isIOS()) {
  93. s_oSoundTrack = playSound("soundtrack", 1, true);
  94. }
  95. s_oMain.gotoMenu();
  96. };
  97. this.gotoMenu = function(){
  98. _oMenu = new CMenu();
  99. _iState = STATE_MENU;
  100. };
  101. this.gotoGame = function(){
  102. _oGame = new CGame(_oData);
  103. _iState = STATE_GAME;
  104. };
  105. this.gotoHelp = function(){
  106. _oHelp = new CHelp();
  107. _iState = STATE_HELP;
  108. };
  109. this.stopUpdate = function(){
  110. _bUpdate = false;
  111. createjs.Ticker.paused = true;
  112. $("#block_game").css("display","block");
  113. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  114. Howler.mute(true);
  115. }
  116. };
  117. this.startUpdate = function(){
  118. s_iPrevTime = new Date().getTime();
  119. _bUpdate = true;
  120. createjs.Ticker.paused = false;
  121. $("#block_game").css("display","none");
  122. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  123. if(s_bAudioActive){
  124. Howler.mute(false);
  125. }
  126. }
  127. };
  128. this._update = function(){
  129. if(!_bUpdate){
  130. return;
  131. }
  132. var iCurTime = new Date().getTime();
  133. s_iTimeElaps = iCurTime - s_iPrevTime;
  134. s_iCntTime += s_iTimeElaps;
  135. s_iCntFps++;
  136. s_iPrevTime = iCurTime;
  137. if ( s_iCntTime >= 1000 ){
  138. s_iCurFps = s_iCntFps;
  139. s_iCntTime -= 1000;
  140. s_iCntFps = 0;
  141. }
  142. if(_iState === STATE_GAME){
  143. _oGame.update();
  144. }
  145. s_oStage.update();
  146. };
  147. s_oMain = this;
  148. _oData = oData;
  149. ENABLE_FULLSCREEN = oData.fullscreen;
  150. ENABLE_CHECK_ORIENTATION = oData.check_orientation;
  151. this.initContainer();
  152. }
  153. var s_iCntTime = 0;
  154. var s_iTimeElaps = 0;
  155. var s_iPrevTime = 0;
  156. var s_iCntFps = 0;
  157. var s_iCurFps = 0;
  158. var s_bAudioActive = true;
  159. var s_oSoundTrack = null;
  160. var s_oDrawLayer;
  161. var s_oStage;
  162. var s_oMain;
  163. var s_oSpriteLibrary;
  164. var s_bFullscreen = false;
  165. var s_aSounds;