CSceneStatic.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. function CSceneStatic(refWorld,iSceneNum,groundMaterial,basketMaterial){
  2. //renders/manages the static parts of the scene (basket, basket back panel, etc)
  3. // INIT
  4. var _bTrackScore = true,
  5. _bFrameIncreasing = true,
  6. _bBasketRimCollision = false,
  7. _iCurrFrame = 0,
  8. _iCurrScene = iSceneNum;
  9. var _aBasket = [];
  10. var _o2dBasket = [{},{x:(3.24/5)*CANVAS_WIDTH,y:(0.88)*CANVAS_HEIGHT/5},
  11. {x:(2.52/5)*CANVAS_WIDTH,y:(0.79)*CANVAS_HEIGHT/5},
  12. {x:(2.39/5)*CANVAS_WIDTH,y:(0.81)*CANVAS_HEIGHT/5},
  13. {x:(2.21/5)*CANVAS_WIDTH,y:(0.79)*CANVAS_HEIGHT/5},
  14. {x:(1.46/5)*CANVAS_WIDTH,y:(0.88)*CANVAS_HEIGHT/5}];
  15. var _oCartCoord = [{},{x:850,y:720},
  16. {x:700,y:720},
  17. {x:700,y:720},
  18. {x:700,y:720},
  19. {x:280,y:720}];
  20. var _oSpriteBg;
  21. var _oSpriteCartBack;
  22. var _oSpriteCart;
  23. var _oTimeCountDown;
  24. var _oWorld = refWorld;
  25. var szSpriteTag = "field_camera_1";
  26. _oSpriteBg = createBitmap(s_oSpriteLibrary.getSprite(szSpriteTag));
  27. _oSpriteBg.scaleX = -1; _oSpriteBg.x = CANVAS_WIDTH;
  28. s_oStage.addChild(_oSpriteBg);
  29. _oTimeCountDown = new createjs.Text("", "27px "+FONT_GAME2, "Red");
  30. _oTimeCountDown.visible = false;
  31. _oTimeCountDown.x = 541;
  32. _oTimeCountDown.y = 22;
  33. _oTimeCountDown.textBaseline = "alphabetic";
  34. _oTimeCountDown.textAlign = "center";
  35. s_oStage.addChild(_oTimeCountDown);
  36. _oSpriteCartBack = createBitmap(s_oSpriteLibrary.getSprite("cart_back"));
  37. s_oStage.addChild(_oSpriteCartBack);
  38. _oSpriteCart = createBitmap(s_oSpriteLibrary.getSprite("cart_front"));
  39. s_oStage.addChild(_oSpriteCart);
  40. CART_DEPTH_INDEX = s_oStage.getChildIndex(_oSpriteCartBack);
  41. _oSpriteCartBack.regX = _oSpriteCart.regX = CART_WIDTH/2;
  42. _oSpriteCartBack.regY = _oSpriteCart.regY = CART_HEIGHT/2;
  43. _oSpriteCartBack.x = _oSpriteCart.x = _oCartCoord[1].x;
  44. _oSpriteCartBack.y = _oSpriteCart.y = _oCartCoord[1].y;
  45. // COMMON SCENE ELEMENTS
  46. // backPanel
  47. var backPanelShape = new CANNON.Box(new CANNON.Vec3(1/2, 72/2, 42/2));
  48. var backPanel = new CANNON.Body({
  49. mass: 0,
  50. position: new CANNON.Vec3(48,0,120),
  51. material: groundMaterial
  52. });
  53. backPanel.addShape(backPanelShape);
  54. _oWorld.add(backPanel);
  55. // basket
  56. // upper rim
  57. var upperRimSize = 22;
  58. var basket1Shape = new CANNON.Box(new CANNON.Vec3(upperRimSize/2,1/2,1/2));
  59. var basket1 = new CANNON.Body({
  60. mass: 0,
  61. position: new CANNON.Vec3(48+upperRimSize/2,upperRimSize/2,120),
  62. material: basketMaterial
  63. });
  64. basket1.addShape(basket1Shape);
  65. _oWorld.add(basket1);
  66. var basket2Shape = new CANNON.Box(new CANNON.Vec3(upperRimSize/2,1/2,1/2));
  67. var basket2 = new CANNON.Body({
  68. mass: 0,
  69. position: new CANNON.Vec3(48+upperRimSize/2,-upperRimSize/2,120),
  70. material: basketMaterial
  71. });
  72. basket2.addShape(basket2Shape);
  73. _oWorld.add(basket2);
  74. var basket3Shape = new CANNON.Box(new CANNON.Vec3(1/2,upperRimSize/2,1/2));
  75. var basket3 = new CANNON.Body({
  76. mass: 0,
  77. position: new CANNON.Vec3(48+upperRimSize,0,120),
  78. material: basketMaterial
  79. });
  80. basket3.addShape(basket3Shape);
  81. _oWorld.add(basket3);
  82. basket1.addEventListener("collide",function(e){
  83. _bBasketRimCollision = true;
  84. });
  85. basket2.addEventListener("collide",function(e){
  86. _bBasketRimCollision = true;
  87. });
  88. basket3.addEventListener("collide",function(e){
  89. _bBasketRimCollision = true;
  90. });
  91. // lower rim
  92. var lowerRimSize = 16;
  93. var lowerOffset = (upperRimSize - lowerRimSize)/2;
  94. var basket4Shape = new CANNON.Box(new CANNON.Vec3(lowerRimSize/2,1/2,1/2));
  95. var basket4 = new CANNON.Body({
  96. mass: 0,
  97. position: new CANNON.Vec3(48+lowerRimSize/2 + lowerOffset,lowerRimSize/2,113),
  98. material: basketMaterial
  99. });
  100. basket4.addShape(basket4Shape);
  101. _oWorld.add(basket4);
  102. var basket5Shape = new CANNON.Box(new CANNON.Vec3(lowerRimSize/2,1/2,1/2));
  103. var basket5 = new CANNON.Body({
  104. mass: 0,
  105. position: new CANNON.Vec3(48+lowerRimSize/2 + lowerOffset,-lowerRimSize/2,113),
  106. material: basketMaterial
  107. });
  108. basket5.addShape(basket5Shape);
  109. _oWorld.add(basket5);
  110. var basket6Shape = new CANNON.Box(new CANNON.Vec3(1/2,lowerRimSize/2,1/2));
  111. var basket6 = new CANNON.Body({
  112. mass: 0,
  113. position: new CANNON.Vec3(48+lowerRimSize + lowerOffset,0,113),
  114. material: basketMaterial
  115. });
  116. basket6.addShape(basket6Shape);
  117. _oWorld.add(basket6);
  118. //Init 2d basket frames
  119. for (var i = 0; i < 36; i++) {
  120. _aBasket.push(createBitmap(s_oSpriteLibrary.getSprite("bsk" + (i+1))));
  121. _aBasket[i].visible = false;
  122. _aBasket[i].x = _o2dBasket[1].x;
  123. _aBasket[i].y = _o2dBasket[1].y;
  124. _aBasket[i].scaleX = 1.2;
  125. _aBasket[i].scaleY = 1.2;
  126. s_oStage.addChild(_aBasket[i]);
  127. };
  128. _aBasket[0].visible = true;
  129. // END INIT
  130. this.nextScene = function(){
  131. _iCurrScene++;
  132. this.loadBg(_iCurrScene);
  133. for (var i = 0; i < 36; i++) {
  134. _aBasket[i].x = _o2dBasket[_iCurrScene].x;
  135. _aBasket[i].y = _o2dBasket[_iCurrScene].y;
  136. };
  137. _oSpriteCartBack.x = _oSpriteCart.x = _oCartCoord[_iCurrScene].x;
  138. _oSpriteCartBack.y = _oSpriteCart.y = _oCartCoord[_iCurrScene].y;
  139. if (_iCurrScene === 5) {
  140. _oSpriteCartBack.scaleX = _oSpriteCart.scaleX = -1;
  141. };
  142. switch(_iCurrScene){
  143. case 2:{
  144. _oTimeCountDown.visible = true;
  145. _oTimeCountDown.x = 590;
  146. _oTimeCountDown.y = 46;
  147. _oTimeCountDown.setTransform(_oTimeCountDown.x, _oTimeCountDown.y, 1, 1,0,0,-15);
  148. break;
  149. }
  150. case 3:{
  151. _oTimeCountDown.visible = true;
  152. _oTimeCountDown.x = 525;
  153. _oTimeCountDown.y = 50;
  154. _oTimeCountDown.setTransform(_oTimeCountDown.x, _oTimeCountDown.y, 1.2, 1.2,0,0,0);
  155. break;
  156. }
  157. case 4:{
  158. _oTimeCountDown.visible = true;
  159. _oTimeCountDown.x = 437;
  160. _oTimeCountDown.y = 46;
  161. _oTimeCountDown.setTransform(_oTimeCountDown.x, _oTimeCountDown.y, 1, 1,0,0,15);
  162. break;
  163. }
  164. case 5:{
  165. _oTimeCountDown.visible = false;
  166. break;
  167. }
  168. }
  169. };
  170. this.updateTime = function(iTime){
  171. _oTimeCountDown.text = formatTime(iTime);
  172. };
  173. this.updateBasket = function(v3BallPosition){
  174. if (_bTrackScore){
  175. // CHECK PLAYER SCORED
  176. if (v3BallPosition.z > 113 && v3BallPosition.z < 120 &&
  177. v3BallPosition.x > 48 && v3BallPosition.x < 48 + lowerRimSize + lowerOffset &&
  178. v3BallPosition.y > -lowerRimSize/2 && v3BallPosition.y < lowerRimSize/2) {
  179. _bTrackScore = false;
  180. //console.log("SCORE!");
  181. return true;
  182. } else {
  183. // CHECK RIM COLLISION
  184. if (_bBasketRimCollision === true && _bTrackScore === true){
  185. _bBasketRimCollision = false;
  186. return false;
  187. };
  188. };
  189. };
  190. };
  191. this.scored = function(){
  192. if (_iCurrFrame < 14 || (_iCurrFrame >= 28 && _iCurrFrame <= 35)) {
  193. this.playFrames(0,14,false);
  194. return true;
  195. } else {
  196. _aBasket[_iCurrFrame].visible = false;
  197. _aBasket[0].visible = true;
  198. _iCurrFrame = 0;
  199. return false;
  200. };
  201. };
  202. this.rimCollision = function(){
  203. if (_iCurrFrame < 35) {
  204. this.playFrames(28,35,false);
  205. return true;
  206. } else {
  207. _aBasket[_iCurrFrame].visible = false;
  208. _aBasket[0].visible = true;
  209. _iCurrFrame = 0;
  210. return false;
  211. };
  212. };
  213. this.newBall = function(){
  214. _bBasketRimCollision = false;
  215. _bTrackScore = true;
  216. _iCurrFrame = 0;
  217. };
  218. this.getCartCoords = function(){
  219. return {x: _oSpriteCart.x + CART_WIDTH/2,y: _oSpriteCart.y + CART_HEIGHT/2};
  220. };
  221. this.loadBg = function(iScene){
  222. var szSpriteTag;
  223. if (iScene <= 3) {
  224. szSpriteTag = "field_camera_" + iScene;
  225. } else if (iScene === 4) {
  226. szSpriteTag = "field_camera_" + 2;
  227. } else {
  228. szSpriteTag = "field_camera_" + 1;
  229. };
  230. var iLayer = s_oStage.getChildIndex(_oSpriteBg);
  231. _oSpriteBg = createBitmap(s_oSpriteLibrary.getSprite(szSpriteTag));
  232. if (iScene < 3) {_oSpriteBg.scaleX = -1; _oSpriteBg.x = CANVAS_WIDTH;};
  233. s_oStage.removeChildAt(iLayer);
  234. s_oStage.addChildAt(_oSpriteBg,iLayer);
  235. };
  236. // bStartOver = true -> @ after last frame goes to first
  237. this.playFrames = function(iFirst,iLast,bStartOver){
  238. if(_iCurrFrame < iFirst || _iCurrFrame > iLast || _iCurrFrame === undefined){
  239. if(_aBasket[_iCurrFrame]){_aBasket[_iCurrFrame].visible = false};
  240. _iCurrFrame = iFirst;
  241. _aBasket[_iCurrFrame].visible = true;
  242. _bFrameIncreasing = true;
  243. } else {
  244. _aBasket[_iCurrFrame].visible = false;
  245. if (_iCurrFrame === iFirst && _bFrameIncreasing === false) {
  246. _bFrameIncreasing = true;
  247. _iCurrFrame += 1;
  248. _aBasket[_iCurrFrame].visible = true;
  249. } else if (_iCurrFrame === iLast) {
  250. if (bStartOver === true) {
  251. _iCurrFrame = iFirst;
  252. _aBasket[_iCurrFrame].visible = true;
  253. } else {
  254. _bFrameIncreasing = false;
  255. _iCurrFrame--;
  256. _aBasket[_iCurrFrame].visible = true;
  257. };
  258. } else {
  259. if (_bFrameIncreasing) {
  260. _iCurrFrame++;
  261. _aBasket[_iCurrFrame].visible = true;
  262. } else {
  263. _iCurrFrame--;
  264. _aBasket[_iCurrFrame].visible = true;
  265. };
  266. };
  267. };
  268. };
  269. };