import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class Goyne_Card {
	protected Integer			positionX	= new Integer(0);
	protected Integer			positionY	= new Integer(0);
	protected ImagePaintableLite	image		= null;
	protected Integer			suit		= 0;
	protected Integer			value		= 0;
	protected boolean			inPlay		= true;
	protected Goyne_Card				parent		= null;
	
	public Integer getX() {
		return positionX;
	}
	public Integer getY() {
		return positionY;
	}
	public Integer getSuit() {
		return suit;
	}
	public Integer getValue() {
		return value;
	}
	public Goyne_Card setParent(Goyne_Card p) {
		return parent = p;
	}
	public Goyne_Card getParent() {
		return parent;
	}
	public boolean setPlay(boolean p) {
		return inPlay = p;
	}
	public boolean getPlay() {
		return inPlay;
	}
	
	public Goyne_Card(Integer s, Integer v, ImagePaintableLite sourceImage) {
		suit = s;
		value = v;
		image = sourceImage;
	}
	
	public Goyne_Card(Integer x, Integer y) {
		positionX = x;
		positionY = y;
	}
	
	public void calculatePosition() {
		if(parent != null) {
			parent.calculatePosition();
			positionX = parent.getX();
			positionY = parent.getY() + (inPlay ? 20 : 0);
		}
	}
	
	public boolean draw(BufferedPanel window) {
		calculatePosition();
		if(image != null) {
            Paintable card = image;
            card.move(positionX, positionY);
            window.appendPaintable(card);
		}
		if(parent != null) {
			parent.draw(window);
		}
		return true;
	}
}
