package vooga.scroller.sprites.superclasses;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import util.Location;
import vooga.scroller.level_management.IInputListener;
import vooga.scroller.scrollingmanager.ScrollingManager;
import vooga.scroller.sprites.interfaces.Locatable;
import vooga.scroller.util.IGameComponent;
import vooga.scroller.util.ISpriteView;
import vooga.scroller.view.GameView;
/**
* This is the superclass for any player the game designer creates.
*
* @author Jay Wang, Ross Cahoon, Scott Valentine
*
*/
public abstract class Player extends GameCharacter implements IInputListener, Locatable {
private GameView myView;
private Location myPaintCenter;
private ScrollingManager myScrollingManager;
private IGameComponent myLevel;
public Player (ISpriteView image, Dimension size, GameView gameView,
ScrollingManager sm, int health, int damage) {
super(image, size, health, damage);
myView = gameView;
myPaintCenter = new Location(myView.getWidth() / 2, myView.getHeight() / 2);
myScrollingManager = sm;
}
@Override
public void update (double elapsedTime, Dimension bounds) {
super.update(elapsedTime, bounds);
myPaintCenter = myScrollingManager.playerPaintLocation(this);
}
@Override
public void paint (Graphics2D pen) {
Point2D currentLocal = new Location(this.getCenter());
this.setCenter(myPaintCenter.getX(), myPaintCenter.getY());
super.paint(pen);
this.setCenter(currentLocal.getX(), currentLocal.getY());
}
/**
* Gives the location at which this sprite will be painted.
*
* @return
*/
public Location getPaintLocation () {
return myPaintCenter;
}
public void setLevel (IGameComponent level) {
myLevel = level;
}
public IGameComponent getLevel () {
return myLevel;
}
}