package me.hammerle.supersnuvi.entity.components; import me.hammerle.supersnuvi.entity.Entity; import me.hammerle.supersnuvi.tiles.Tile; public class DefaultMovement extends Movement { private final float jumpPower; private boolean inWater = false; private final float vx; private final float vy; private float friction = 1.0f; private boolean solid; public DefaultMovement(float vx, float vy, float jumpPower, boolean solid) { this.jumpPower = jumpPower * Tile.SIZE_SCALE; this.vx = vx * Tile.SIZE_SCALE; this.vy = vy * Tile.SIZE_SCALE; this.solid = solid; } private float getFactor() { return inWater ? 0.65f : 1.0f; } @Override public float getGravityFactor() { return inWater ? 0.5f : 1.0f; } @Override public float getVelocityX() { return vx * getFactor(); } @Override public float getVelocityY() { return vy * getFactor(); } @Override public float getJumpPower() { return jumpPower * getFactor(); } @Override public boolean hasGravity(Entity ent) { return true; } @Override public void setInWater(boolean b) { inWater = b; } @Override public boolean isInWater() { return inWater; } @Override public void setFrictionFactor(float f) { friction = f; } @Override public float getFrictionFactor() { return friction; } @Override public boolean isSolid() { return solid; } }