import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Util {

	public static Position[] getPortalInRange(int player, int range) {
		Position pl = Interface.position_agent(player);
		Position[] portal = Interface.liste_portails();
		ArrayList<Position> re = new ArrayList<Position>();
		for (Position p : portal) {
			if (Interface.distance(pl, p) <= range) {
				re.add(p);
			}
		}
		return (Position[]) re.toArray();
	}

	public static Position getNearestPortal(int player) {
		Position pl = Interface.position_agent(player);
		int min = Integer.MAX_VALUE;
		Position[] portal = Interface.liste_portails();
		Position pF = null;
		for (Position p : portal) {
			if (Interface.distance(pl, p) < min) {
				min = Interface.distance(pl, p);
				pF = p;
			}
		}
		return pF;
	}

	public static Position[] getPortalInRangeSort(int player, int range) {
		Position[] f = getPortalInRange(player, range);
		final Position pl = Interface.position_agent(player);
		Arrays.sort(f, new Comparator<Position>() {

			@Override
			public int compare(Position pos1, Position pos2) {
				int d1 = Interface.distance(pos1, pl);
				int d2 = Interface.distance(pos2, pl);
				return d1 - d2;
			}
		});
		return f;
	}

	public static Position getBestPortalInRange(int player, int range) {
		Position[] pos = getPortalInRange(player, range);
		int max = Integer.MIN_VALUE;
		Position pF = null;
		for (Position p : pos) {
			if (!Interface.case_dans_champ(p)) {
				if (Interface.portail_joueur(p) == Interface.adversaire()) { // adv
					if (Prologin.aPtsLeft >= (Interface.portail_boucliers(p) * Interface.COUT_NEUTRALISATION_BOUCLIER)
							+ Interface.COUT_NEUTRALISATION + Interface.COUT_CAPTURE) {
						Lien[] lien = Interface.liste_liens();
						for (Lien l : lien) {

						}
					}
				} else if (Interface.portail_joueur(p) == -1) { // neutre

				} else { // me

				}
			}
		}
		return pF;
	}
}
