HeadHitOnceTile.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package me.hammerle.supersnuvi.tiles;
  2. import me.hammerle.supersnuvi.entity.Entity;
  3. import me.hammerle.supersnuvi.util.BlockDataStorage;
  4. import me.hammerle.supersnuvi.util.Face;
  5. import me.hammerle.supersnuvi.gamelogic.Level;
  6. public class HeadHitOnceTile extends BaseBoxTile
  7. {
  8. private final BlockDataStorage states = new BlockDataStorage();
  9. private final float tMinX2;
  10. private final float tMaxX2;
  11. private final float tMinY2;
  12. private final float tMaxY2;
  13. public HeadHitOnceTile(float tMinX, float tMinY, float tMaxX, float tMaxY, float tMinX2, float tMinY2, float tMaxX2, float tMaxY2)
  14. {
  15. super(tMinX, tMinY, tMaxX, tMaxY);
  16. this.tMinX2 = tMinX2;
  17. this.tMaxX2 = tMaxX2;
  18. this.tMinY2 = tMinY2;
  19. this.tMaxY2 = tMaxY2;
  20. }
  21. @Override
  22. public float getTextureMinX(int x, int y, Level l)
  23. {
  24. return states.contains(x, y, l) ? tMinX2 : super.getTextureMinX(x, y, l);
  25. }
  26. @Override
  27. public float getTextureMinY(int x, int y, Level l)
  28. {
  29. return states.contains(x, y, l) ? tMinY2 : super.getTextureMinY(x, y, l);
  30. }
  31. @Override
  32. public float getTextureMaxX(int x, int y, Level l)
  33. {
  34. return states.contains(x, y, l) ? tMaxX2 : super.getTextureMaxX(x, y, l);
  35. }
  36. @Override
  37. public float getTextureMaxY(int x, int y, Level l)
  38. {
  39. return states.contains(x, y, l) ? tMaxY2 : super.getTextureMaxY(x, y, l);
  40. }
  41. @Override
  42. public void onEntityCollide(Entity ent, int x, int y, Face face, Level l)
  43. {
  44. if(face == Face.DOWN && ent.getItemCollector().isHero() && ent.getMotionY() > 0 && states.add(x, y, l))
  45. {
  46. l.getTileUpdater().add(l.getData().getBackgroundIndex(), x, y);
  47. l.callEvent("tile_hit", (sc) ->
  48. {
  49. sc.setVar("tile_x", (double) x);
  50. sc.setVar("tile_y", (double) y);
  51. sc.setVar("entity", ent);
  52. }, null);
  53. }
  54. }
  55. @Override
  56. public void reset(Level l)
  57. {
  58. states.clear(l);
  59. }
  60. @Override
  61. public void reset(int x, int y, Level l)
  62. {
  63. states.clear(x, y, l);
  64. }
  65. }