Package src.estrategias

Source Code of src.estrategias.EstrategiaAsesinoFortaleza

package src.estrategias;

import java.util.Iterator;
import java.util.Set;

import src.Atacante;
import src.Enemigo;
import src.Fortaleza;
import src.Mina;
import src.UnidadBasica;
import src.pathFinding.Astar;

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

public class EstrategiaAsesinoFortaleza extends EstrategiaUnidad{
 
  /**
   * pseudo-casteo, llamo a la otra que usa un Atacante
   */
  public ClientCommand accionDeTurno(UnidadBasica ub)  {
    return accionDeTurno((Atacante )ub);
  }
 
 
 
  public ClientCommand accionDeTurno(Atacante asesino){

   
    if (asesino.enemigoEnRango()!=null){
      //ATTACK!
      Enemigo enemigo = asesino.enemigoEnRango();
      if (enemigo.getPosition().distance(asesino.getPosition())>asesino.getActionRange()){//tengo que acercarme
        Point destino=enemigo.getPosition();
        ClientCommand nuevoComando=new ClientCommand()
        nuevoComando.setId(asesino.getJugador().getIdComando());
        nuevoComando.setIdUnit(asesino.getId());
        asesino.setPeligrosidad(false);
        asesino.setDescubir(false);
        asesino.setARangoDeAccion(true);
        asesino.setWayPoints(Astar.intentoDePathFinding(destino, asesino, asesino.getJugador().getFortaleza()));
        asesino.destino=destino;
        nuevoComando.setType("move");
        nuevoComando.setDestination((Point)asesino.getWayPoints().get(0));
        asesino.destino=(Point)asesino.getWayPoints().get(0);
        nuevoComando.setUnitType(asesino.getType());
        asesino.setCommand(nuevoComando);
        return nuevoComando;
      }//sino ataco
      ClientCommand cAtaque =asesino.atacar(enemigo.getPosition());
      asesino.setCommand(cAtaque);
      return cAtaque;
    }
    else
    {//move
        Point destino=null;
          if (Fortaleza.instanciaFortaleza.fortalezaEnemiga==null ){
            ClientCommand nuevoComando=new ClientCommand();
            nuevoComando.setId(asesino.getJugador().getIdComando());
            nuevoComando.setIdUnit(asesino.getId());
            destino=new Point(Fortaleza.anchoMapa/2,Fortaleza.altoMapa/2);
            if (asesino.destino==null || asesino.getWayPoints()==null || asesino.getWayPoints().size()==0 || !Astar.verificarCamino(asesino)){
              asesino.setPeligrosidad(false);
              asesino.setDescubir(false);
              asesino.setARangoDeAccion(false);
              asesino.setWayPoints(Astar.intentoDePathFinding(destino, asesino, asesino.getJugador().getFortaleza()));
   
              asesino.destino=destino;
            }
            nuevoComando.setType("move");
            nuevoComando.setDestination((Point)asesino.getWayPoints().get(0));
            nuevoComando.setUnitType(asesino.getType());
            asesino.setCommand(nuevoComando);
            return nuevoComando;
          }
          if (Fortaleza.instanciaFortaleza.fortalezaEnemiga!=null && Fortaleza.instanciaFortaleza.fortalezaEnemiga.getPosition()!=null){
            ClientCommand nuevoComando=new ClientCommand();
            nuevoComando.setId(asesino.getJugador().getIdComando());
            nuevoComando.setIdUnit(asesino.getId());
            if (asesino.destino==null || asesino.getWayPoints()==null || asesino.getWayPoints().size()==0 || !Astar.verificarCamino(asesino)){
              destino=Fortaleza.instanciaFortaleza.fortalezaEnemiga.getPosition();
              asesino.setPeligrosidad(false);
              asesino.setDescubir(false);
              asesino.setARangoDeAccion(false);
              asesino.setWayPoints(Astar.intentoDePathFinding(destino, asesino, asesino.getJugador().getFortaleza()));
   
              asesino.destino=destino;
            }
            nuevoComando.setType("move");
            nuevoComando.setDestination((Point)asesino.getWayPoints().get(0));
            nuevoComando.setUnitType(asesino.getType());
            asesino.setCommand(nuevoComando);
            return nuevoComando;

          }
          else
            return null;
    }

  }
}
TOP

Related Classes of src.estrategias.EstrategiaAsesinoFortaleza

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.