summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/robospierre/element.c
diff options
context:
space:
mode:
authorNicolas Schodet2011-06-13 00:41:38 +0200
committerNicolas Schodet2011-06-13 00:41:38 +0200
commita86abce7d1f1567b2f67b42d97334d17fc52fd4d (patch)
treed7bfbccda2fa7c5533923116c6275bc309f58b61 /digital/io-hub/src/robospierre/element.c
parent1ba50389bff517512e417500f4c52ceeafdb06a5 (diff)
digital/io-hub: try to avoid dropped pawn
Diffstat (limited to 'digital/io-hub/src/robospierre/element.c')
-rw-r--r--digital/io-hub/src/robospierre/element.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/digital/io-hub/src/robospierre/element.c b/digital/io-hub/src/robospierre/element.c
index adc90a3a..e8ee44e0 100644
--- a/digital/io-hub/src/robospierre/element.c
+++ b/digital/io-hub/src/robospierre/element.c
@@ -739,22 +739,22 @@ element_get_pos (uint8_t element_id)
}
uint8_t
-element_blocking (uint8_t element_id)
+element_blocking (uint8_t element_id, uint8_t escape)
{
element_t e = element_get (element_id);
- return e.type == ELEMENT_TOWER;
+ return e.type == ELEMENT_TOWER || (!escape && e.type == ELEMENT_PAWN);
}
uint8_t
-element_blocking_path (vect_t a, vect_t b, int16_t ab)
+element_blocking_path (vect_t a, vect_t b, int16_t ab, uint8_t escape)
{
uint8_t i;
element_t e;
- /* For each obstacle, try to find an intersection. */
- for (i = 0; i < UTILS_COUNT (element_table); i++)
+ /* Only unload area are blocking. */
+ for (i = ELEMENT_UNLOAD_START; i <= ELEMENT_UNLOAD_END; i++)
{
e = element_get (i);
- if (e.type == ELEMENT_TOWER)
+ if (e.type == ELEMENT_TOWER || (!escape && e.type == ELEMENT_PAWN))
{
/* Compute square of distance to obstacle, see
* distance_segment_point in modules/math/geometry for the method