package edu.calpoly.csc480.Corral.Agent;

import java.awt.*;
import javax.swing.*;

import edu.calpoly.csc480.Corral.Area.*;
import edu.calpoly.csc480.Corral.Tile.*;

abstract public class BaseMeansView
{
	public BaseMeansView() {
	}
	
	final public BaseMeans getDocument()		{return means;}
	final public BaseAreaView getOwner()		{return view;}

	final public Dimension getMinimumSize()	{return getPreferredSize();}
   final public Dimension getPreferredSize()	{return size;}

	public void setDocument(BaseMeans means) {
		BaseAgentView agentView;
		
		this.means = means;

		agentView = means.getAgent().getView();
		icon = agentView.getIcon();
		size = agentView.getPreferredSize();
	}

	public void setOwner(BaseAreaView view) {
		this.view = view;
	}

	public void update(Graphics draw) {
		Point point;
		
		if (means.hasTeleported()) {
			view.getTileView(means.getLastLocation()).paint(draw);

			point = view.getTilePoint(means.getLocation());
			icon.paintIcon(null, draw, point.x, point.y);
		}
	}
	
	public void paint(Graphics draw) {
		Point point = view.getTilePoint(means.getLocation());
		icon.paintIcon(null, draw, point.x, point.y);
	}
		
	protected BaseMeans means;
	protected BaseAreaView view;
	
	protected Dimension size;
	protected Icon icon;
}