package vooga.fighter.controller.displayinformation;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import util.Location;
import util.Paintable;
import vooga.fighter.controller.interfaces.ViewDataSource;
/**
* Displays game updatable information
* Extends Observable and implements
* ViewDataSource
*
* @author Jack Matteucci
* @author Jerry Li
* @author Wayne You
*
*/
public class DisplayInfo extends Observable implements ViewDataSource{
private List<Location> myLocations;
private List<Paintable> myGamePaintables;
private List<Paintable> myHUDPaintables;
private List<Dimension> myImageSizes;
private List<List<Integer>> myImageEffects;
/**
* Constructer, constructs lists.
*/
public DisplayInfo() {
myLocations = new ArrayList<Location>();
myGamePaintables = new ArrayList<Paintable>();
myHUDPaintables = new ArrayList<Paintable>();
myImageSizes = new ArrayList<Dimension>();
myImageEffects = new ArrayList<List<Integer>>();
}
/**
* @return object location at list index
*/
@Override
public Paintable getPaintable (int index) {
if (index >= myGamePaintables.size()) {
return myHUDPaintables.get(index - myGamePaintables.size());
}
return myGamePaintables.get(index);
}
/**
* Returns location
*/
@Override
public Location getLocation(int index) {
if (index >= myGamePaintables.size()) {
return new Location(0,0);
}
return myLocations.get(index);
}
/**
* @return size of sprite at list index
*/
@Override
public Dimension getSize (int index) {
if (index >= myGamePaintables.size()) {
return new Dimension(0,0);
}
return myImageSizes.get(index);
}
/**
* @param myLocations the mySpriteLocations to set
*/
public void setGameObjectLocations(List<Location> spriteLocations) {
myLocations = spriteLocations;
}
/**
*
* @param index
*/
public void setGameObjectLocation(int index, Location loc) {
myLocations.set(index, loc);
}
/**
* @return the mySprites
*/
public List<Paintable> getGameObjects() {
return myGamePaintables;
}
/**
* @param myGamePaintables the mySprites to set
*/
public void setGamePaintables(List<Paintable> gamePaintables) {
myGamePaintables = gamePaintables;
}
/**
* Set a paintable
* @param index
* @param p
*/
public void setGamePaintable(int index, Paintable p) {
myGamePaintables.set(index, p);
}
/**
* Get List of Image sizes dimensions
* @return
*/
public List<Dimension> getImageSizes() {
return myImageSizes;
}
/**
* @param myImageSizes the myImageSizes to set
*/
public void setSizes(List<Dimension> sizes) {
myImageSizes = sizes;
}
/**
* Sets the size
*/
public void setSize(int index, Dimension dim) {
myImageSizes.set(index, dim);
}
/**
* @return the mySpriteLocations
*/
protected List<Location> getLocations() {
return myLocations;
}
/**
* Clear lists
*/
public void clear(){
myGamePaintables.clear();
myImageSizes.clear();
myLocations.clear();
}
/**
* Returns numbre of objects
*/
@Override
public int ObjectNumber (){
return myGamePaintables.size() + myHUDPaintables.size();
}
/**Empty update for
* heirarchy purposes.
*/
public void update(){
}
/**
* Add to the HUD an element
* @param element
*/
public void addHUDDisplay (Paintable element) {
myHUDPaintables.add(element);
}
/**
* Clears hud
*/
public void clearHUD () {
myHUDPaintables.clear();
}
/**
* Add effects
* @param effects
*/
public void addImageEffect(List<Integer> effects) {
myImageEffects.add(effects);
}
/**
* Return effects
* @return myImageEffects
*/
public List<List<Integer>> getImageEffects(){
return myImageEffects;
}
/**
* Returns effect at index
*/
@Override
public List<Integer> getImageEffects(int index) {
if (index >= myGamePaintables.size()) {
return new ArrayList<Integer>();
}
return myImageEffects.get(index);
}
}