import javax.swing.*;
import java.awt.*;
import java.util.*;

/**
 * Panel grafico donde se desarrolla toda la accion del juego. (Incompleto aun)
 */
public class Panel extends JPanel
{
   /**
    * Lista de personajes (Warriors).
    */
   private ArrayList<Warrior> warrList;
   
   /**
    * Un reloj que muestra el tiempo del turno.
    */
   private Clock clock;
   
   /**
    * Constructor.
    */
   public Panel()
   {
      setBackground(Color.BLACK);
      warrList = new ArrayList<Warrior>();
      clock = new Clock(this);
   }
   
   /**
    * Inicializa el escenario de juego. (Incompleto aun)
    * @param mapInfo Lista de comandos necesarios para crear el escenario de juego.
    */
   public void createMap(ArrayList<String> mapInfo)
   {
      return;
   }
   
   /**
    * Inicializa el estado inicial de los personajes. (Incompleto aun)
    * @param warrInfo Lista de comandos necesarios para crear los personajes (Warrriors).
    */
   public void initWarriors(ArrayList<String> warrInfo)
   {
      warrList.add(new Warrior(1, 200, 300));
      warrList.add(new Warrior(2, 400, 350));
   }
   
   /**
    * Realizar la accion correspondiente al comando.
    * @param cmd Comando.
    */
   public void doCmd(String cmd)
   {
      if (cmd.equals("move 1 l"))
      {
         warrList.get(0).move_l();
      }
      else if (cmd.equals("move 1 r"))
      {
         warrList.get(0).move_r();
      }
      else if (cmd.equals("move 2 l"))
      {
         warrList.get(1).move_l();
      }
      else if (cmd.equals("move 2 r"))
      {
         warrList.get(1).move_r();
      }
      else
      {
         System.out.println("comando desconocido: " + cmd);
      }
      repaint();
   }
   
   /**
    * Hace que el reloj empiece a contar el tiempo restante para que el jugador
    * haga sus movimientos. (incompleto aun)
    */
   public void startClock()
   {
      //clock.start();
   }
   
   /**
    * Redibujado de los componentes graficos. (uso interno) (incompleto aun)
    */
   public void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      
      g2.setBackground(Color.BLACK);
      
      for (int i=0; i<warrList.size(); i++)
      {
         g2.setColor(Color.YELLOW);
         g2.drawOval(warrList.get(i).getX(), warrList.get(i).getY(), 6, 6);
      }
   }
}
