package src.estrategias;
import src.UnidadBasica;
import src.pathFinding.Astar;
import com.gameloftProgrammersCup.client.ClientCommand;
import com.gameloftProgrammersCup.clientInterfaces.Point;
public class EstrategiaExploracionEspiral extends EstrategiaUnidad{
@Override
public ClientCommand accionDeTurno(UnidadBasica ub) {
ClientCommand nuevoComando=new ClientCommand();
if (ub.getWayPoints()==null || ub.getWayPoints().size()==0 ||((Point)ub.getWayPoints().get(0)).distance(ub.getPosition())<ub.getMovementSpeed() || !Astar.verificarCamino(ub)){
int distancia=0;
Point destino=null;
for (int i=0;i<ub.getJugador().getFortaleza().anchoMapa;i++){
for (int j=0;j<ub.getJugador().getFortaleza().altoMapa;j++){
/*
if (!ub.getJugador().getFortaleza().estadisticas.isPosicionDescubierta(i, j) &&
(distancia==0 || (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
//(distancia==0 || (ub.getPosition().distance(new Point(i,j))+ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
if (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))==distancia){
if (ub.getPosition().distance(new Point(i,j) )<destino.distance(ub.getJugador().getFortaleza().getPosition())){
destino=new Point(i,j);
distancia=destino.distance(ub.getPosition());
}
}
else
{
destino=new Point(i,j);
distancia=destino.distance(ub.getPosition());
}
}*/
if (!ub.getJugador().getFortaleza().estadisticas.isPosicionDescubierta(i, j) &&
(distancia==0 || (ub.getPosition().distance(new Point(i,j))<=distancia))){
//(distancia==0 || (ub.getPosition().distance(new Point(i,j))+ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
if (ub.getPosition().distance(new Point(i,j))==distancia){
if (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j) )<destino.distance(ub.getJugador().getFortaleza().getPosition())){
destino=new Point(i,j);
distancia=destino.distance(ub.getPosition());
}
}
else
{
destino=new Point(i,j);
distancia=destino.distance(ub.getPosition());
}
}
}
}
if (destino!=null){
ub.setPeligrosidad(false);
ub.setDescubir(true);
ub.setARangoDeAccion(false);
ub.setWayPoints(Astar.intentoDePathFinding(destino, ub, ub.getJugador().getFortaleza()));
ub.destino=destino;
}
else{
return null;
}
}
nuevoComando.setType("move");
nuevoComando.setDestination((Point)ub.getWayPoints().get(0));
nuevoComando.setId(ub.getJugador().getIdComando());
nuevoComando.setIdUnit(ub.getId());
nuevoComando.setUnitType(ub.getType());
ub.setCommand(nuevoComando);
return nuevoComando;
}
}