SpikeTile.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package me.hammerle.supersnuvi.tiles;
  2. import me.hammerle.snuviengine.api.Texture;
  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.Face;
  7. import me.hammerle.supersnuvi.gamelogic.Level;
  8. public class SpikeTile extends BaseCollisionTile
  9. {
  10. private final static Texture.Animation SPIKES = LevelRenderer.TILES.addAnimation(96, 32,
  11. "resources/spike_trap/spike_trap_frame1.png", "resources/spike_trap/spike_trap_frame2.png",
  12. "resources/spike_trap/spike_trap_frame3.png", "resources/spike_trap/spike_trap_frame4.png",
  13. "resources/spike_trap/spike_trap_frame5.png");
  14. private int counter;
  15. private int frame;
  16. public SpikeTile()
  17. {
  18. super(0.1875f, 0.0625f, 0.25f, 0.125f, Tile.SIZE * 0.1f, Tile.SIZE * 0.1f, Tile.SIZE * 0.9f, Tile.SIZE * 0.9f);
  19. counter = 0;
  20. frame = 0;
  21. super.setCollisionBox(CollisionBox.createScaledTileBox(0.1f, 0.1f, 0.9f, 0.9f));
  22. }
  23. @Override
  24. public void onEntityCollide(Entity ent, int x, int y, Face face, Level l)
  25. {
  26. super.onEntityCollide(ent, x, y, face, l);
  27. if(frame >= 1)
  28. {
  29. ent.getHealth().addHealth(-42.857f);
  30. }
  31. }
  32. @Override
  33. public void tick()
  34. {
  35. counter++;
  36. if((frame == 0 && counter > 20) || (frame != 0 && counter > 5))
  37. {
  38. counter = 0;
  39. frame = (frame + 1) % 5;
  40. SPIKES.nextFrame();
  41. }
  42. }
  43. }