package vooga.scroller.sprites.animation.state_movement;
import java.awt.Dimension;
import java.awt.Graphics2D;
import util.Vector;
import vooga.scroller.sprites.Sprite;
import vooga.scroller.sprites.state.SpriteState;
import vooga.scroller.util.ISpriteView;
public class SpriteMovementState extends SpriteState<Sprite> {
private static final int PRIORITY = 1;
private ISpriteView myView;
private double myDirection;
private double mySpeed;
public SpriteMovementState(Sprite sprite, ISpriteView view, double direction, double speed){
super(sprite);
myView = view;
myDirection = direction;
mySpeed = speed;
}
@Override
public void update (double elapsedTime, Dimension bounds) {
// does nothing special
}
@Override
public void paint (Graphics2D pen, double angle) {
myView.paint(pen, getUnit().getCenter(), getUnit().getSize(), angle);
}
@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);
}
}