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 EstrategiaAsesinoMatarFortalezaOMorir 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){
Enemigo enemigo = asesino.enemigoEnRango();
if (enemigo!=null && enemigo.getPosition().distance(asesino.getPosition()) <= asesino.getActionRange()){
//ATTACK!
ClientCommand cAtaque =asesino.atacar(enemigo.getPosition());
asesino.setCommand(cAtaque);
return cAtaque;
}
else
{//move
Point destino=null;
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;
}
}
}