EntityBuilder.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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.gamelogic.Level;
  9. import me.hammerle.supersnuvi.tiles.Tile;
  10. import me.hammerle.supersnuvi.entity.components.IDeath;
  11. import me.hammerle.supersnuvi.entity.components.ItemCollector;
  12. import me.hammerle.supersnuvi.entity.components.NoHealth;
  13. import me.hammerle.supersnuvi.entity.components.ai.StoneController;
  14. import me.hammerle.supersnuvi.util.CollisionBox;
  15. import me.hammerle.supersnuvi.util.SoundUtils.Sound;
  16. public final class EntityBuilder
  17. {
  18. public static Entity buildHero(Level level, float x, float y)
  19. {
  20. Entity hero = new Entity(level, x, y, new CollisionBox(0.0f, 5.0f, 27.0f, 64.0f));
  21. hero.controller = new HumanController(hero);
  22. hero.health = new DefaultHealth(hero, (ent) -> ent.getLevel().scheduleReset(), 100.0f, null, Sound.MIRROR_CRACK, Sound.MIRROR_BREAK);
  23. hero.energy = new DefaultEnergy(hero, 100.0f);
  24. hero.move = new DefaultMovement(hero, 12.0f, 0.0f, 50.0f);
  25. hero.itemCollector = ItemCollector.HERO;
  26. return hero;
  27. }
  28. public static Entity buildLondoner(Level level, float x, float y, boolean evil)
  29. {
  30. Entity londoner = new Entity(level, x, y, new CollisionBox(7.0f, 19.0f, 21.0f, 64.0f));
  31. londoner.controller = new LondonerController(londoner, evil);
  32. londoner.health = new DefaultHealth(londoner, IDeath.NULL, 100.0f, null, null, null);
  33. londoner.energy = new DefaultEnergy(londoner, 100.0f);
  34. londoner.move = new DefaultMovement(londoner, 3.0f, 0.0f, 50.0f);
  35. return londoner;
  36. }
  37. public static Entity buildCrumblingStone(Level level, float x, float y)
  38. {
  39. Entity stone = new Entity(level, x, y, new CollisionBox(0.0f, 0.0f, Tile.SIZE, Tile.SIZE));
  40. stone.controller = new StoneController(stone);
  41. stone.move = new StoneMovement(stone);
  42. stone.health = new NoHealth(stone);
  43. return stone;
  44. }
  45. public static Entity fromId(int id, Level level, float x, float y)
  46. {
  47. switch(id)
  48. {
  49. case 1:
  50. return buildLondoner(level, x, y, true);
  51. case 2:
  52. return buildLondoner(level, x, y, false);
  53. }
  54. return null;
  55. }
  56. }