EntityBuilder.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package me.hammerle.supersnuvi.entity;
  2. import me.hammerle.supersnuvi.entity.components.DefaultHealth;
  3. import me.hammerle.supersnuvi.entity.components.DefaultMovement;
  4. import me.hammerle.supersnuvi.entity.components.DefaultEnergy;
  5. import me.hammerle.supersnuvi.entity.components.StoneMovement;
  6. import me.hammerle.supersnuvi.entity.components.ai.HumanController;
  7. import me.hammerle.supersnuvi.entity.components.ai.LondonerController;
  8. import me.hammerle.supersnuvi.entity.components.animator.StoneAnimator;
  9. import me.hammerle.supersnuvi.entity.components.animator.HeroAnimator;
  10. import me.hammerle.supersnuvi.entity.components.animator.LondonerAnimator;
  11. import me.hammerle.supersnuvi.gamelogic.Level;
  12. import me.hammerle.supersnuvi.tiles.Tile;
  13. import me.hammerle.supersnuvi.entity.components.IDeath;
  14. import me.hammerle.supersnuvi.entity.components.ItemCollector;
  15. import me.hammerle.supersnuvi.entity.components.NoHealth;
  16. import me.hammerle.supersnuvi.util.CollisionBox;
  17. public final class EntityBuilder
  18. {
  19. public static Entity buildHero(Level level, float x, float y)
  20. {
  21. float w = Tile.SIZE;
  22. float h = Tile.SIZE * 2;
  23. Entity hero = new Entity(level, x, y, new CollisionBox(0.0f, 0.0f, w * 0.90625f, h * 0.921875f));
  24. hero.renderer = new HeroAnimator(hero);
  25. hero.controller = new HumanController(hero);
  26. hero.health = new DefaultHealth(hero, (ent) -> ent.getLevel().scheduleReset(), 100.0f, null, null, null);
  27. hero.energy = new DefaultEnergy(hero, 100.0f);
  28. hero.move = new DefaultMovement(hero, 3f, 3f, 50.0f);
  29. hero.itemCollector = ItemCollector.HERO;
  30. return hero;
  31. }
  32. public static Entity buildLondoner(Level level, float x, float y, boolean evil)
  33. {
  34. float w = Tile.SIZE;
  35. float h = Tile.SIZE * 2;
  36. Entity hero = new Entity(level, x, y, new CollisionBox(0.0f, 0.0f, w * 0.4375f, h * 0.703125f));
  37. hero.renderer = new LondonerAnimator(hero);
  38. //hero.controller = new FollowHeroController(hero, 2);
  39. hero.controller = new LondonerController(hero, evil);
  40. hero.health = new DefaultHealth(hero, IDeath.NULL, 100.0f, null, null, null);
  41. hero.energy = new DefaultEnergy(hero, 100.0f);
  42. hero.move = new DefaultMovement(hero, 3f, 3f, 24.0f);
  43. //hero.itemCollector = new HeroItemCollector(hero);
  44. return hero;
  45. }
  46. public static Entity buildCrumblingStone(Level level, float x, float y)
  47. {
  48. Entity stone = new Entity(level, x, y, new CollisionBox(0.0f, 0.0f, Tile.SIZE, Tile.SIZE * 10f));
  49. stone.renderer = new StoneAnimator(stone);
  50. stone.move = new StoneMovement(stone);
  51. stone.health = new NoHealth(stone);
  52. return stone;
  53. }
  54. public static Entity fromId(int id, Level level, float x, float y)
  55. {
  56. switch(id)
  57. {
  58. case 1:
  59. return buildLondoner(level, x, y, true);
  60. case 2:
  61. return buildLondoner(level, x, y, false);
  62. }
  63. return null;
  64. }
  65. }