DefaultMovement.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package me.hammerle.supersnuvi.entity.components;
  2. import me.hammerle.supersnuvi.entity.Entity;
  3. import me.hammerle.supersnuvi.tiles.Tile;
  4. public class DefaultMovement extends Movement
  5. {
  6. private final float jumpPower;
  7. private boolean inWater = false;
  8. private final float vx;
  9. private final float vy;
  10. private float friction = 1.0f;
  11. private boolean solid;
  12. public DefaultMovement(float vx, float vy, float jumpPower, boolean solid)
  13. {
  14. this.jumpPower = jumpPower * Tile.SIZE_SCALE;
  15. this.vx = vx * Tile.SIZE_SCALE;
  16. this.vy = vy * Tile.SIZE_SCALE;
  17. this.solid = solid;
  18. }
  19. private float getFactor()
  20. {
  21. return inWater ? 0.65f : 1.0f;
  22. }
  23. @Override
  24. public float getGravityFactor()
  25. {
  26. return inWater ? 0.5f : 1.0f;
  27. }
  28. @Override
  29. public float getVelocityX()
  30. {
  31. return vx * getFactor();
  32. }
  33. @Override
  34. public float getVelocityY()
  35. {
  36. return vy * getFactor();
  37. }
  38. @Override
  39. public float getJumpPower()
  40. {
  41. return jumpPower * getFactor();
  42. }
  43. @Override
  44. public boolean hasGravity(Entity ent)
  45. {
  46. return true;
  47. }
  48. @Override
  49. public void setInWater(boolean b)
  50. {
  51. inWater = b;
  52. }
  53. @Override
  54. public boolean isInWater()
  55. {
  56. return inWater;
  57. }
  58. @Override
  59. public void setFrictionFactor(float f)
  60. {
  61. friction = f;
  62. }
  63. @Override
  64. public float getFrictionFactor()
  65. {
  66. return friction;
  67. }
  68. @Override
  69. public boolean isSolid()
  70. {
  71. return solid;
  72. }
  73. }