Advertisement
Guest User

Untitled

a guest
May 27th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.57 KB | None | 0 0
  1. function CGame(oInfo) {
  2. var _bUpdate = false;
  3. var _bKeyDown = false;
  4. var _iSpeed;
  5. var _iMaxHeroSpeed;
  6. var _iScore = 0;
  7. var _totTime = 0;
  8. var _numIngredients = 0;
  9. var _iScoreInterval = 0;
  10. var _iLives;
  11. var _iCurHeroX;
  12. var _iTimeElaps = 0;
  13. var _oBg;
  14. var _oButExit;
  15. var _aLineXPos;
  16. var _aObstaclePos;
  17. var _aObstacleInScene;
  18. var _aIngredientsPos;
  19. var _aIngredientsInScene;
  20. var _oHero;
  21. var _oHurt;
  22. var _oButLeft;
  23. var _oButRight;
  24. var _oScoreText;
  25. var _oLivesText;
  26. var _oGameOverPanel;
  27. var _oScrollingBg;
  28. var _oHelpBg;
  29. var _oAudioToggle;
  30. this._init = function() {
  31. var oBgCanvas = new createjs.Shape();
  32. oBgCanvas.graphics.beginFill("#5B89A1").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  33. s_oStage.addChild(oBgCanvas);
  34. this._initLineObjects();
  35. this._initIngredients();
  36. this._initObstacles();
  37. var oBgGUI = new createjs.Shape();
  38. oBgGUI.graphics.beginFill("rgba(0,0,0,1)").drawRect(0, 0, CANVAS_WIDTH, 100);
  39. s_oStage.addChild(oBgGUI);
  40. oBgGUI = new createjs.Shape();
  41. oBgGUI.graphics.beginFill("rgba(0,0,0,1)").drawRect(0, 924, CANVAS_WIDTH, 100);
  42. s_oStage.addChild(oBgGUI);
  43. var oSprite = s_oSpriteLibrary.getSprite('but_exit');
  44. _oButExit = new CGfxButton(CANVAS_WIDTH - (oSprite.width / 2) - 10, 10 + (oSprite.height / 2), oSprite, true);
  45. _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  46. if (s_bMobile === false) {
  47. document.onkeydown = onKeyDown;
  48. document.onkeyup = onKeyUp;
  49. }
  50. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  51. _oAudioToggle = new CToggle(CANVAS_WIDTH - 150, 10 + (oSprite.height / 2), s_oSpriteLibrary.getSprite('audio_icon'), s_bAudioActive);
  52. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  53. }
  54. _iLives = NUM_LIVES;
  55. _iCurHeroX = 1;
  56. var oSpriteHero = s_oSpriteLibrary.getSprite('hero');
  57. _oHero = new CHero(_aLineXPos[_iCurHeroX], oSpriteHero);
  58. var oSpriteLife = s_oSpriteLibrary.getSprite("life");
  59. var oLife = createBitmap(oSpriteLife);
  60. oLife.x = 10;
  61. oLife.y = 15;
  62. s_oStage.addChild(oLife);
  63. _oScoreText = new createjs.Text(TEXT_SCORE + ": 0", "bold 50px Arial", "#ffffff");
  64. _oScoreText.x = (CANVAS_WIDTH / 2);
  65. _oScoreText.y = 30;
  66. _oScoreText.textAlign = "center";
  67. s_oStage.addChild(_oScoreText);
  68. _oLivesText = new createjs.Text("X" + _iLives, "bold 50px Arial", "#ffffff");
  69. _oLivesText.x = 130;
  70. _oLivesText.y = 30;
  71. _oLivesText.textAlign = "center";
  72. s_oStage.addChild(_oLivesText);
  73. _oHurt = new createjs.Shape();
  74. _oHurt.graphics.beginFill("red").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  75. _oHurt.alpha = 0.1;
  76. _oHurt.visible = false;
  77. s_oStage.addChild(_oHurt);
  78. oSprite = s_oSpriteLibrary.getSprite('but_left');
  79. _oButLeft = new CGfxButton(BUT_LEFT_X, BUT_LEFT_Y, oSprite, true);
  80. _oButLeft.addEventListener(ON_MOUSE_DOWN, this._onReleaseLeft, this);
  81. oSprite = s_oSpriteLibrary.getSprite('but_right');
  82. _oButRight = new CGfxButton(BUT_RIGHT_X, BUT_RIGHT_Y, oSprite, true);
  83. _oButRight.addEventListener(ON_MOUSE_DOWN, this._onReleaseRight, this);
  84. oSprite = s_oSpriteLibrary.getSprite('but_jump');
  85. _oButJump = new CTextButton(CANVAS_WIDTH / 2, BUT_RIGHT_Y, oSprite, TEXT_JUMP, "Arial", "#383838", 40);
  86. _oHelpBg = new CHelpPanel(s_oSpriteLibrary.getSprite('bg_help'));
  87. _iSpeed = 0;
  88. _iMaxHeroSpeed = MAX_STARTING_SPEED;
  89. createjs.Sound.setMute(true);
  90. };
  91. this.unload = function() {
  92. _oButExit.unload();
  93. _oButExit = null;
  94. _oButLeft.unload();
  95. _oButLeft = null;
  96. _oButRight.unload();
  97. _oButRight = null;
  98. s_oStage.removeAllChildren();
  99. };
  100.  
  101. function onKeyUp(evt) {
  102. _bKeyDown = false;
  103. }
  104.  
  105. function onKeyDown(evt) {
  106. if (_bUpdate === false || _bKeyDown) {
  107. return;
  108. }
  109. if (!evt) {
  110. var evt = window.event;
  111. }
  112. _bKeyDown = true;
  113. switch (evt.keyCode) {
  114. case 37:
  115. s_oGame.shiftLeft();
  116. break;
  117. case 39:
  118. s_oGame.shiftRight();
  119. break;
  120. case 32:
  121. s_oGame.jump();
  122. break;
  123. }
  124. }
  125. this.shiftLeft = function() {
  126. this._onReleaseLeft();
  127. };
  128. this.shiftRight = function() {
  129. this._onReleaseRight();
  130. };
  131. this._onExitHelp = function() {
  132. _oHelpBg.unload();
  133. s_oStage.removeChild(_oHelpBg);
  134. _bUpdate = true;
  135. };
  136. this._initLineObjects = function() {
  137. _aLineXPos = new Array(128, 384, 640);
  138. var oSprite = s_oSpriteLibrary.getSprite('road_tile');
  139. _oScrollingBg = new CScrollingBg(oSprite);
  140. };
  141. this._initIngredients = function() {
  142. _aIngredientsPos = new Array();
  143. _aIngredientsPos[0] = [_aLineXPos[0]];
  144. _aIngredientsPos[1] = [_aLineXPos[1]];
  145. _aIngredientsPos[2] = [_aLineXPos[2]];
  146. _aIngredientsPos[3] = [_aLineXPos[0]];
  147. _aIngredientsPos[4] = [_aLineXPos[1]];
  148. _aIngredientsPos[5] = [_aLineXPos[2]];
  149. _aIngredientsPos[6] = [_aLineXPos[0]];
  150. _aIngredientsPos[7] = [_aLineXPos[1]];
  151. _aIngredientsPos[8] = [_aLineXPos[2]];
  152. _aIngredientsPos[9] = [_aLineXPos[0]];
  153. _aIngredientsPos[10] = [_aLineXPos[1]];
  154. _aIngredientsPos[11] = [_aLineXPos[2]];
  155. _aIngredientsPos[12] = [_aLineXPos[0]];
  156. _aIngredientsPos[13] = [_aLineXPos[1]];
  157. _aIngredientsPos[14] = [_aLineXPos[2]];
  158. _aIngredientsPos = shuffle(_aIngredientsPos);
  159. _aIngredientsInScene = new Array();
  160. var oSprite = s_oSpriteLibrary.getSprite('ingredients');
  161. var oData = {
  162. images: [oSprite],
  163. frames: [
  164. [0, 0, 98, 108, 0, 49, 100],
  165. [98, 0, 98, 108, 0, 49, 100],
  166. [196, 0, 98, 108, 0, 49, 100],
  167. [294, 0, 98, 108, 0, 48, 100],
  168. [392, 0, 98, 108, 0, 48, 100],
  169. [490, 0, 98, 108, 0, 48, 100],
  170. [588, 0, 98, 168, 0, 54, 84],
  171. [686, 0, 98, 168, 0, 54, 84],
  172. [784, 0, 98, 168, 0, 54, 84],
  173. [882, 0, 98, 108, 0, 40, 100],
  174. [882, 0, 98, 108, 0, 40, 100],
  175. [882, 0, 98, 108, 0, 40, 100],
  176. [882, 0, 98, 108, 0, 40, 100],
  177. [882, 0, 98, 108, 0, 40, 100],
  178. [882, 0, 98, 108, 0, 40, 100],
  179. [882, 0, 98, 108, 0, 40, 100],
  180. [882, 0, 98, 108, 0, 40, 100],
  181. [882, 0, 98, 108, 0, 40, 100],
  182. [882, 0, 98, 108, 0, 40, 100],
  183. [882, 0, 98, 108, 0, 40, 100],
  184. [882, 0, 98, 108, 0, 40, 100],
  185. [882, 0, 98, 108, 0, 40, 100],
  186. [882, 0, 98, 108, 0, 40, 100],
  187. ]
  188. };
  189. var SpriteObj = new createjs.SpriteSheet(oData);
  190. var iCont = 0;
  191. var iYPos = -oSprite.height;
  192. while (iYPos > -(CANVAS_HEIGHT * 8)) {
  193. for (var k = 0; k < _aIngredientsPos[iCont].length; k++) {
  194. var oIngredient = new CObstacle(_aIngredientsPos[iCont][k], iYPos, SpriteObj, SpriteObj.getFrameBounds(iCont).width, SpriteObj.getFrameBounds(iCont).height, SpriteObj.getFrameBounds(iCont).x, SpriteObj.getFrameBounds(iCont).y);
  195. _aIngredientsInScene.push(oIngredient);
  196. }
  197. iYPos -= (oSprite.height + DISTANCE_AMONG_OBSTACLES);
  198. iCont++;
  199. }
  200. };
  201. this._initObstacles = function() {
  202. _aObstaclePos = new Array();
  203. _aObstaclePos[0] = [_aLineXPos[0]];
  204. _aObstaclePos[1] = [_aLineXPos[1]];
  205. _aObstaclePos[2] = [_aLineXPos[2]];
  206. _aObstaclePos[3] = [_aLineXPos[0], _aLineXPos[1]];
  207. _aObstaclePos[4] = [_aLineXPos[1], _aLineXPos[2]];
  208. _aObstaclePos[5] = [_aLineXPos[2], _aLineXPos[0]];
  209. _aObstaclePos[6] = [_aLineXPos[0], _aLineXPos[1]];
  210. _aObstaclePos[7] = [_aLineXPos[1], _aLineXPos[2]];
  211. _aObstaclePos[8] = [_aLineXPos[2], _aLineXPos[0]];
  212. _aObstaclePos[9] = [_aLineXPos[2], _aLineXPos[0]];
  213. _aObstaclePos[10] = [_aLineXPos[0], _aLineXPos[1]];
  214. _aObstaclePos[11] = [_aLineXPos[1], _aLineXPos[2]];
  215. _aObstaclePos[12] = [_aLineXPos[2], _aLineXPos[0]];
  216. _aObstaclePos[13] = [_aLineXPos[0], _aLineXPos[1]];
  217. _aObstaclePos[14] = [_aLineXPos[1], _aLineXPos[2]];
  218. _aObstaclePos = shuffle(_aObstaclePos);
  219. _aObstacleInScene = new Array();
  220. var oSprite = s_oSpriteLibrary.getSprite('enemy');
  221. var oData = {
  222. images: [oSprite],
  223. frames: [
  224. [0, 0, 98, 200, 0, 49, 100],
  225. [98, 0, 98, 200, 0, 49, 100],
  226. [196, 0, 98, 200, 0, 49, 100],
  227. [294, 0, 96, 200, 0, 48, 100],
  228. [388, 0, 96, 200, 0, 48, 100],
  229. [484, 0, 96, 200, 0, 48, 100],
  230. [580, 0, 108, 168, 0, 54, 84],
  231. [688, 0, 108, 168, 0, 54, 84],
  232. [796, 0, 108, 168, 0, 54, 84],
  233. [904, 0, 80, 200, 0, 40, 100],
  234. [984, 0, 80, 200, 0, 40, 100],
  235. [1064, 0, 80, 200, 0, 40, 100]
  236. ]
  237. };
  238. var SpriteObj = new createjs.SpriteSheet(oData);
  239. var iCont = 0;
  240. var iYPos = -oSprite.height;
  241. while (iYPos > -(CANVAS_HEIGHT * 8)) {
  242. for (var k = 0; k < _aObstaclePos[iCont].length; k++) {
  243. var oObstacle = new CObstacle(_aObstaclePos[iCont][k], iYPos, SpriteObj, SpriteObj.getFrameBounds(iCont).width, SpriteObj.getFrameBounds(iCont).height, SpriteObj.getFrameBounds(iCont).x, SpriteObj.getFrameBounds(iCont).y);
  244. _aObstacleInScene.push(oObstacle);
  245. }
  246. iYPos -= (oSprite.height + DISTANCE_AMONG_OBSTACLES);
  247. iCont++;
  248. }
  249. };
  250. this._increaseScore = function() {
  251. _totTime += 1;
  252. _iScore += SCORE_INCREASE;
  253. _oScoreText.text = TEXT_SCORE + ": " + _iScore;
  254. _iScoreInterval += SCORE_INCREASE;
  255. if (_iScoreInterval > INCREASE_SPEED_UP_INTERVAL) {
  256. _iScoreInterval = 0;
  257. _iMaxHeroSpeed += INCREASE_SPEED;
  258. console.log('SPEEEED IS' + _iMaxHeroSpeed + ' -- TIME IS -- '+_totTime + ' -- SCORE IS -- '+_iScore);
  259. }
  260. };
  261. this._ingredientsScore = function() {
  262. _iScore += SCORE_INGREDIENT_INCREASE;
  263. _oScoreText.text = TEXT_SCORE + ": " + _iScore;
  264. _numIngredients++;
  265. jQuery('#added_pts').html('<div class="pts animated fadeOutUp infinite">+' + SCORE_INGREDIENT_INCREASE + '</div>');
  266. };
  267. this._lifeLost = function() {
  268. _oHurt.visible = true;
  269. var oParent = this;
  270. createjs.Tween.get(_oHurt).to({
  271. alpha: 0.6
  272. }, 400).call(function() {
  273. oParent._resetHurt();
  274. });
  275. _iScore -= MALUS_SCORE;
  276. if (_iScore < 0) {
  277. _iScore = 0;
  278. }
  279. _oScoreText.text = TEXT_SCORE + ": " + _iScore;
  280. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  281. createjs.Sound.play("crash");
  282. }
  283. _iLives--;
  284. _oLivesText.text = "X" + _iLives;
  285. if (_iLives === 0) {
  286. this._gameOver();
  287. }
  288. };
  289. this._resetHurt = function() {
  290. _oHurt.visible = false;
  291. _oHurt.alpha = 0.5;
  292. };
  293. this._gameOver = function() {
  294. _bUpdate = false;
  295. var oSprite = s_oSpriteLibrary.getSprite('msg_box');
  296. _oGameOverPanel = new CEndPanel(oSprite);
  297. _oGameOverPanel.show(_iScore, _numIngredients, _iMaxHeroSpeed, _totTime);
  298. };
  299. this._onReleaseLeft = function() {
  300. if (_iCurHeroX === 0 || _oHero.isJumping()) {
  301. return;
  302. }
  303. _iCurHeroX--;
  304. _oHero.move(_aLineXPos[_iCurHeroX]);
  305. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  306. createjs.Sound.play("steer");
  307. }
  308. };
  309. this._onReleaseRight = function() {
  310. if (_iCurHeroX === NUM_LINES || _oHero.isJumping()) {
  311. return;
  312. }
  313. _iCurHeroX++;
  314. _oHero.move(_aLineXPos[_iCurHeroX], 1 - ((NUM_LINES - _iCurHeroX) * 0.2));
  315. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  316. createjs.Sound.play("steer");
  317. }
  318. };
  319. this._onExit = function() {
  320. this.unload();
  321. s_oMain.gotoMenu();
  322. jQuery(s_oMain).trigger("restart");
  323. };
  324. this._onAudioToggle = function() {
  325. createjs.Sound.setMute(s_bAudioActive);
  326. s_bAudioActive = !s_bAudioActive;
  327. };
  328. this._checkCollision = function(oObstacle) {
  329. var vHeroPos = _oHero.getPos();
  330. var vObstaclePos = oObstacle.getPos();
  331. var fObstacleRadius = oObstacle.getSquareRadius();
  332. var fDistance = ((vObstaclePos.x - vHeroPos.x) * (vObstaclePos.x - vHeroPos.x)) +
  333. ((vObstaclePos.y - vHeroPos.y) * (vObstaclePos.y - vHeroPos.y));
  334. if (fDistance < fObstacleRadius) {
  335. return true;
  336. } else {
  337. return false;
  338. }
  339. };
  340. this._updateMove = function() {
  341. _iSpeed += ACCELLERATION;
  342. if (_iSpeed > _iMaxHeroSpeed) {
  343. _iSpeed = _iMaxHeroSpeed;
  344. }
  345. _oHero.update();
  346. _oScrollingBg.update(Math.floor(_iSpeed));
  347. };
  348. this.updateObstacles = function() {
  349. for (var i = 0; i < _aObstacleInScene.length; i++) {
  350. _aObstacleInScene[i].update((_iSpeed * s_fCurForceFactor));
  351. if (_oHero.isJumping() === false && this._checkCollision(_aObstacleInScene[i])) {
  352. _aObstacleInScene[i].reset();
  353. this._lifeLost();
  354. } else if (_aObstacleInScene[i].getFront() > CANVAS_HEIGHT) {
  355. _aObstacleInScene[i].reset();
  356. }
  357. }
  358. };
  359. this.updateIngredients = function() {
  360. for (var i = 0; i < _aIngredientsInScene.length; i++) {
  361. _aIngredientsInScene[i].update((_iSpeed + 1));
  362. if (_oHero.isJumping() === false && this._checkCollision(_aIngredientsInScene[i])) {
  363. _aIngredientsInScene[i].reset();
  364. this._ingredientsScore();
  365. } else if (_aIngredientsInScene[i].getFront() > CANVAS_HEIGHT) {
  366. _aIngredientsInScene[i].reset();
  367. }
  368. }
  369. };
  370. this.update = function() {
  371. if (_bUpdate === false) {
  372. return;
  373. }
  374. this._updateMove();
  375. this.updateIngredients();
  376. this.updateObstacles();
  377. _iTimeElaps += s_iTimeElaps;
  378. if (_iTimeElaps >= 1000) {
  379. _iTimeElaps -= 1000;
  380. this._increaseScore();
  381. }
  382. };
  383. s_oGame = this;
  384. MAX_STARTING_SPEED = oInfo.max_start_speed;
  385. console.log('speed is '+MAX_STARTING_SPEED)
  386. INCREASE_SPEED_UP_INTERVAL = oInfo.increase_speed_up_interval;
  387. INCREASE_SPEED = oInfo.increase_speed;
  388. SCORE_INGREDIENT_INCREASE = oInfo.score_ingredient_increase;
  389. DISTANCE_AMONG_OBSTACLES = oInfo.dist_obstacles;
  390. ACCELLERATION = oInfo.accelleration;
  391. SCORE_INCREASE = oInfo.score_increase;
  392. MALUS_SCORE = oInfo.malus_score;
  393. NUM_LIVES = oInfo.lives;
  394. this._init();
  395. }
  396. var s_oGame;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement