package obstacles.types;

import permissions.ReadOnly;
import utils.Vec2;

/**
 * Classe abstraite regroupant les obstacles de collision formés d'une collection
 * de rectangles
 * @author pf
 *
 */

public abstract class ObstacleRectanglesCollection extends Obstacle
{
	public ObstacleRectanglesCollection(Vec2<ReadOnly> position)
	{
		super(position);
	}

	protected ObstacleRectangular[] ombresRobot;
	protected int nb_rectangles;

	@Override
	public boolean isProcheObstacle(Vec2<ReadOnly> point, int distance)
	{
		for(int i = 0; i < nb_rectangles; i++)
			if(ombresRobot[i].isProcheObstacle(point, distance))
				return true;
		return false;
	}

	@Override
	public boolean isInObstacle(Vec2<ReadOnly> point)
	{
		for(int i = 0; i < nb_rectangles; i++)
			if(ombresRobot[i].isInObstacle(point))
				return true;
		return false;
	}	
	
	/**
	 * Y a-t-il collision avec un obstacle fixe?
	 * Il y a collision s'il y a collision avec au moins un des robots tournés.
	 * @param o
	 * @return
	 */
	public boolean isColliding(Obstacle o)
	{
		for(int i = 0; i < nb_rectangles; i++)
			if(ombresRobot[i].isColliding(o))
				return true;
		return false;
	}

	/**
	 * Utilisé pour l'affichage
	 * @return
	 */
	public ObstacleRectangular[] getOmbresRobot()
	{
		return ombresRobot;
	}

	/**
	 * Y a-t-il collision avec un obstacle fixe?
	 * @return
	 */
	public boolean isCollidingObstacleFixe()
	{
		for(ObstaclesFixes o: ObstaclesFixes.values)
			if(isColliding(o.getObstacle()))
				return true;
		return false;
	}

}

@@ -414,18 +414,17 @@
 d int nb
-_r
+R
 ectangle
@@ -525,34 +525,33 @@
 nt i = 0; i %3C nb
-_r
+R
 ectangles; i++)%0A
@@ -723,34 +723,33 @@
 nt i = 0; i %3C nb
-_r
+R
 ectangles; i++)%0A
@@ -1057,10 +1057,9 @@
 %3C nb
-_r
+R
 ecta
@@ -1116,32 +1116,32 @@
 %09%09%09return true;%0A
+
 %09%09return false;%0A
@@ -1148,135 +1148,8 @@
 %09%7D%0A%0A
-%09/**%0A%09 * Utilis%C3%A9 pour l'affichage%0A%09 * @return%0A%09 */%0A%09public ObstacleRectangular%5B%5D getOmbresRobot()%0A%09%7B%0A%09%09return ombresRobot;%0A%09%7D%0A%0A
 %09/**

Debug ObstacleRectangular