src/ai/api/ai_pathfinder_stupid.cpp
author truelight
Fri, 13 Jul 2007 19:12:43 +0000
branchnoai
changeset 9652 c15bf5355b95
child 9723 eee46cb39750
permissions -rw-r--r--
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
9652
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     1
/* $Id$ */
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     2
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     3
#include "ai_pathfinder_stupid.hpp"
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     4
#include "ai_road.hpp"
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     5
#include "ai_testmode.hpp"
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     6
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     7
bool AIPathFinderStupid::BuildRealRoute(TileIndex start, TileIndex end, bool continue_on_error)
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     8
{
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
     9
	bool ret = true;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    10
	uint sx, sy, ex, ey;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    11
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    12
	sx = TileX(start);
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    13
	sy = TileY(start);
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    14
	ex = TileX(end);
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    15
	ey = TileY(end);
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    16
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    17
	/* Build the road, really stupid: first the X, than the Y */
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    18
	if (this->type == PATHFINDER_ROAD) {
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    19
		AIRoad road;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    20
		if (!road.BuildRoad(start, TileXY(ex, sy))) ret = false;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    21
		if (!road.BuildRoad(TileXY(ex, sy), end)) ret = false;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    22
		if (!ret && !continue_on_error) return false;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    23
	}
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    24
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    25
	return ret;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    26
}
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    27
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    28
void *AIPathFinderStupid::FindRoute(AITileList *start, AITileList *end)
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    29
{
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    30
	TileIndex s, e;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    31
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    32
	s = start->Begin();
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    33
	e = end->Begin();
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    34
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    35
	/* Force test-mode */
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    36
	{
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    37
		AITestMode mode;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    38
		if (!this->BuildRealRoute(s, e, false)) return false;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    39
	}
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    40
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    41
	Path *result = new Path;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    42
	result->start = s;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    43
	result->end = e;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    44
	return result;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    45
}
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    46
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    47
bool AIPathFinderStupid::BuildRoute(void *res)
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    48
{
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    49
	if (res == NULL) return false;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    50
	Path *result = (Path *)res;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    51
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    52
	return this->BuildRealRoute(result->start, result->end, true);
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    53
}
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    54
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    55
void AIPathFinderStupid::FreeRoute(void *res)
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    56
{
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    57
	if (res == NULL) return;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    58
	Path *result = (Path *)res;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    59
	delete result;
c15bf5355b95 (svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff changeset
    60
}