CrumblingStoneTile.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package me.hammerle.supersnuvi.tiles;
  2. import me.hammerle.supersnuvi.entity.Entity;
  3. import me.hammerle.supersnuvi.entity.EntityBuilder;
  4. import me.hammerle.supersnuvi.util.BlockDataStorage;
  5. import me.hammerle.supersnuvi.util.CollisionBox;
  6. import me.hammerle.supersnuvi.util.CollisionObject;
  7. import me.hammerle.supersnuvi.util.Face;
  8. import me.hammerle.supersnuvi.util.SoundUtils;
  9. import me.hammerle.supersnuvi.util.Utils;
  10. import me.hammerle.supersnuvi.gamelogic.Level;
  11. public class CrumblingStoneTile extends BaseCollisionTile
  12. {
  13. private final BlockDataStorage states = new BlockDataStorage();
  14. public CrumblingStoneTile()
  15. {
  16. super(0.1875f, 0.125f, 0.25f, 0.1875f, 0.0f, 0.0f, Tile.SIZE, Tile.SIZE * 0.6f);
  17. super.setCollisionBox(CollisionBox.createScaledTileBox(0.0f, 0.0f, 1.0f, 0.6f));
  18. super.setMovementBox(CollisionBox.createScaledTileBox(0.0f, 0.0f, 1.0f, 0.6f));
  19. }
  20. @Override
  21. public CollisionObject getCollisionBox(int x, int y, Level l)
  22. {
  23. if(states.contains(x, y, l))
  24. {
  25. return CollisionObject.NULL_BOX;
  26. }
  27. return super.getCollisionBox(x, y, l);
  28. }
  29. @Override
  30. public CollisionObject getMovementBox(int x, int y, Level l)
  31. {
  32. if(states.contains(x, y, l))
  33. {
  34. return CollisionObject.NULL_BOX;
  35. }
  36. return super.getMovementBox(x, y, l);
  37. }
  38. @Override
  39. public void onEntityCollide(Entity ent, int x, int y, Face face, Level l)
  40. {
  41. super.onEntityCollide(ent, x, y, face, l);
  42. if(face == Face.UP)
  43. {
  44. if(states.add(x, y, l))
  45. {
  46. l.getTileUpdater().add(l.getData().getBackgroundIndex(), x, y);
  47. l.spawnEntity(EntityBuilder.buildCrumblingStone(l, Utils.toCoord(x), Utils.toCoord(y)));
  48. SoundUtils.playSound(SoundUtils.Sound.STONE_CRUMBLING);
  49. }
  50. }
  51. }
  52. @Override
  53. public boolean shouldRender(int x, int y, Level l)
  54. {
  55. return !states.contains(x, y, l);
  56. }
  57. @Override
  58. public void reset(Level l)
  59. {
  60. states.clear(l);
  61. }
  62. @Override
  63. public void reset(int x, int y, Level l)
  64. {
  65. states.clear(x, y, l);
  66. }
  67. }