Player.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /* global SpaceGame */
  2. 'atomic component';
  3. exports.component = function(self) {
  4. var game = Atomic.game;
  5. var input = game.input;
  6. var node = self.node;
  7. self.allowMove = true;
  8. self.allowShoot = true;
  9. self.shootDelta = 0;
  10. self.health = 10;
  11. self.onHit = function() {
  12. var expNode = SpaceGame.myscene.createChild("Explosion");
  13. var exp = expNode.createJSComponent("Components/Explosion.js", {
  14. spawnPosition: node.worldPosition2D
  15. });
  16. self.health--;
  17. SpaceGame.hud.updateHealth(self.health);
  18. //if (self.health == 0) {
  19. //
  20. // SpaceGame.lose();
  21. //
  22. //}
  23. };
  24. function doShooting(timeStep) {
  25. if (self.shootDelta > 0) {
  26. self.shootDelta -= timeStep;
  27. if (self.shootDelta < 0)
  28. self.shootDelta = 0;
  29. return;
  30. }
  31. if (!input.getKeyDown(Atomic.KEY_W) && !input.getKeyDown(Atomic.KEY_UP) && !input.getKeyDown(Atomic.KEY_SPACE))
  32. return;
  33. self.shootDelta = 0.15;
  34. var pos = node.position2D;
  35. pos[1] += .5;
  36. SpaceGame.spawnBullet(pos, true);
  37. }
  38. function moveShip(timeStep) {
  39. var speed = 3.0 * timeStep;
  40. var pos = node.position2D;
  41. var left = false;
  42. var right = false;
  43. if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT))
  44. pos[0] -= speed;
  45. if (input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_RIGHT))
  46. pos[0] += speed;
  47. if (pos[0] < -SpaceGame.halfWidth + 2)
  48. pos[0] = -SpaceGame.halfWidth + 2;
  49. if (pos[0] > SpaceGame.halfWidth - 2)
  50. pos[0] = SpaceGame.halfWidth - 2;
  51. node.position2D = pos;
  52. }
  53. self.start = function() {
  54. var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
  55. var sprite2D = node.createComponent("StaticSprite2D");
  56. sprite2D.sprite = spaceSheet.getSprite("spaceship_mantis");
  57. sprite2D.blendMode = Atomic.BLEND_ALPHA;
  58. node.position2D = [0, -SpaceGame.halfHeight + .65];
  59. };
  60. self.update = function(timeStep) {
  61. if (self.allowShoot)
  62. doShooting(timeStep);
  63. if (self.allowMove)
  64. moveShip(timeStep);
  65. };
  66. };