CapitalShip.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /* global SpaceGame */
  2. 'atomic component';
  3. exports.component = function(self) {
  4. var game = Atomic.game;
  5. var node = self.node;
  6. var scene = SpaceGame.myscene;
  7. self.allowShoot = true;
  8. self.shootDelta = 0;
  9. self.health = 10;
  10. self.onHit = function(pos) {
  11. var expNode = scene.createChild("Explosion");
  12. var exp = expNode.createJSComponent("Components/Explosion.js", {
  13. spawnPosition: node.worldPosition2D
  14. });
  15. exp.node.scale2D = [2.0, 2.0];
  16. self.health--;
  17. if (!self.health) {
  18. die();
  19. SpaceGame.win();
  20. }
  21. };
  22. function die() {
  23. if ( game.jsid >= 0 ) // has js and not muted
  24. Atomic.input.joystickRumble (game.jsid, 0.9, 300 );
  25. SpaceGame.capitalShipDestroyed();
  26. for (var i = 0; i < 16; i++) {
  27. var pos = node.position2D;
  28. pos[0] += SpaceGame.random(-2, 2);
  29. pos[1] += SpaceGame.random(-2, 2);
  30. var expNode = scene.createChild("Explosion");
  31. var exp = expNode.createJSComponent("Components/Explosion.js", {
  32. spawnPosition: node.worldPosition2D
  33. });
  34. var randomSize = SpaceGame.random(4, 8);
  35. exp.node.scale2D = [randomSize, randomSize];
  36. }
  37. }
  38. // using start to initialize the script component
  39. self.start = function() {
  40. // install AI
  41. var ai = node.createJSComponent("Components/AI.js");
  42. ai.canMove = true;
  43. var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
  44. // add a sprite component to our node
  45. var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
  46. sprite2D.blendMode = Atomic.BlendMode.BLEND_ALPHA;
  47. sprite2D.sprite = spaceSheet.getSprite("spaceship_locust");
  48. sprite2D.alpha = 0.0;
  49. node.position2D = [-4, SpaceGame.halfHeight - 1];
  50. node.roll(180);
  51. };
  52. // update function called per frame with delta time
  53. self.update = function(timeStep) {
  54. // fade in
  55. var alpha = self.sprite2D.alpha;
  56. if (alpha < 1) {
  57. alpha += timeStep * 1.5;
  58. if (alpha > 1)
  59. alpha = 1;
  60. self.sprite2D.alpha = alpha;
  61. }
  62. };
  63. };