From a86abce7d1f1567b2f67b42d97334d17fc52fd4d Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 13 Jun 2011 00:41:38 +0200 Subject: digital/io-hub: try to avoid dropped pawn --- digital/io-hub/src/robospierre/element.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'digital/io-hub/src/robospierre/element.c') 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 -- cgit v1.2.3