Enemy.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /* global SpaceGame */
  2. 'atomic component';
  3. exports.component = function(self) {
  4. var game = Atomic.game;
  5. var node = self.node;
  6. self.allowShoot = true;
  7. self.shootDelta = 0;
  8. var moveDelta = 0;
  9. var dead = false;
  10. self.onHit = function() {
  11. if ( game.jsid >= 0 ) // has js and not muted
  12. Atomic.input.joystickRumble (game.jsid, 0.45, 110 );
  13. var expNode = SpaceGame.myscene.createChild("Explosion");
  14. var exp = expNode.createJSComponent("Components/Explosion.js", {
  15. spawnPosition: node.worldPosition2D
  16. });
  17. SpaceGame.removeEnemy(self);
  18. };
  19. self.start = function() {
  20. // install AI
  21. node.createJSComponent("Components/AI.js");
  22. var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
  23. // add a sprite component to our node
  24. var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
  25. sprite2D.blendMode = Atomic.BlendMode.BLEND_ALPHA;
  26. sprite2D.sprite = spaceSheet.getSprite(self.spriteName);
  27. node.position2D = self.spawnPosition;
  28. node.roll(180);
  29. node.scale2D = [0.65, 0.65];
  30. sprite2D.alpha = 0.0;
  31. self.dir = (Math.random() > .5);
  32. };
  33. // update function called per frame with delta time
  34. self.update = function(timeStep) {
  35. // fade in
  36. var alpha = self.sprite2D.alpha;
  37. if (alpha < 1) {
  38. alpha += timeStep * 1.5;
  39. if (alpha > 1)
  40. alpha = 1;
  41. self.sprite2D.alpha = alpha;
  42. }
  43. var pos = node.position2D;
  44. var ppos = SpaceGame.playerNode.position2D;
  45. if (Math.random() > .98) {
  46. self.dir = !self.dir;
  47. }
  48. moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);
  49. pos = [self.spawnPosition[0], self.spawnPosition[1]];
  50. pos[1] += Math.sin(moveDelta) * .1;
  51. node.position2D = pos;
  52. };
  53. };