Package src.estrategias

Source Code of src.estrategias.EstrategiaFormacionAtaque

package src.estrategias;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import src.Asesino;
import src.Enemigo;
import src.Fortaleza;
import src.Guardia;
import src.Mina;
import src.UnidadBasica;
import src.pathFinding.Astar;

import com.gameloftProgrammersCup.client.ClientCommand;
import com.gameloftProgrammersCup.clientInterfaces.Point;

public class EstrategiaFormacionAtaque extends EstrategiaUnidad{
  public static Point objetivo;
  public static int radio=0;
  public static int avanzarFormacionX=0;
  public static int avanzarFormacionY=0;
  public static boolean moverse=false;
 
 
  public ClientCommand accionDeTurno(UnidadBasica ub)
    {
      return accionDeTurno((Asesino )ub);
    }
  public ClientCommand accionDeTurno(Asesino ub){

    ifub.enemigoEnRango() != null)
      //ATTACK!
    {
     
      Enemigo enemigo = ub.enemigoEnRango();
      ClientCommand cAtaque =ub.atacar(enemigo.getPosition());
      //comandos.add(nuevoComando);
      ub.setCommand(cAtaque);
      return cAtaque;
    }
   
    if (ub.getPosition().distance(objetivo)==radio){
      if (moverse){
        ClientCommand nuevoComando = new ClientCommand();
        ub.getJugador().incIdComando();
        nuevoComando.setId(ub.getJugador().getIdComando());
        nuevoComando.setIdUnit(ub.getId());     
        nuevoComando.setType("move");
        nuevoComando.setDestination(new Point(ub.getPosition().getX()+avanzarFormacionX*4,ub.getPosition().getY()+avanzarFormacionY*4));
        nuevoComando.setUnitType(ub.getType());
        ub.destino=new Point(ub.getPosition().getX()+avanzarFormacionX*4,ub.getPosition().getY()+avanzarFormacionY*4);
        ub.obstaculos.clear();
        ub.getWayPoints().clear();
        ub.setCommand(nuevoComando);
        return nuevoComando;
       
      }
      else if (Fortaleza.fortalezaEnemiga!= null && ub.getPosition().distance(Fortaleza.fortalezaEnemiga.getPosition())<10){
        ClientCommand nuevoComando = new ClientCommand();
        ub.getJugador().incIdComando();
        nuevoComando.setId(ub.getJugador().getIdComando());
        nuevoComando.setIdUnit(ub.getId());     
        nuevoComando.setType("move");
        nuevoComando.setDestination(Fortaleza.fortalezaEnemiga.getPosition());
        nuevoComando.setUnitType(ub.getType());
        ub.destino=Fortaleza.fortalezaEnemiga.getPosition();
        ub.obstaculos.clear();
        ub.getWayPoints().clear();
        ub.setCommand(nuevoComando);
        return nuevoComando;
      }
     
      ub.destino=ub.getPosition();
      ub.obstaculos.clear();
      ub.getWayPoints().clear();
      return null;
    }
    ub.obstaculos.clear();
    List unidades=Fortaleza.instanciaFortaleza.unidades;
    List puntosOcupados=new ArrayList();
    Point destino=null;
    ClientCommand nuevoComando = new ClientCommand();
    ub.getJugador().incIdComando();
    nuevoComando.setId(ub.getJugador().getIdComando());
    nuevoComando.setIdUnit(ub.getId());
    if (ub.destino==null || ub.getWayPoints()==null || ub.getWayPoints().size()==0){
        //|| !Astar.verificarCamino(ub)){
      for (int i = objetivo.getX()-radio;i<=objetivo.getX()+radio;i++){
        for (int j = objetivo.getY()-radio;j<=objetivo.getY()+radio;j++){
          Point posiblePunto=new Point(i,j);
          if (!Fortaleza.isPointAfuera(posiblePunto) && objetivo.distance(posiblePunto)==radio){
            boolean ocupado=false;
            Iterator itOcupados=unidades.iterator();
            while (itOcupados.hasNext()){
              UnidadBasica unidad=(UnidadBasica)itOcupados.next();
              //posiblePunto.equals(unidad.getDestino()) ||
              if (unidad.getDestino()!=null && (posiblePunto.equals(unidad.getPosition()))){
                  ocupado=true;
              }
              if (unidad.getTipoInternoUnidad()==UnidadBasica.TIPO_ASESINO && ((Asesino)unidad).getEstrategia().getClass().getName().equals("src.EstrategiaFormacionAtaque")){
                if (unidad.getWayPoints()!=null && unidad.getWayPoints().size()>0){
                  Iterator it2=unidad.getWayPoints().iterator();
                  while (it2.hasNext()){
                    Point puntoObstaculo=(Point) it2.next();
                    Mina obstaculo=new Mina();
                    obstaculo.setPosition(puntoObstaculo);
                    ub.obstaculos.add(obstaculo);                   
                  }
                }
              }
            }
            if (!ocupado){
              if (destino==null || posiblePunto.distance(Fortaleza.fortalezaEnemiga.getPosition())>destino.distance(Fortaleza.fortalezaEnemiga.getPosition()) || posiblePunto.distance(Fortaleza.fortalezaEnemiga.getPosition())>ub.getPosition().distance(Fortaleza.fortalezaEnemiga.getPosition())){
                  //|| (posiblePunto.distance(Fortaleza.fortalezaEnemiga.getPosition())==destino.distance(Fortaleza.fortalezaEnemiga.getPosition()) && posiblePunto.distance(ub.getPosition())<destino.distance(ub.getPosition()))){
               
                destino=posiblePunto;
                ub.destino=destino;
                ub.setPeligrosidad(false);
                ub.setDescubir(false);
                ub.setARangoDeAccion(false);
                ub.setWayPoints(Astar.intentoDePathFinding(destino, ub, ub.getJugador().getFortaleza()));
                if (ub.getWayPoints().size()==0){
                  System.out.println("jodido");
                }

              }
            }
          }
         
        }
      }
    }
    if (ub.getWayPoints().size()==0){
      System.out.println("jodido");
      return null;
    }
    else{
      nuevoComando.setType("move");
      nuevoComando.setDestination((Point) ub.getWayPoints().get(0));
      nuevoComando.setUnitType(ub.getType());
   
    ub.setCommand(nuevoComando);
    return nuevoComando;
    }

  }
 
  public static void setRadio(int cantidadUnidades){
    radio=(cantidadUnidades-1)/2;

  }

}
TOP

Related Classes of src.estrategias.EstrategiaFormacionAtaque

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.