EntityBuilder.java 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.IDeath;
  9. import me.hammerle.supersnuvi.entity.components.ItemCollector;
  10. import me.hammerle.supersnuvi.entity.components.ai.PlatformController;
  11. import me.hammerle.supersnuvi.entity.components.ai.StartScreenHeroController;
  12. import me.hammerle.supersnuvi.entity.components.ai.StoneController;
  13. import me.hammerle.supersnuvi.util.CollisionBox;
  14. import me.hammerle.supersnuvi.util.SoundUtils.Sound;
  15. import me.hammerle.supersnuvi.gamelogic.Level;
  16. public final class EntityBuilder
  17. {
  18. public static Entity buildHero(Level level, float x, float y)
  19. {
  20. Entity hero = new Entity("Hero", x, y, CollisionBox.createScaledTileBox(0.0f, 0.15625f, 0.84375f, 2.0f));
  21. hero.controller = new HumanController(hero);
  22. hero.health = new DefaultHealth(hero, (ent) -> level.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 buildStartScreenHero(Level level, float x, float y)
  29. {
  30. Entity hero = new Entity("Hero", x, y, CollisionBox.createScaledTileBox(0.0f, 0.15625f, 0.84375f, 2.0f));
  31. hero.controller = new StartScreenHeroController(hero);
  32. hero.health = new DefaultHealth(hero, (ent) -> level.scheduleReset(), 100.0f, null, Sound.MIRROR_CRACK, Sound.MIRROR_BREAK);
  33. hero.energy = new DefaultEnergy(hero, 100.0f);
  34. hero.move = new DefaultMovement(hero, 12.0f, 0.0f, 50.0f);
  35. hero.itemCollector = ItemCollector.HERO;
  36. return hero;
  37. }
  38. public static Entity buildLondoner(Level level, float x, float y, boolean evil)
  39. {
  40. Entity londoner = new Entity(evil ? "EvilLondoner" : "Londoner", x, y, CollisionBox.createScaledTileBox(0.21875f, 0.59375f, 0.65625f, 2.0f));
  41. londoner.controller = new LondonerController(londoner, evil);
  42. londoner.health = new DefaultHealth(londoner, IDeath.NULL, 100.0f, null, null, null);
  43. londoner.energy = new DefaultEnergy(londoner, 100.0f);
  44. londoner.move = new DefaultMovement(londoner, 3.0f, 0.0f, 50.0f);
  45. return londoner;
  46. }
  47. public static Entity buildCrumblingStone(Level level, float x, float y)
  48. {
  49. Entity stone = new Entity("CrumblingStone", x, y, CollisionBox.DEFAULT_TILE_BOX);
  50. stone.controller = new StoneController(stone);
  51. stone.move = new StoneMovement(stone);
  52. return stone;
  53. }
  54. public static Entity buildPlatform(Level level, float x, float y, int tx)
  55. {
  56. Entity platform = new Entity("Platform", x, y, CollisionBox.createScaledTileBox(0.03125f, 0.0f, 0.03125f + tx, 0.78125f));
  57. platform.controller = new PlatformController(platform);
  58. platform.move = new StoneMovement(platform);
  59. return platform;
  60. }
  61. public static Entity fromId(int id, Level level, float x, float y)
  62. {
  63. switch(id)
  64. {
  65. case 1:
  66. return buildLondoner(level, x, y, true);
  67. case 2:
  68. return buildLondoner(level, x, y, false);
  69. }
  70. return null;
  71. }
  72. }