package pmicrovenus;
import java.util.ArrayList;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Tablero extends Canvas{
    
    private int turno;
    private ArrayList<Casilla> casilla= new ArrayList<Casilla>();
    private ArrayList<Jugador> jugador= new ArrayList<Jugador>();
    private int njug;
     

     public Tablero(Jugador j) {  
        setTurno(0);
        jugador.add(j);
        
                           
       int x[]= {0,540,473,426,376,329,277,229,181,132,83,7};
       int y[]= {0,540,471,422,374,326,277,228,180,131,83,7};
        
        //  Crea las casillas
        //casilla = new ArrayList<Casilla>();
        casilla.add(0,new Salida(1,"SALIDA", x[1], y[1],100));
        casilla.add(1,new Solar (2,"Avda. Sta. Isabel", x[2], y[1],"MARRON",60,20,20));
        casilla.add(2, new Carta (3,"Caja Comunidad", x[3], y[1]) );
        casilla.add(3,new Solar (4,"Antonio de Leyva", x[4], y[1],"MARRON",60,20,20) );
        casilla.add(4,new Impuesto (5,"Impuesto sobre el capital", x[5], y[1],200) );
        casilla.add(5, new Estacion (6,"Feria oficial de Muestras", x[6], y[1],200,60));
        casilla.add(6, new Solar (7,"Avda. Cataluņa", x[7], y[1],"CELESTE",100,40,30) );
        casilla.add(7, new Carta (8,"SUERTE", x[8], y[1]) );
        casilla.add(8, new Solar (9,"Avda. Compromiso de Caspe", x[9], y[1],"CELESTE",100,40,30));
        casilla.add(9, new Solar (10,"Avda. San Jose", x[10], y[1],"CELESTE",120,60,50));
        casilla.add(10, new Carcel (11,"Carcel (Solo visitas)", x[11], y[1]));//000000000000000000000000000000
        casilla.add(11, new Solar (12,"Avda. Pablo Gargallo", x[11], y[2],"MORAO",140,70,50) );
        casilla.add(12, new Servicio (13,"Compaņia de electricidad", x[11], y[3],150,100));
        casilla.add(13, new Solar (14,"Avda. America", x[11], y[4],"MORAO",140,70,50) );
        casilla.add(14, new Solar (15,"Avda. Navarra", x[11], y[5],"MORAO",160,80,50));
        casilla.add(15, new Estacion (16,"Aeropuerto", x[11], y[6],200,100) );
        casilla.add(16, new Solar (17,"Duquesa Villahermosa", x[11], y[7],"NARANJA",180,90,50));
        casilla.add(17, new Carta (18,"Caja Comunidad", x[11], y[8]) );
        casilla.add(18,  new Solar (19,"Maria Zambrano", x[11], y[9],"NARANJA",180,90,50));
        casilla.add(19,new Solar (20,"Conde Aranda", x[11], y[10],"NARANJA",200,100,50) );
        casilla.add(20, new Parking (21,"Parking Gratuito", x[11], y[11]));
        casilla.add(21, new Solar (22,"Villa de la Hispanidad", x[10], y[11],"ROJO",220,110,50));
        casilla.add(22, new Carta (23,"SUERTE", x[9], y[11]));
        casilla.add(23,  new Solar (24,"Avda. Tenor Fleta", x[8], y[11],"ROJO",220,110,50));
        casilla.add(24, new Solar (25,"Paseo Cuellar", x[7], y[11],"ROJO",240,120,50));
        casilla.add(25,new Estacion (26,"Estacion Delicias", x[6], y[11],200,100) );
        casilla.add(26, new Solar (27,"Coso", x[5], y[11],"AMARILLO",260,130,50));
        casilla.add(27, new Solar (28,"Cinco de Marzo", x[4], y[11],"AMARILLO",260,130,50));
        casilla.add(28, new Servicio (29,"Compaņia de Agua", x[3], y[11],150,100));
        casilla.add(29, new Solar (30,"Alfonso I", x[2], y[11],"AMARILLO",280,140,50));
        casilla.add(30, new IrCarcel (31,"Ve a la Carcel", x[1], y[11]) );
        casilla.add(31,  new Solar (32,"Paseo Ruiseņores", x[1], y[10],"VERDE",300,150,50));
        casilla.add(32, new Solar (33,"Plaza San Francisco", x[1], y[9],"VERDE",300,150,50));
        casilla.add(33,new Carta (34,"Caja Comunidad", x[1], y[8]));
        casilla.add(34, new Solar (35,"Plaza los Sitios", x[1], y[7],"VERDE",320,160,50));
        casilla.add(35,new Estacion (36,"Recinto Expo", x[1], y[6],220,120) );     
        casilla.add(36, new Carta (37,"SUERTE", x[1], y[5]));
        casilla.add(37,new Solar (38,"Paseo Sagasta", x[1], y[4],"AZUL",350,180,50) );
        casilla.add(38, new Impuesto (39,"IMPUESTO DE LUJO", x[1], y[3],100));
        casilla.add(39,  new Solar (40,"Paseo de la Independencia", x[1], y[2],"AZUL",400,200,50));

        }   
   
    public int getTurno() {
        return turno;
    }

    public void setTurno(int turno) {
        this.turno = turno;
    }
 
    
    public ArrayList<Casilla> getCasilla() {
        return casilla;
    }
    
    public void setCasilla(ArrayList<Casilla> casilla) {
        this.casilla = casilla;
    }
    
    public ArrayList<Jugador> getJugador() {
        return jugador;
    }

    public void setJugador(ArrayList<Jugador> jugador) {
        this.jugador = jugador;
    }

    public int getNjug() {
        return njug;
    }

    public void setNjug(int njug) {
        this.njug = njug;
    }
    
    public Jugador getJugadorActual(){
        return jugador.get(turno);
    }
    
    public int getIndexJugadorActual(){
        return turno;
    }
    
    public void siguiente(){
        turno = (turno + 1) % njug; 
//        turno = turno % njug;
        
    }
  
     public Casilla mover(int suma, Casilla cas){
         int pos, nPos;
         pos=cas.getNum();
         nPos = (pos + suma) % (40);
         return casilla.get((nPos));
    }
     
    public Casilla comienzoPartida(){
        return casilla.get(0);
    }
    
    public void mover(int suma) {
        int pos,nPos;
       //  Actualizar Posicion
        pos = getJugadorActual().getPosicion().getNum();
        nPos = (pos + suma) % (40);
//          nPos = (pos + suma) % (40);
        getJugadorActual().setPosicion(casilla.get(nPos));
        
        if (nPos<pos && nPos!=0) {                  //Paso por Salida?
            casilla.get(0).pasa(getJugadorActual());
        }  
        casilla.get(nPos).accion(getJugadorActual());   //Jugar Accion 
    } 
    
       	
    public BufferedImage loadImage(String nombre) {
		URL url=null;
		try {
			url = getClass().getResource(nombre);
			return ImageIO.read(url);
		} catch (Exception e) {
			System.out.println("No se pudo cargar la imagen " + nombre +" de "+url);
			System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage());
			System.exit(0);
			return null;
		}
    }
		
    public void paint(Graphics g) {
                //Pintamos el tablero en el inicio de las coordenadas
		BufferedImage mono = loadImage("monopoly.gif");
                g.drawImage(mono, 0, 0,this);
                BufferedImage bicho = loadImage("bicho.gif");
                g.drawImage(bicho, jugador.get(0).getPosicion().getX(),jugador.get(0).getPosicion().getY(),this);
    }	

    
}
