truelight@9652: /* $Id$ */ truelight@9652: truelight@9652: #include "ai_pathfinder_stupid.hpp" truelight@9652: #include "ai_road.hpp" truelight@9652: #include "ai_testmode.hpp" truelight@9652: truelight@9652: bool AIPathFinderStupid::BuildRealRoute(TileIndex start, TileIndex end, bool continue_on_error) truelight@9652: { truelight@9652: bool ret = true; truelight@9652: uint sx, sy, ex, ey; truelight@9652: truelight@9652: sx = TileX(start); truelight@9652: sy = TileY(start); truelight@9652: ex = TileX(end); truelight@9652: ey = TileY(end); truelight@9652: truelight@9652: /* Build the road, really stupid: first the X, than the Y */ truelight@9652: if (this->type == PATHFINDER_ROAD) { truelight@9652: AIRoad road; truelight@9652: if (!road.BuildRoad(start, TileXY(ex, sy))) ret = false; truelight@9652: if (!road.BuildRoad(TileXY(ex, sy), end)) ret = false; truelight@9652: if (!ret && !continue_on_error) return false; truelight@9652: } truelight@9652: truelight@9652: return ret; truelight@9652: } truelight@9652: truelight@9652: void *AIPathFinderStupid::FindRoute(AITileList *start, AITileList *end) truelight@9652: { truelight@9652: TileIndex s, e; truelight@9652: truelight@9652: s = start->Begin(); truelight@9652: e = end->Begin(); truelight@9652: truelight@9652: /* Force test-mode */ truelight@9652: { truelight@9652: AITestMode mode; truelight@9652: if (!this->BuildRealRoute(s, e, false)) return false; truelight@9652: } truelight@9652: truelight@9652: Path *result = new Path; truelight@9652: result->start = s; truelight@9652: result->end = e; truelight@9652: return result; truelight@9652: } truelight@9652: truelight@9652: bool AIPathFinderStupid::BuildRoute(void *res) truelight@9652: { truelight@9652: if (res == NULL) return false; truelight@9652: Path *result = (Path *)res; truelight@9652: truelight@9652: return this->BuildRealRoute(result->start, result->end, true); truelight@9652: } truelight@9652: truelight@9652: void AIPathFinderStupid::FreeRoute(void *res) truelight@9652: { truelight@9652: if (res == NULL) return; truelight@9652: Path *result = (Path *)res; truelight@9652: delete result; truelight@9652: }