package business;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.util.ArrayList;

import utils.Constantes;
import utils.Fuentes;

public class Vertice {

	private Point punto;
	private Integer id;
	private boolean seleccionado;
	private boolean solucion;
	private ArrayList<Vertice> adyacentes;

	private int padre;
	private int distancia;
	private boolean recorrido;


	public Vertice(Point punto, int id, boolean seleccionado) {
		this.punto = punto;
		this.id = id;
		this.seleccionado = seleccionado;
		solucion = false;
		adyacentes = new ArrayList<Vertice>();
	}

	public void dibujarVertice(Graphics g) {
		if(solucion) {
			g.setColor(Configuracion.getColorVerticeSolucion());
		} else if (seleccionado) {
			g.setColor(Configuracion.getColorVerticeSeleccionado());
		} else {
			g.setColor(Configuracion.getColorVertice());
		}
		g.fillOval(punto.x - Constantes.PIXELES_VERTICES/2, punto.y - Constantes.PIXELES_VERTICES/2, Constantes.PIXELES_VERTICES, Constantes.PIXELES_VERTICES);
		g.setColor(Color.BLACK);
		g.setFont(Fuentes.Fuente6);
		g.drawString(Integer.toString(id), punto.x + 8, punto.y - 3);
	}

	public Point getPunto() {
		return punto;
	}

	public void setPunto(Point punto) {
		this.punto = punto;
	}

	public Integer getId() {
		return id;
	}

	public boolean isSeleccionado() {
		return seleccionado;
	}

	public void setSeleccionado(boolean seleccionado) {
		this.seleccionado = seleccionado;
	}

	public ArrayList<Vertice> getAdyacentes() {
		return adyacentes;
	}

	public int getDistancia() {
		return distancia;
	}

	public void setDistancia(int distancia) {
		this.distancia = distancia;
	}

	public int getPadre() {
		return padre;
	}

	public void setPadre(int padre) {
		this.padre = padre;
	}

	public boolean isRecorrido() {
		return recorrido;
	}

	public void setRecorrido(boolean recorrido) {
		this.recorrido = recorrido;
	}

	public void setSolucion(boolean solucion) {
		this.solucion = solucion;
	}

	@Override
	public String toString() {
		return "Vertice [id=" + id + ", punto=" + punto + ", distancia="
		+ distancia + ", padre=" + padre + "]";
	}
}