if( ub.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;
}