WaterTile.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package me.hammerle.supersnuvi.tiles;
  2. import me.hammerle.snuviengine.api.Texture.Animation;
  3. import me.hammerle.supersnuvi.entity.Entity;
  4. import me.hammerle.supersnuvi.rendering.LevelRenderer;
  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.gamelogic.Level;
  9. public class WaterTile extends BaseTile
  10. {
  11. private final static Animation WATER = LevelRenderer.TILES.addAnimation(160, 0,
  12. "resources/water/water_frame1.png", "resources/water/water_frame2.png",
  13. "resources/water/water_frame3.png", "resources/water/water_frame4.png",
  14. "resources/water/water_frame5.png", "resources/water/water_frame6.png",
  15. "resources/water/water_frame7.png", "resources/water/water_frame8.png");
  16. private int counter = 0;
  17. private final int level;
  18. public WaterTile(int level)
  19. {
  20. super(0.3125f, 0.00390625f * (15 - level), 0.375f, 0.0625f);
  21. this.level = level;
  22. super.setCollisionBox(CollisionBox.createScaledTileBox(0.03125f, getOffsetY() / Tile.SIZE, 0.96875f, 1.0f));
  23. super.setMovementBox(CollisionObject.NULL_BOX);
  24. }
  25. @Override
  26. public void onEntityCollide(Entity ent, int x, int y, Face face, Level l)
  27. {
  28. super.onEntityCollide(ent, x, y, face, l);
  29. ent.getMovement().setInWater(true);
  30. //if(ent.getMotionY() > 0.0f)
  31. //{
  32. // ent.setMotionY(0.0f);
  33. //}
  34. }
  35. @Override
  36. public boolean shouldAiUseCollisionBox(int x, int y, Level l)
  37. {
  38. return false;
  39. }
  40. @Override
  41. public void tick()
  42. {
  43. if(level == 15)
  44. {
  45. counter++;
  46. if(counter > 3)
  47. {
  48. counter = 0;
  49. WATER.nextFrame();
  50. }
  51. }
  52. }
  53. @Override
  54. public final float getOffsetY()
  55. {
  56. return Tile.SIZE - (Tile.SIZE / 16) * (level + 1);
  57. }
  58. @Override
  59. public final float getHeight()
  60. {
  61. return (Tile.SIZE / 16) * (level + 1);
  62. }
  63. }