CMain.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. this.initContainer = function(){
  12. s_oCanvas = document.getElementById("canvas");
  13. s_oStage = new createjs.Stage(s_oCanvas);
  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.framerate = 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.preloaderReady = function(){
  31. this._loadImages();
  32. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  33. this._initSounds();
  34. }
  35. _bUpdate = true;
  36. };
  37. this.soundLoaded = function(){
  38. _iCurResource++;
  39. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  40. _oPreloader.refreshLoader(iPerc);
  41. };
  42. this._initSounds = function(){
  43. var aSoundsInfo = new Array();
  44. aSoundsInfo.push({path: './sounds/',filename:'baseball_buzzer',loop:false,volume:1, ingamename: 'baseball_buzzer'});
  45. aSoundsInfo.push({path: './sounds/',filename:'baseball_countdown_1',loop:false,volume:1, ingamename: 'baseball_countdown_1'});
  46. aSoundsInfo.push({path: './sounds/',filename:'baseball_countdown_2',loop:false,volume:1, ingamename: 'baseball_countdown_2'});
  47. aSoundsInfo.push({path: './sounds/',filename:'baseball_crowd_homerun',loop:false,volume:1, ingamename: 'baseball_crowd_homerun'});
  48. aSoundsInfo.push({path: './sounds/',filename:'baseball_crowd_strike',loop:false,volume:1, ingamename: 'baseball_crowd_strike'});
  49. aSoundsInfo.push({path: './sounds/',filename:'baseball_drop_bounce_grass',loop:false,volume:1, ingamename: 'baseball_drop_bounce_grass'});
  50. aSoundsInfo.push({path: './sounds/',filename:'baseball_hit_ball',loop:false,volume:1, ingamename: 'baseball_hit_ball'});
  51. aSoundsInfo.push({path: './sounds/',filename:'crowd_cheering',loop:true,volume:1, ingamename: 'crowd_cheering'});
  52. aSoundsInfo.push({path: './sounds/',filename:'baseball_applauses',loop:false,volume:1, ingamename: 'baseball_applauses'});
  53. aSoundsInfo.push({path: './sounds/',filename:'crowd_ohhh',loop:false,volume:1, ingamename: 'crowd_ohhh'});
  54. aSoundsInfo.push({path: './sounds/',filename:'soundtrack',loop:true,volume:1, ingamename: 'soundtrack'});
  55. RESOURCE_TO_LOAD += aSoundsInfo.length;
  56. s_aSounds = new Array();
  57. for(var i=0; i<aSoundsInfo.length; i++){
  58. s_aSounds[aSoundsInfo[i].ingamename] = new Howl({
  59. src: [aSoundsInfo[i].path+aSoundsInfo[i].filename+'.mp3'],
  60. autoplay: false,
  61. preload: true,
  62. loop: aSoundsInfo[i].loop,
  63. volume: aSoundsInfo[i].volume,
  64. onload: s_oMain.soundLoaded
  65. });
  66. }
  67. };
  68. this._loadImages = function(){
  69. s_oSpriteLibrary.init( this._onImagesLoaded,this._onAllImagesLoaded, this );
  70. s_oSpriteLibrary.addSprite("but_play","./sprites/but_play.png");
  71. s_oSpriteLibrary.addSprite("msg_box","./sprites/msg_box.png");
  72. s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg");
  73. s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png");
  74. s_oSpriteLibrary.addSprite("logo_menu","./sprites/logo_menu.png");
  75. s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png");
  76. s_oSpriteLibrary.addSprite("bg_game","./sprites/bg_game.jpg");
  77. s_oSpriteLibrary.addSprite("score_panel","./sprites/score_panel.png");
  78. s_oSpriteLibrary.addSprite("air_view","./sprites/air_view.jpg");
  79. s_oSpriteLibrary.addSprite("ball","./sprites/ball.png");
  80. s_oSpriteLibrary.addSprite("ball_shadow","./sprites/ball_shadow.png");
  81. s_oSpriteLibrary.addSprite("area_bottom","./sprites/area_bottom.png");
  82. s_oSpriteLibrary.addSprite("area_top","./sprites/area_top.png");
  83. s_oSpriteLibrary.addSprite("crowd_left","./sprites/crowd_left.png");
  84. s_oSpriteLibrary.addSprite("crowd_right","./sprites/crowd_right.png");
  85. s_oSpriteLibrary.addSprite("1","./sprites/1.png");
  86. s_oSpriteLibrary.addSprite("2","./sprites/2.png");
  87. s_oSpriteLibrary.addSprite("3","./sprites/3.png");
  88. s_oSpriteLibrary.addSprite("start_msg","./sprites/start_msg.png");
  89. s_oSpriteLibrary.addSprite("strike_msg","./sprites/strike_msg.png");
  90. s_oSpriteLibrary.addSprite("but_credits","./sprites/but_credits.png");
  91. s_oSpriteLibrary.addSprite("logo_credits","./sprites/logo_credits.png");
  92. s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png");
  93. for(var i = 0; i<NUM_SPRITE_BATTING; i++){
  94. s_oSpriteLibrary.addSprite("batter_batting_"+i,"./sprites/batter_hit/batter_batting_"+i+".png");
  95. }
  96. for(var i = 0; i<NUM_SPRITE_PLAYERS; i++){
  97. s_oSpriteLibrary.addSprite("batter_idle_"+i,"./sprites/batter_idle/batter_idle_"+i+".png");
  98. }
  99. for(var i = 0; i<NUM_SPRITE_PLAYERS; i++){
  100. s_oSpriteLibrary.addSprite("pitcher_"+i,"./sprites/pitcher/pitcher_"+i+".png");
  101. }
  102. RESOURCE_TO_LOAD += s_oSpriteLibrary.getNumSprites();
  103. s_oSpriteLibrary.loadSprites();
  104. };
  105. this._onImagesLoaded = function(){
  106. _iCurResource++;
  107. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  108. _oPreloader.refreshLoader(iPerc);
  109. };
  110. this._onAllImagesLoaded = function(){
  111. };
  112. this._allResourcesLoaded = function(){
  113. _oPreloader.unload();
  114. s_oSoundTrack = playSound("soundtrack", 1, true);
  115. s_oMain.gotoMenu();
  116. };
  117. this.gotoMenu = function(){
  118. _oMenu = new CMenu();
  119. _iState = STATE_MENU;
  120. };
  121. this.gotoGame = function(){
  122. _oGame = new CGame(_oData);
  123. _iState = STATE_GAME;
  124. };
  125. this.gotoHelp = function(){
  126. _oHelp = new CHelp();
  127. _iState = STATE_HELP;
  128. };
  129. this.stopUpdate = function(){
  130. _bUpdate = false;
  131. createjs.Ticker.paused = true;
  132. $("#block_game").css("display","block");
  133. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  134. Howler.mute(true);
  135. }
  136. };
  137. this.startUpdate = function(){
  138. s_iPrevTime = new Date().getTime();
  139. _bUpdate = true;
  140. createjs.Ticker.paused = false;
  141. $("#block_game").css("display","none");
  142. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  143. if(s_bAudioActive){
  144. Howler.mute(false);
  145. }
  146. }
  147. };
  148. this._update = function(event){
  149. if(_bUpdate === false){
  150. return;
  151. }
  152. var iCurTime = new Date().getTime();
  153. s_iTimeElaps = iCurTime - s_iPrevTime;
  154. s_iCntTime += s_iTimeElaps;
  155. s_iCntFps++;
  156. s_iPrevTime = iCurTime;
  157. if ( s_iCntTime >= 1000 ){
  158. s_iCurFps = s_iCntFps;
  159. s_iCntTime-=1000;
  160. s_iCntFps = 0;
  161. }
  162. if(_iState === STATE_GAME){
  163. _oGame.update();
  164. }
  165. s_oStage.update(event);
  166. };
  167. s_oMain = this;
  168. _oData = oData;
  169. ENABLE_FULLSCREEN = oData.fullscreen;
  170. ENABLE_CHECK_ORIENTATION = oData.check_orientation;
  171. this.initContainer();
  172. }
  173. var s_bMobile;
  174. var s_bAudioActive = true;
  175. var s_iCntTime = 0;
  176. var s_iTimeElaps = 0;
  177. var s_iPrevTime = 0;
  178. var s_iCntFps = 0;
  179. var s_iCurFps = 0;
  180. var s_bBounce = true;
  181. var s_oDrawLayer;
  182. var s_oStage;
  183. var s_oMain;
  184. var s_oStadium;
  185. var s_oBall;
  186. var s_oSpriteLibrary;
  187. var s_oSoundTrack = null;
  188. var s_oCanvas;
  189. var s_aSounds;