CMain.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. function CMain(oData){
  2. var _bUpdate;
  3. var _iCurResource = 0;
  4. var RESOURCE_TO_LOAD = 0;
  5. var _iState = STATE_LOADING;
  6. var _oPreloader;
  7. var _oMenu;
  8. var _oGame;
  9. this.initContainer = function(oData){
  10. // init constants
  11. TIME_GAME = oData.time_game;
  12. INIT_GRAVITY_NORMAL = oData.gravity;
  13. INIT_BALLMASS_NORMAL = oData.ballMass;
  14. FRICTION_NORMAL = oData.friction;
  15. EDGEFRICTION_NORMAL = oData.edgeFriction;
  16. ROTATIONSPEED_NORMAL = oData.rotationSpeed;
  17. HORIZ_KICKFORCE_NORMAL = oData.horizKickForce;
  18. VERT_KICKFORCE_NORMAL = oData.vertKickForce;
  19. RESTITUTION_KICKFORCE_NORMAL = oData.restitutionKickForce;
  20. INIT_GRAVITY_CHALLENGE = oData.chGravity;
  21. INIT_BALLMASS_CHALLENGE = oData.chBallMass;
  22. FRICTION_CHALLENGE = oData.chFriction;
  23. EDGEFRICTION_CHALLENGE = oData.chEdgeFriction;
  24. ROTATIONSPEED_CHALLENGE = oData.chRotationSpeed;
  25. HORIZ_KICKFORCE_CHALLENGE = oData.chHorizKickForce;
  26. VERT_KICKFORCE_CHALLENGE = oData.chVertKickForce;
  27. RESTITUTION_KICKFORCE_CHALLENGE = oData.chRestitutionKickForce;
  28. GRAVITY_INCREASE = oData.chGravityIncrease;
  29. s_oStage = new createjs.Stage("canvas");
  30. createjs.Touch.enable(s_oStage);
  31. s_bMobile = jQuery.browser.mobile;
  32. if(s_bMobile === false){
  33. s_oStage.enableMouseOver(20);
  34. }
  35. s_iPrevTime = new Date().getTime();
  36. createjs.Ticker.framerate = 30;
  37. createjs.Ticker.addEventListener("tick", this._update);
  38. if (navigator.userAgent.match(/Windows Phone/i)) {
  39. DISABLE_SOUND_MOBILE = true;
  40. }
  41. s_oSpriteLibrary = new CSpriteLibrary();
  42. //ADD PRELOADER
  43. _oPreloader = new CPreloader();
  44. _bUpdate = true;
  45. };
  46. this.preloaderReady = function(){
  47. this._loadImages();
  48. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  49. this._initSounds();
  50. }
  51. };
  52. this.soundLoaded = function(){
  53. _iCurResource++;
  54. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  55. _oPreloader.refreshLoader(iPerc);
  56. if(_iCurResource === RESOURCE_TO_LOAD){
  57. _oPreloader.unload();
  58. if (!isIOS()) {
  59. s_oSoundTrack = playSound("soundtrack", 1, true);
  60. }
  61. s_oMain.gotoMenu();
  62. }
  63. };
  64. this._initSounds = function(){
  65. var aSoundsInfo = new Array();
  66. aSoundsInfo.push({path: './sounds/',filename:'reset_kickup',loop:false,volume:1, ingamename: 'reset_kickup'});
  67. aSoundsInfo.push({path: './sounds/',filename:'click',loop:false,volume:1, ingamename: 'click'});
  68. aSoundsInfo.push({path: './sounds/',filename:'tap',loop:false,volume:1, ingamename: 'tap'});
  69. aSoundsInfo.push({path: './sounds/',filename:'soundtrack',loop:true,volume:1, ingamename: 'soundtrack'});
  70. RESOURCE_TO_LOAD += aSoundsInfo.length;
  71. s_aSounds = new Array();
  72. for(var i=0; i<aSoundsInfo.length; i++){
  73. s_aSounds[aSoundsInfo[i].ingamename] = new Howl({
  74. src: [aSoundsInfo[i].path+aSoundsInfo[i].filename+'.mp3', aSoundsInfo[i].path+aSoundsInfo[i].filename+'.ogg'],
  75. autoplay: false,
  76. preload: true,
  77. loop: aSoundsInfo[i].loop,
  78. volume: aSoundsInfo[i].volume,
  79. onload: s_oMain.soundLoaded
  80. });
  81. }
  82. };
  83. this._loadImages = function(){
  84. s_oSpriteLibrary.init( this._onImagesLoaded,this._onAllImagesLoaded, this );
  85. s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png");
  86. s_oSpriteLibrary.addSprite("ball_1","./sprites/ball_1.png");
  87. s_oSpriteLibrary.addSprite("ball_2","./sprites/ball_2.png");
  88. s_oSpriteLibrary.addSprite("ball_3","./sprites/ball_3.png");
  89. s_oSpriteLibrary.addSprite("ball_hit","./sprites/ball_hit.png");
  90. s_oSpriteLibrary.addSprite("shadow","./sprites/shadow.png");
  91. s_oSpriteLibrary.addSprite("bg_game","./sprites/bg_game.jpg");
  92. s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg");
  93. s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png");
  94. s_oSpriteLibrary.addSprite("but_play","./sprites/but_play.png");
  95. s_oSpriteLibrary.addSprite("panel","./sprites/msg_box.png");
  96. s_oSpriteLibrary.addSprite("but_credits","./sprites/but_credits.png");
  97. s_oSpriteLibrary.addSprite("logo_credits","./sprites/logo_credits.png");
  98. s_oSpriteLibrary.addSprite("hit_area_ball","./sprites/hit_area_ball.png");
  99. s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png");
  100. for (var i = 1; i <= 7; i++) {
  101. s_oSpriteLibrary.addSprite("player_" + i, "./sprites/player_sprite_" + i + ".png");
  102. };
  103. RESOURCE_TO_LOAD += s_oSpriteLibrary.getNumSprites();
  104. s_oSpriteLibrary.loadSprites();
  105. };
  106. this._onImagesLoaded = function(){
  107. _iCurResource++;
  108. var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
  109. _oPreloader.refreshLoader(iPerc);
  110. if(_iCurResource === RESOURCE_TO_LOAD){
  111. _oPreloader.unload();
  112. if (!isIOS()) {
  113. s_oSoundTrack = playSound("soundtrack", 1, true);
  114. }
  115. this.gotoMenu();
  116. }
  117. };
  118. this._onAllImagesLoaded = function(){
  119. };
  120. this.gotoMenu = function(){
  121. _oMenu = new CMenu();
  122. _iState = STATE_MENU;
  123. };
  124. this.gotoGame = function(bChallengeMode){
  125. _oGame = new CGame(bChallengeMode);
  126. _iState = STATE_GAME;
  127. };
  128. this.gotoHelp = function(){
  129. _oHelp = new CHelp();
  130. _iState = STATE_HELP;
  131. };
  132. this.stopUpdate = function(){
  133. _bUpdate = false;
  134. createjs.Ticker.paused = true;
  135. $("#block_game").css("display","block");
  136. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  137. Howler.mute(true);
  138. }
  139. };
  140. this.startUpdate = function(){
  141. s_iPrevTime = new Date().getTime();
  142. _bUpdate = true;
  143. createjs.Ticker.paused = false;
  144. $("#block_game").css("display","none");
  145. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  146. if(s_bAudioActive){
  147. Howler.mute(false);
  148. }
  149. }
  150. };
  151. this._update = function(event){
  152. if(!_bUpdate){
  153. return;
  154. }
  155. var iCurTime = new Date().getTime();
  156. s_iTimeElaps = iCurTime - s_iPrevTime;
  157. s_iCntTime += s_iTimeElaps;
  158. s_iCntFps++;
  159. s_iPrevTime = iCurTime;
  160. if ( s_iCntTime >= 1000 ){
  161. s_iCurFps = s_iCntFps;
  162. s_iCntTime-=1000;
  163. s_iCntFps = 0;
  164. }
  165. if(_iState === STATE_GAME){
  166. _oGame.update();
  167. }
  168. s_oStage.update(event);
  169. };
  170. s_oMain = this;
  171. ENABLE_FULLSCREEN = oData.fullscreen;
  172. ENABLE_CHECK_ORIENTATION = oData.check_orientation;
  173. this.initContainer(oData);
  174. }
  175. var s_bMobile;
  176. var s_bAudioActive = true;
  177. var s_iCntTime = 0;
  178. var s_iTimeElaps = 0;
  179. var s_iPrevTime = 0;
  180. var s_iCntFps = 0;
  181. var s_iCurFps = 0;
  182. var s_oSoundTrack = null;
  183. var s_oDrawLayer;
  184. var s_oStage;
  185. var s_oMain;
  186. var s_oSpriteLibrary;
  187. var s_oGameSettings;
  188. var s_aSounds;