EntityBuilder.java 4.7 KB

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