Package src.estrategias

Source Code of src.estrategias.EstrategiaColectorNormal

package src.estrategias;

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

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

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

public class EstrategiaColectorNormal extends EstrategiaUnidad {

  @Override
  public ClientCommand accionDeTurno(UnidadBasica unidad) {
   
    if (unidad.getCommand()==null){
        ClientCommand nuevoComando=new ClientCommand()
        nuevoComando.setId(unidad.getJugador().getIdComando());
        nuevoComando.setIdUnit(unidad.getId());
       
        if (unidad.getWayPoints()!=null &&unidad.getWayPoints().size()>0){
       
          nuevoComando.setType("move");
          nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
          nuevoComando.setUnitType(unidad.getType());
          unidad.setCommand(nuevoComando);
          return nuevoComando;
        }

       
        if (unidad.resourcesStored()<unidad.getMaxLoad()){//recolecto
          //calculo mina
          Set recursos=unidad.getJugador().getFortaleza().getKnownResources();
          Iterator it2= recursos.iterator();
          int distancia=99999;
          Mina minaCercana=new Mina();
          while (it2.hasNext()){
            Mina recurso=(Mina)it2.next();
            if (!recurso.isMaxedOut()
                && recurso.getPosition().distance(unidad.getPosition())+Math.max(Fortaleza.instanciaFortaleza.estadisticas.mapaEstadistico[recurso.getPosition().getX()][recurso.getPosition().getY()].getPeligrosidad(),0)<distancia
                && (recurso.resourcesStored()<unidad.getJugador().getFortaleza().resourcesPayload || unidad.getJugador().getFortaleza().resourcesPayload==0)){//chequear capacidad de mina
              minaCercana.setPosition(recurso.getPosition());
              distancia=minaCercana.getPosition().distance(unidad.getPosition());
            }
          }
         
          if (minaCercana.getPosition()!=null){
            if (unidad.getPosition().distance(minaCercana.getPosition())<=unidad.getActionRange()){
              nuevoComando.setType("collect");
              nuevoComando.setDestination(minaCercana.getPosition());
            }
            else//voy a la mina mas cercana, similiar al de la fortaleza, refactorizar
            {
             
              if (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 || !Astar.verificarCamino(unidad)){
                unidad.setPeligrosidad(true);
                unidad.setDescubir(false);
                unidad.setARangoDeAccion(true);
                unidad.setWayPoints(Astar.intentoDePathFinding(minaCercana.getPosition(), unidad, unidad.getJugador().getFortaleza()));

                unidad.destino=minaCercana.getPosition();
              }
             
              nuevoComando.setType("move");
              nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
            }
            nuevoComando.setUnitType(unidad.getType());
            unidad.setCommand(nuevoComando);
            return nuevoComando;
          }
        }
        if (unidad.resourcesStored()!=0){
          if (unidad.getPosition().distance(unidad.getJugador().getFortaleza().getPosition())<=unidad.getActionRange()){ // deposito en la fortaleza
            nuevoComando.setType("collect");
            nuevoComando.setDestination(unidad.getJugador().getFortaleza().getPosition());
          }
          else// voy a la fortaleza
          {
            if (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 || !Astar.verificarCamino(unidad)){
              unidad.setPeligrosidad(true);
              unidad.setDescubir(false);
              unidad.setARangoDeAccion(true);
              unidad.setWayPoints(Astar.intentoDePathFinding(unidad.getJugador().getFortaleza().getPosition(), unidad, unidad.getJugador().getFortaleza()));
              unidad.destino=unidad.getJugador().getFortaleza().getPosition();
            }
            nuevoComando.setType("move");
            nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
          }
          nuevoComando.setUnitType(unidad.getType());
          unidad.setCommand(nuevoComando);
          return nuevoComando;
        }
      }
    return null;
   

  }

}
TOP

Related Classes of src.estrategias.EstrategiaColectorNormal

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.