SpikeTile.java 1.4 KB

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