EntityBuilder.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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.Energy;
  6. import me.hammerle.supersnuvi.entity.components.Health;
  7. import me.hammerle.supersnuvi.entity.components.StoneMovement;
  8. import me.hammerle.supersnuvi.entity.components.ai.HumanController;
  9. import me.hammerle.supersnuvi.entity.components.ai.LondonerController;
  10. import me.hammerle.supersnuvi.entity.components.ItemCollector;
  11. import me.hammerle.supersnuvi.entity.components.ai.PlatformController;
  12. import me.hammerle.supersnuvi.entity.components.ai.StartScreenHeroController;
  13. import me.hammerle.supersnuvi.entity.components.ai.StoneController;
  14. import me.hammerle.supersnuvi.util.SoundUtils.Sound;
  15. import me.hammerle.supersnuvi.gamelogic.Level;
  16. import me.hammerle.supersnuvi.tiles.Tile;
  17. import me.hammerle.supersnuvi.entity.components.IDespawn;
  18. public final class EntityBuilder
  19. {
  20. public static Entity buildHero(Level level, float x, float y)
  21. {
  22. Entity hero = new Entity(Tile.SIZE * 0.84375f, Tile.SIZE * 1.84375f,
  23. new HumanController(),
  24. new DefaultHealth(null, Sound.MIRROR_CRACK, Sound.MIRROR_BREAK),
  25. new DefaultEnergy(),
  26. new DefaultMovement(12.0f, 0.0f, 50.0f),
  27. ItemCollector.HERO,
  28. (ent) -> level.scheduleReset(),
  29. "Hero");
  30. hero.setPosition(x, y);
  31. return hero;
  32. }
  33. public static Entity buildStartScreenHero(Level level, float x, float y)
  34. {
  35. Entity hero = new Entity(Tile.SIZE * 0.84375f, Tile.SIZE * 1.84375f,
  36. new StartScreenHeroController(),
  37. new DefaultHealth(null, Sound.MIRROR_CRACK, Sound.MIRROR_BREAK),
  38. new DefaultEnergy(),
  39. new DefaultMovement(12.0f, 0.0f, 50.0f),
  40. ItemCollector.HERO,
  41. (ent) -> level.scheduleReset(),
  42. "Hero");
  43. hero.setPosition(x, y);
  44. return hero;
  45. }
  46. public static Entity buildLondoner(Level level, float x, float y, boolean evil)
  47. {
  48. Entity londoner = new Entity(Tile.SIZE * 0.4375f, Tile.SIZE * 1.40625f,
  49. new LondonerController(evil),
  50. new DefaultHealth(null, null, null),
  51. new DefaultEnergy(),
  52. new DefaultMovement(3.0f, 0.0f, 50.0f),
  53. ItemCollector.NULL,
  54. IDespawn.NULL,
  55. evil ? "EvilLondoner" : "Londoner");
  56. londoner.setPosition(x, y);
  57. return londoner;
  58. }
  59. public static Entity buildCrumblingStone(Level level, float x, float y)
  60. {
  61. Entity stone = new Entity(Tile.SIZE, Tile.SIZE,
  62. new StoneController(),
  63. Health.NULL,
  64. Energy.NULL,
  65. StoneMovement.STONE,
  66. ItemCollector.NULL,
  67. IDespawn.NULL,
  68. "CrumblingStone");
  69. stone.setPosition(x, y);
  70. return stone;
  71. }
  72. public static Entity buildPlatform(Level level, float x, float y, int tx)
  73. {
  74. // render offset: -0.03125, 0
  75. Entity platform = new Entity(Tile.SIZE * tx, Tile.SIZE * 0.78125f,
  76. new PlatformController(),
  77. Health.NULL,
  78. Energy.NULL,
  79. StoneMovement.STONE,
  80. ItemCollector.NULL,
  81. IDespawn.NULL,
  82. "Platform");
  83. platform.setPosition(x, y);
  84. platform.setFriction(0.0f, 0.0f);
  85. return platform;
  86. }
  87. public static Entity fromId(int id, Level level, float x, float y)
  88. {
  89. switch(id)
  90. {
  91. case 1:
  92. return buildLondoner(level, x, y, true);
  93. case 2:
  94. return buildLondoner(level, x, y, false);
  95. }
  96. return null;
  97. }
  98. }