PageRenderTime 38ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/game/engine/actors/enemies/EnemyFlyer.as

https://bitbucket.org/charliehoey/gatsby
ActionScript | 75 lines | 64 code | 11 blank | 0 comment | 15 complexity | cd801ecb23e216310fd6a8f2d27560ef MD5 | raw file
  1. package engine.actors.enemies {
  2. import engine.actors.enemies.Enemy;
  3. import engine.actors.player.Hero;
  4. public class EnemyFlyer extends EnemyWalker {
  5. public var flySpeed = 4;
  6. public var flyingStarted = false; // this flips when the bird reaches the hero's height
  7. public var maxHeroProximity = 140; // how many pixels from the hero before we trigger
  8. public var heroTriggered = false;
  9. public var xPos = 0;
  10. public var yPos = 0;
  11. public var triggerHeight = 64;
  12. public function EnemyFlyer() {
  13. trace("EnemyFlyer");
  14. }
  15. override public function collide(observer, ...args) {
  16. if(observer is Hero && !deadFlag) {
  17. observer.receiveDamage(this); // otherwise, if we've hit the hero, make him regret it
  18. }
  19. }
  20. public override function moveMe():void {
  21. if(flyingStarted) {
  22. velx = -flySpeed;
  23. frameCount++;
  24. if(frameCount >= frameDelay) {
  25. frameStarted = true;
  26. statusSet = false;
  27. this.x += velx / 2; // update our x variable
  28. notifyObservers(); // tell everybody where we are now
  29. updateStatus(); // update our status
  30. frameCount = 0;
  31. frameStarted = false;
  32. }
  33. } else if(!heroTriggered && heroInRange()) {
  34. heroTriggered = true;
  35. } else if(heroTriggered) {
  36. dropDown();
  37. notifyObservers();
  38. }
  39. animate();
  40. }
  41. public function heroInRange() {
  42. if(myMap.getHero()) {
  43. var myHero = myMap.getHero();
  44. if(Math.abs(this.x - myHero.x) < maxHeroProximity) {
  45. return true;
  46. }
  47. return false;
  48. }
  49. }
  50. public function dropDown() {
  51. var myHero = myMap.getHero();
  52. triggerHeight = myHero.y;
  53. if(this.y < triggerHeight) {
  54. if(this.y < triggerHeight / 2) {
  55. this.y += 2;
  56. } else {
  57. this.y++;
  58. }
  59. } else {
  60. flyingStarted = true;
  61. }
  62. }
  63. }
  64. }