public class API {
	public static final int LIMITE_ASPIRATION = Interface.LIMITE_ASPIRATION;
	public static boolean aGauche;
	public static void init()
	{
		aGauche = Interface.ma_base()[0].x==0;
	}
	public static int moi()
	{
		return Interface.moi();
	}
	
	public static Position inv(Position p)
	{
		Position p2 = new Position();
		p2.y = (38-p.x);
		p2.x = (38-p.y);
		return p2;
	}
	
	public static void invRef(Position p)
	{
		int tmp = (38-p.y);
		p.y = (38-p.x);
		p.x = tmp;
	}

	public static boolean est_libre(Position p) {
		if(!aGauche)
			return Interface.est_libre(inv(p));
		else
			return Interface.est_libre(p);
	}

	public static Position[] ma_base() {
		Position[] mabaz = Interface.ma_base();
		if(!aGauche)
			for(int i = 0 ; i < mabaz.length ; i++)
				mabaz[i] = inv(mabaz[i]);
		
		return mabaz;
	}

	public static boolean est_debris(Position p) {
		if(!aGauche)
			return Interface.est_debris(inv(p));
		else
			return Interface.est_debris(p);
	}
	

	public static boolean est_tuyau(Position position) {
		if(!aGauche)
			return Interface.est_tuyau(inv(position));
		else
			return Interface.est_tuyau(position);
	}

	public static Erreur deblayer(Position p) {
		if(!aGauche)
			return Interface.deblayer(inv(p));
		else
			return Interface.deblayer(p);
		
	}

	public static Erreur construire(Position p) {
		if(!aGauche)
			return Interface.construire(inv(p));
		else
			return Interface.construire(p);
		
	}
	
	public static PulsarInfo info_pulsar(Position p) {
		if(!aGauche)
			return Interface.info_pulsar(inv(p));
		else
			return Interface.info_pulsar(p);
	}

	public static int tour_actuel() {
		return Interface.tour_actuel();
	}
	public static int puissance_aspiration(Position p) {
		if(!aGauche)
			return Interface.puissance_aspiration(inv(p));
		else
			return Interface.puissance_aspiration(p);
	}
	public static Erreur deplacer_aspiration(Position src, Position dest) {
		if(!aGauche)
			return Interface.deplacer_aspiration(inv(src), inv(dest));
		else
			return Interface.deplacer_aspiration(src, dest);
		
	}
	public static Position[] liste_pulsars() {
		Position[] mabaz = Interface.liste_pulsars();
		if(!aGauche)
			for(int i = 0 ; i < mabaz.length ; i++)
				mabaz[i] = inv(mabaz[i]);
		
		return mabaz;
	}
	public static Position[] base_ennemie() {
		Position[] mabaz = Interface.base_ennemie();
		if(!aGauche)
			for(int i = 0 ; i < mabaz.length ; i++)
				mabaz[i] = inv(mabaz[i]);
		
		return mabaz;
	}
	public static boolean est_super_tuyau(Position position) {
		if(!aGauche)
			return Interface.est_super_tuyau(inv(position));
		else
			return Interface.est_super_tuyau(position);
	}
	public static Erreur ameliorer(Position position) {
		if(!aGauche)
			return Interface.ameliorer(inv(position));
		else
			return Interface.ameliorer(position);
	}
	public static double charges_presentes(Position position) {
		if(!aGauche)
			return Interface.charges_presentes(inv(position));
		else
			return Interface.charges_presentes(position);
	}
	public static void detruire(Position position) {
		if(!aGauche)
			return Interface.detryure(inv(position));
		else
			return Interface.charges_presentes(position);
		
	}
}	
