package src.pathFinding;
import java.util.Iterator;
import java.util.List;
import src.UnidadBasica;
import com.gameloftProgrammersCup.clientInterfaces.Point;
public class Nodo {
public Point punto;
public Nodo padre;
public double gCost;
public double hCost;
public Nodo(Point punto,Nodo padre,Point destino,UnidadBasica unidad, List intermedios){
this.padre=padre;
this.punto=punto;
this.setHCost(destino,unidad.getMovementSpeed());
if (padre==null)
gCost=0;
else
this.setGCost(unidad,intermedios);
}
public double getGCost() {
return gCost;
}
public double getFCost() {
return this.getGCost()+this.getHCost();
}
public void setGCost(UnidadBasica unidad, List intermedios) {
int costo=0;
Iterator it=intermedios.iterator();
while (it.hasNext()){
Point punto=(Point)it.next();
if (unidad.isDescubir())
costo=costo-(unidad.getJugador().getFortaleza().estadisticas.mapaEstadistico[punto.getX()][punto.getY()].isDescubierto() ? 0 : 2);
if (unidad.isPeligrosidad())
costo=costo+Math.max(unidad.getJugador().getFortaleza().estadisticas.mapaEstadistico[punto.getX()][punto.getY()].getPeligrosidad(),0);
}
if (costo>0){
//System.out.println("prueba"+costo);
}
gCost = padre.getGCost()+20+costo;
}
public double getHCost() {
return hCost;
}
public void setHCost(Point destino,int rango) {
//double distancia=Math.sqrt((Math.abs(destino.getX())-Math.abs(this.getPunto().getX()))^2+(Math.abs(destino.getY())-Math.abs(this.getPunto().getY()))^2);
hCost = Astar.distanciaManhattan(destino, this.getPunto())*20;
}
public Nodo getPadre() {
return this.padre;
}
public void setPadre(Nodo padre) {
this.padre = padre;
}
public Point getPunto() {
return punto;
}
public void setPunto(Point punto) {
this.punto = punto;
}
public boolean equals(Nodo nodo){
if (this.getPunto().getX()==nodo.getPunto().getX() && this.getPunto().getY()==nodo.getPunto().getY() )
return true;
else
return false;
}
}