CMain.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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 _oHelp;
  10. var _oGame;
  11. var _oLevelMenu;
  12. this.initContainer = function(){
  13. s_oCanvas = document.getElementById("canvas");
  14. s_oStage = new createjs.Stage(s_oCanvas);
  15. createjs.Touch.enable(s_oStage);
  16. s_bMobile = jQuery.browser.mobile;
  17. if(s_bMobile === false){
  18. s_oStage.enableMouseOver(20);
  19. $('body').on('contextmenu', '#canvas', function(e){ return false; });
  20. }
  21. s_iPrevTime = new Date().getTime();
  22. createjs.Ticker.addEventListener("tick", this._update);
  23. createjs.Ticker.setFPS(FPS);
  24. if(navigator.userAgent.match(/Windows Phone/i)){
  25. DISABLE_SOUND_MOBILE = true;
  26. }
  27. s_oSpriteLibrary = new CSpriteLibrary();
  28. //ADD PRELOADER
  29. _oPreloader = new CPreloader();
  30. s_oRollingTextManager = new CRollingTextManager();
  31. };
  32. this.preloaderReady = function(){
  33. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  34. this._initSounds();
  35. }
  36. this._loadImages();
  37. _bUpdate = true;
  38. };
  39. this.soundLoaded = function(){
  40. _iCurResource++;
  41. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  42. _oPreloader.refreshLoader(iPerc);
  43. if(_iCurResource === RESOURCE_TO_LOAD){
  44. _oPreloader.unload();
  45. try{
  46. localStorage.setItem("ls_available","ok");
  47. }catch(evt){
  48. // localStorage not defined
  49. s_bStorageAvailable = false;
  50. }
  51. if (!isIOS()) {
  52. s_oSoundTrack = playSound("soundtrack", 1, true);
  53. }
  54. s_oMain.gotoMenu();
  55. }
  56. };
  57. this._initSounds = function(){
  58. var aSoundsInfo = new Array();
  59. aSoundsInfo.push({path: './sounds/',filename:'click',loop:false,volume:1, ingamename: 'click'});
  60. aSoundsInfo.push({path: './sounds/',filename:'hit_basket',loop:false,volume:1, ingamename: 'hit_basket'});
  61. aSoundsInfo.push({path: './sounds/',filename:'hit_obstacles',loop:false,volume:1, ingamename: 'hit_obstacles'});
  62. aSoundsInfo.push({path: './sounds/',filename:'soundtrack',loop:true,volume:1, ingamename: 'soundtrack'});
  63. aSoundsInfo.push({path: './sounds/',filename:'pick_object',loop:true,volume:1, ingamename: 'pick_object'});
  64. aSoundsInfo.push({path: './sounds/',filename:'game_over',loop:false,volume:1, ingamename: 'game_over'});
  65. aSoundsInfo.push({path: './sounds/',filename:'next_level',loop:true,volume:1, ingamename: 'next_level'});
  66. RESOURCE_TO_LOAD += aSoundsInfo.length;
  67. s_aSounds = new Array();
  68. for(var i=0; i<aSoundsInfo.length; i++){
  69. s_aSounds[aSoundsInfo[i].ingamename] = new Howl({
  70. src: [aSoundsInfo[i].path+aSoundsInfo[i].filename+'.mp3', aSoundsInfo[i].path+aSoundsInfo[i].filename+'.ogg'],
  71. autoplay: false,
  72. preload: true,
  73. loop: aSoundsInfo[i].loop,
  74. volume: aSoundsInfo[i].volume,
  75. onload: s_oMain.soundLoaded
  76. });
  77. }
  78. };
  79. this._loadImages = function(){
  80. s_oSpriteLibrary.init( this._onImagesLoaded,this._onAllImagesLoaded, this );
  81. s_oSpriteLibrary.addSprite("but_play","./sprites/but_play.png");
  82. s_oSpriteLibrary.addSprite("but_continue","./sprites/but_continue.png");
  83. s_oSpriteLibrary.addSprite("but_restart","./sprites/but_restart.png");
  84. s_oSpriteLibrary.addSprite("but_home","./sprites/but_home.png");
  85. s_oSpriteLibrary.addSprite("msg_box_game_over","./sprites/msg_box_game_over.png");
  86. s_oSpriteLibrary.addSprite("msg_box","./sprites/msg_box.png");
  87. s_oSpriteLibrary.addSprite("curtain","./sprites/curtain.png");
  88. s_oSpriteLibrary.addSprite("curtain_bg","./sprites/curtain_bg.jpg");
  89. for( var i=1; i < 87; i++){
  90. s_oSpriteLibrary.addSprite("msg_box_animation_"+i,"./sprites/msg_box/"+i+"-msg-box-animation.png");
  91. }
  92. s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg");
  93. for( var i=0; i < 22; i++){
  94. s_oSpriteLibrary.addSprite("bg_menu_animation_"+i,"./sprites/bg_menu_animation/"+i+"-main-menu-animation.png");
  95. }
  96. s_oSpriteLibrary.addSprite("bg_game","./sprites/bg_game.jpg");
  97. s_oSpriteLibrary.addSprite("cursor_help","./sprites/cursor_help.png");
  98. s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png");
  99. s_oSpriteLibrary.addSprite("but_restart","./sprites/but_restart.png");
  100. s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png");
  101. s_oSpriteLibrary.addSprite("but_next","./sprites/but_next.png");
  102. s_oSpriteLibrary.addSprite("level_sprite","./sprites/levelsprite.png");
  103. s_oSpriteLibrary.addSprite("target","./sprites/target.png");
  104. s_oSpriteLibrary.addSprite("ball_0","./sprites/ball_0.png");
  105. s_oSpriteLibrary.addSprite("ball_1","./sprites/ball_1.png");
  106. s_oSpriteLibrary.addSprite("player","./sprites/player.png");
  107. s_oSpriteLibrary.addSprite("object_to_pick","./sprites/object_to_pick.png");
  108. s_oSpriteLibrary.addSprite("rectangle_0","./sprites/rectangle_0.png");
  109. s_oSpriteLibrary.addSprite("rectangle_1","./sprites/rectangle_1.png");
  110. s_oSpriteLibrary.addSprite("rectangle_2","./sprites/rectangle_2.png");
  111. s_oSpriteLibrary.addSprite("rectangle_3","./sprites/rectangle_3.png");
  112. s_oSpriteLibrary.addSprite("revolute_rectangle_0","./sprites/revolute_rectangle_0.png");
  113. s_oSpriteLibrary.addSprite("revolute_rectangle_1","./sprites/revolute_rectangle_1.png");
  114. s_oSpriteLibrary.addSprite("unhappy","./sprites/player_unhappy.png");
  115. s_oSpriteLibrary.addSprite("almost_happy","./sprites/player_almost_happy.png");
  116. s_oSpriteLibrary.addSprite("happy","./sprites/player_happy.png");
  117. s_oSpriteLibrary.addSprite("logo_credits","./sprites/logo_credits.png");
  118. s_oSpriteLibrary.addSprite("but_credits","./sprites/but_info.png");
  119. s_oSpriteLibrary.addSprite("wall","./sprites/wall.png");
  120. s_oSpriteLibrary.addSprite("basket_back","./sprites/basket_back.png");
  121. s_oSpriteLibrary.addSprite("basket_front","./sprites/basket_front.png");
  122. s_oSpriteLibrary.addSprite("multiplier_25","./sprites/multiplier_25.png");
  123. s_oSpriteLibrary.addSprite("multiplier_50","./sprites/multiplier_50.png");
  124. s_oSpriteLibrary.addSprite("multiplier_100","./sprites/multiplier_100.png");
  125. s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png");
  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. if(_iCurResource === RESOURCE_TO_LOAD){
  134. _oPreloader.unload();
  135. try{
  136. localStorage.setItem("ls_available","ok");
  137. }catch(evt){
  138. // localStorage not defined
  139. s_bStorageAvailable = false;
  140. }
  141. if (!isIOS()) {
  142. s_oSoundTrack = playSound("soundtrack", 1, true);
  143. }
  144. this.gotoMenu();
  145. }
  146. };
  147. this._onAllImagesLoaded = function(){
  148. };
  149. this.gotoMenu = function(){
  150. _oMenu = new CMenu();
  151. _iState = STATE_MENU;
  152. };
  153. this.gotoGame = function(iLevel){
  154. _oGame = new CGame(_oData, iLevel);
  155. _iState = STATE_GAME;
  156. };
  157. this.gotoLevelMenu = function(){
  158. _oLevelMenu = new CLevelMenu();
  159. _iState = STATE_MENU;
  160. };
  161. this.gotoHelp = function(){
  162. _oHelp = new CHelp();
  163. _iState = STATE_HELP;
  164. };
  165. this.stopUpdate = function(){
  166. _bUpdate = false;
  167. createjs.Ticker.paused = true;
  168. $("#block_game").css("display","block");
  169. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  170. Howler.mute(true);
  171. }
  172. };
  173. this.startUpdate = function(){
  174. s_iPrevTime = new Date().getTime();
  175. _bUpdate = true;
  176. createjs.Ticker.paused = false;
  177. $("#block_game").css("display","none");
  178. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  179. if(s_bAudioActive){
  180. Howler.mute(false);
  181. }
  182. }
  183. };
  184. this._update = function(event){
  185. if(_bUpdate === false){
  186. return;
  187. }
  188. var iCurTime = new Date().getTime();
  189. s_iTimeElaps = iCurTime - s_iPrevTime;
  190. s_iCntTime += s_iTimeElaps;
  191. s_iCntFps++;
  192. s_iPrevTime = iCurTime;
  193. if ( s_iCntTime >= 1000 ){
  194. s_iCurFps = s_iCntFps;
  195. s_iCntTime-=1000;
  196. s_iCntFps = 0;
  197. }
  198. if(_iState === STATE_GAME){
  199. _oGame.update();
  200. }
  201. s_oStage.update(event);
  202. };
  203. s_oMain = this;
  204. _oData = oData;
  205. ENABLE_FULLSCREEN = oData.fullscreen;
  206. ENABLE_CHECK_ORIENTATION = oData.check_orientation;
  207. this.initContainer();
  208. }
  209. var s_bMobile;
  210. var s_bAudioActive = true;
  211. var s_iCntTime = 0;
  212. var s_iTimeElaps = 0;
  213. var s_iPrevTime = 0;
  214. var s_iCntFps = 0;
  215. var s_iCurFps = 0;
  216. var s_oPhysicsController;
  217. var s_iLevelReached = 1;
  218. var s_aScores = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  219. var s_oRollingTextManager;
  220. var s_oDrawLayer;
  221. var s_oStage;
  222. var s_oMain;
  223. var s_oSpriteLibrary;
  224. var s_oSoundTrack = null;
  225. var s_oCanvas;
  226. var s_bFullscreen = false;
  227. var s_bStorageAvailable = true;