CGame.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. function CGame(oData){
  2. var _idleBatterWait = 0;
  3. var _idleBatterStrike = 0;
  4. var _idlePitcher = 0;
  5. var _iVal;
  6. var _iScore = 0;
  7. var _iBallThrowed = 0;
  8. var _bUpdate;
  9. var _bWaiting = false; //0 waiting state, 1 striking state
  10. var _bBallThrowed = false;
  11. var _bMissed = false;
  12. var _bStadium = false;
  13. var _bClick = false;
  14. var _oInterface;
  15. var _oEndPanel = null;
  16. var _oParent;
  17. var _oContainerGame;
  18. var _oBatter;
  19. var _oPitcher;
  20. var _oHitArea;
  21. this._init = function(){
  22. $(s_oMain).trigger("start_level",1);
  23. if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
  24. setVolume("soundtrack",0.2);
  25. playSound("crowd_cheering",1,true);
  26. }
  27. var oBg = createBitmap(s_oSpriteLibrary.getSprite('bg_game'));
  28. s_oStage.addChild(oBg);
  29. _oContainerGame = new createjs.Container();
  30. s_oStage.addChild(_oContainerGame);
  31. var oStadiumContainer = new createjs.Container();
  32. s_oStage.addChild(oStadiumContainer);
  33. s_oStadium = new CStadium(oStadiumContainer);
  34. _oInterface = new CInterface();
  35. _oPitcher = new CPitcher(_oContainerGame);
  36. s_oBall = new CBall(_oContainerGame);
  37. _oBatter = new CBatter(_oContainerGame);
  38. _oHitArea = new createjs.Shape();
  39. _oHitArea.graphics.beginFill("rgba(255,255,255,0.01)").drawRect(0, 75, CANVAS_WIDTH, CANVAS_HEIGHT+75);
  40. _oContainerGame.addChild(_oHitArea);
  41. _oHitArea.on("mousedown", s_oGame._strike, this, false);
  42. _bClick = false;
  43. var oMissed = createBitmap(s_oSpriteLibrary.getSprite('3'));
  44. oMissed.x = CANVAS_WIDTH/2;
  45. oMissed.y = CANVAS_HEIGHT/2;
  46. oMissed.regX = 40;
  47. oMissed.regY = 84;
  48. s_oStage.addChild(oMissed);
  49. playSound("baseball_countdown_1",1,false);
  50. this.launchCountdown(oMissed);
  51. };
  52. this.launchCountdown = function(oMissed){
  53. createjs.Tween.get( oMissed ).to({scaleX: 1.3, scaleY: 1.3 }, (500), createjs.Ease.cubicOut).wait(500).call(function() {
  54. this.visible = false;
  55. var oMissed = createBitmap(s_oSpriteLibrary.getSprite('2'));
  56. oMissed.x = CANVAS_WIDTH/2;
  57. oMissed.y = CANVAS_HEIGHT/2;
  58. oMissed.regX = 40;
  59. oMissed.regY = 84;
  60. oMissed.scaleX= 0.7;
  61. oMissed.scaleY= 0.7;
  62. s_oStage.addChild(oMissed);
  63. playSound("baseball_countdown_1",1,false);
  64. createjs.Tween.get( oMissed ).to({scaleX: 1.3, scaleY: 1.3 }, (500), createjs.Ease.cubicOut).wait(500).call(function() {
  65. this.visible = false;
  66. var oMissed = createBitmap(s_oSpriteLibrary.getSprite('1'));
  67. oMissed.x = CANVAS_WIDTH/2;
  68. oMissed.y = CANVAS_HEIGHT/2;
  69. oMissed.regX = 40;
  70. oMissed.regY = 84;
  71. oMissed.scaleX= 0.7;
  72. oMissed.scaleY= 0.7;
  73. s_oStage.addChild(oMissed);
  74. playSound("baseball_countdown_1",1,false);
  75. createjs.Tween.get( oMissed ).to({scaleX: 1.3, scaleY: 1.3 }, (500), createjs.Ease.cubicOut).wait(500).call(function() {
  76. this.visible = false;
  77. var oMissed = createBitmap(s_oSpriteLibrary.getSprite('start_msg'));
  78. oMissed.x = CANVAS_WIDTH/2;
  79. oMissed.y = CANVAS_HEIGHT/2;
  80. oMissed.regX = 202.5;
  81. oMissed.regY = 135;
  82. oMissed.scaleX= 0.7;
  83. oMissed.scaleY= 0.7;
  84. s_oStage.addChild(oMissed);
  85. playSound("baseball_countdown_2",1,false);
  86. createjs.Tween.get( oMissed ).to({scaleX: 1.3, scaleY: 1.3 }, (500), createjs.Ease.cubicOut).wait(500).call(function() {
  87. this.visible = false;
  88. _bUpdate = true;
  89. _bClick = true;
  90. });
  91. });
  92. });
  93. });
  94. }
  95. this._strike = function(){
  96. if ( _bClick === true ){
  97. if(!_bWaiting){
  98. _oBatter.hideBatter(_idleBatterWait, _bWaiting);
  99. _idleBatterWait = 0;
  100. }else{
  101. _oBatter.hideBatter(_idleBatterStrike, _bWaiting);
  102. _idleBatterStrike = 0;
  103. }
  104. _oHitArea.visible = !_oHitArea.visible;
  105. _bWaiting = !_bWaiting;
  106. }
  107. };
  108. this._ballMissed = function(){
  109. _bUpdate = false;
  110. _bMissed = true;
  111. playSound("baseball_crowd_strike",1,false);
  112. _bClick = false;
  113. var oMissed = createBitmap(s_oSpriteLibrary.getSprite('strike_msg'));
  114. oMissed.x = CANVAS_WIDTH/2;
  115. oMissed.y = CANVAS_HEIGHT/2;
  116. oMissed.regX = 223.5;
  117. oMissed.regY = 148.5;
  118. oMissed.scaleX= 0.7;
  119. oMissed.scaleY= 0.7;
  120. s_oStage.addChild(oMissed);
  121. createjs.Tween.get( oMissed ).to({scaleX: 1, scaleY: 1 }, (500), createjs.Ease.cubicOut).wait(800).call(function() {
  122. _oBatter.hideBatter(_idleBatterWait, _bWaiting);
  123. _idleBatterWait = 0;
  124. if(_bWaiting){
  125. s_oGame._strike();
  126. }
  127. this.visible = false;
  128. _bUpdate = true;
  129. _bClick = true;
  130. });
  131. };
  132. this._setScore = function (iValue){
  133. _iScore += iValue;
  134. _oInterface.viewScore(_iScore);
  135. };
  136. this.unload = function(){
  137. _oHitArea.off("mousedown", s_oGame._strike, this, false);
  138. stopSound("crowd_cheering");
  139. _oInterface.unload();
  140. if(_oEndPanel !== null){
  141. _oEndPanel.unload();
  142. }
  143. createjs.Tween.removeAllTweens();
  144. s_oStage.removeAllChildren();
  145. };
  146. this.onExit = function(){
  147. this.unload();
  148. s_oMain.gotoMenu();
  149. $(s_oMain).trigger("end_level",1);
  150. $(s_oMain).trigger("show_interlevel_ad");
  151. $(s_oMain).trigger("end_session", _iScore);
  152. };
  153. this.gameOver = function(){
  154. _bUpdate = false;
  155. _oEndPanel = CEndPanel(s_oSpriteLibrary.getSprite('msg_box'));
  156. _oEndPanel.show(_iScore);
  157. };
  158. this._viewStadium = function (oHitValue, pEndPoint){
  159. s_oStadium.setVisible();
  160. s_oStadium.viewAndGetScore(oHitValue, pEndPoint);
  161. _bStadium = true;
  162. };
  163. this._restart = function (){
  164. if(_iBallThrowed >= BALL_TO_THROW){
  165. this.gameOver();
  166. }else{
  167. s_oBall.reset();
  168. s_bBounce = true;
  169. _bBallThrowed = false;
  170. _bMissed = false;
  171. _bStadium = false;
  172. s_oStadium.setInvisible();
  173. this._strike();
  174. }
  175. };
  176. this.update = function(){
  177. if(_bUpdate){
  178. if(!_bWaiting){
  179. //waiting the pitcher
  180. _oBatter.hideBatter(_idleBatterWait, _bWaiting);
  181. if((_idleBatterWait+1)<NUM_SPRITE_PLAYERS){
  182. _oBatter.viewBatter(_idleBatterWait+1, _bWaiting);
  183. _idleBatterWait++;
  184. }else{
  185. _idleBatterWait=0;
  186. _oBatter.viewBatter(_idleBatterWait, _bWaiting);
  187. }
  188. }else{
  189. //striking
  190. _oBatter.hideBatter(_idleBatterStrike, _bWaiting);
  191. if((_idleBatterStrike+1)<NUM_SPRITE_BATTING){
  192. _oBatter.viewBatter(_idleBatterStrike+1, _bWaiting);
  193. _idleBatterStrike++;
  194. }else{
  195. _oBatter.viewBatter(_idleBatterStrike, _bWaiting);
  196. }
  197. if(_idleBatterStrike === 4){
  198. s_oBall.hittedControl();
  199. _iVal=s_oBall.getValue();
  200. }
  201. }
  202. if(_bMissed === true){
  203. if(_iBallThrowed >= BALL_TO_THROW){
  204. this.gameOver();
  205. }else{
  206. s_oBall.reset();
  207. _bBallThrowed = false;
  208. if(_idleBatterStrike>0){
  209. this._strike();
  210. }
  211. _bMissed = false;
  212. _bClick = true;
  213. }
  214. }
  215. if(!_bBallThrowed || _idlePitcher+1<NUM_SPRITE_PLAYERS){
  216. _oPitcher.hidePitcher(_idlePitcher);
  217. if(_idlePitcher+1<NUM_SPRITE_PLAYERS){
  218. _oPitcher.viewPitcher(_idlePitcher+1);
  219. _idlePitcher++;
  220. }else{
  221. _idlePitcher=0;
  222. }
  223. if(_idlePitcher === 16){
  224. _iBallThrowed++;
  225. _oInterface.viewBallLeft(_iBallThrowed);
  226. s_oBall.viewBall();
  227. _bBallThrowed = true;
  228. }
  229. }
  230. if(_bBallThrowed){
  231. s_oBall.update();
  232. }
  233. if(_bStadium){
  234. s_oStadium.update();
  235. }
  236. }
  237. };
  238. s_oGame=this;
  239. _oParent=this;
  240. BALL_TO_THROW = oData.ball_to_throw;
  241. OFFSET_FOR_HIT = oData.offset_hit;
  242. OFFSET_FOR_PERFECT_HIT = oData.offset_perfect_hit;
  243. STEP_SPEED_STADIUM = oData.step_spd_stadium;
  244. AREA_VALUE = [oData.score_area1, oData.score_area2, oData.score_area3];
  245. ALMOST_MINUS = PERFECT_HIT_Y - OFFSET_FOR_HIT;
  246. ALMOST_PLUS = PERFECT_HIT_Y + OFFSET_FOR_HIT;
  247. this._init();
  248. }
  249. var s_oGame;