BoxController.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package me.hammerle.supersnuvi.entity.components.ai;
  2. import me.hammerle.snuviengine.api.Shader;
  3. import me.hammerle.supersnuvi.entity.Entity;
  4. import me.hammerle.supersnuvi.rendering.LevelRenderer;
  5. import me.hammerle.supersnuvi.tiles.Tile;
  6. import me.hammerle.supersnuvi.util.Face;
  7. import me.hammerle.supersnuvi.util.Utils;
  8. public class BoxController extends Controller
  9. {
  10. private final float startX;
  11. private final float endX;
  12. public BoxController(int type)
  13. {
  14. startX = (256.0f + Tile.SIZE * type) / 512.0f;
  15. endX = (288.0f + Tile.SIZE * type) / 512.0f;
  16. }
  17. @Override
  18. public void renderTick(Entity ent, float lag)
  19. {
  20. float x = Utils.interpolate(ent.getLastX(), ent.getX(), lag);
  21. float y = Utils.interpolate(ent.getLastY(), ent.getY(), lag);
  22. LevelRenderer.TILES.bind();
  23. Shader.getTextureRenderer().drawRectangle(x, y,
  24. x + ent.getWidth(), y + ent.getHeight(),
  25. startX, 0.125f,
  26. endX, 0.1875f);
  27. }
  28. @Override
  29. public void onCollideWithEntity(Entity ent, Entity other, Face face)
  30. {
  31. if(face == Face.LEFT && other.getOwnForceX() > 0.0f)
  32. {
  33. ent.applyForce(other.getOwnForceX(), 0.0f);
  34. }
  35. else if(face == Face.RIGHT && other.getOwnForceX() < 0.0f)
  36. {
  37. ent.applyForce(other.getOwnForceX(), 0.0f);
  38. }
  39. }
  40. }