package games.scroller.mr_fish.sprites.player.states; import java.awt.Dimension; import java.awt.Graphics2D; import util.Vector; import vooga.scroller.sprites.Sprite; import vooga.scroller.sprites.state.SpriteState; public abstract class Tilt extends SpriteState<Sprite> { private static final int PRIORITY = Integer.MAX_VALUE; private static final double ROTATION_BUFFER =20; private double myRateOfRotation; private double myDirection; private double mySpeed; public Tilt (Sprite unit, double rateOfRotation, double direction, double speed) { super(unit); myRateOfRotation = rateOfRotation; myDirection = direction; mySpeed = speed; } @Override public void update (double elapsedTime, Dimension bounds) { Sprite unit = getUnit(); double movingDirection = unit.lastLocation().getX() - unit.getCenter().getX(); double rotation = elapsedTime*myRateOfRotation; if(movingDirection > 0){ rotation = -rotation; } } @Override public void paint (Graphics2D pen, double angle) { // nothing different } @Override public int getPaintPriority () { return PRIORITY; } @Override public void activate () { Vector component = getUnit().getVelocity().getComponentVector(myDirection); component.negate(); getUnit().addVector(component); getUnit().addVector(new Vector(myDirection, mySpeed)); } @Override public void deactivate () { Vector component = getUnit().getVelocity().getComponentVector(myDirection); component.negate(); getUnit().addVector(component); } }