author | truebrain |
Wed, 26 Mar 2008 15:17:40 +0000 | |
branch | noai |
changeset 9823 | 0b7f816cf46f |
parent 9681 | 3997f1ce203a |
permissions | -rw-r--r-- |
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 |
/** @file ai_pathfinder.hpp Everything to query and build pathfinders */ |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
4 |
|
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
5 |
#ifndef AI_PATHFINDER_HPP |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
6 |
#define AI_PATHFINDER_HPP |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
7 |
|
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
8 |
#include "ai_object.hpp" |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
9 |
#include "ai_tilelist.hpp" |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
10 |
|
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 |
* A class that handles the base pathfinder. It is ment as |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
13 |
* parent-class for real implementation so all PFs have a general |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
14 |
* interface, but can have different backends. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
15 |
*/ |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
16 |
class AIPathFinder : public AIObject { |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
17 |
public: |
9669
366771e15a2c
(svn r10608) [NoAI] -Documentation: comment some functions to make Doxygen happy
truelight
parents:
9653
diff
changeset
|
18 |
/** |
366771e15a2c
(svn r10608) [NoAI] -Documentation: comment some functions to make Doxygen happy
truelight
parents:
9653
diff
changeset
|
19 |
* The type of pathfinders known in the game. |
366771e15a2c
(svn r10608) [NoAI] -Documentation: comment some functions to make Doxygen happy
truelight
parents:
9653
diff
changeset
|
20 |
*/ |
9652
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
21 |
enum PathFinderType { |
9681
3997f1ce203a
(svn r10630) [NoAI] -Fix: allow enums to not have a predefined value for Squirrel
truelight
parents:
9669
diff
changeset
|
22 |
PATHFINDER_ROAD, |
3997f1ce203a
(svn r10630) [NoAI] -Fix: allow enums to not have a predefined value for Squirrel
truelight
parents:
9669
diff
changeset
|
23 |
PATHFINDER_RAIL, |
9652
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 |
|
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 |
* The name of the class, needed by several sub-processes. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
28 |
*/ |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
29 |
static const char *GetClassName() { return "AIPathFinder"; } |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
30 |
|
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 |
* Find a route between 2 points. Any pathfinder might have specific |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
33 |
* functions to calibrate penalties and stuff. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
34 |
* @param start a list of tiles from where we can start. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
35 |
* @param end a list of tiles where we can end. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
36 |
* @return internal structure about how to make the route, or NULL if no route was found. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
37 |
*/ |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
38 |
virtual void *FindRoute(AITileList *start, AITileList *end) = 0; |
9652
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 |
* Build the route as found by FindRoute. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
42 |
* @param result the result 'void *' from FindRoute. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
43 |
* @return true if the route was build, false if anything went wrong. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
44 |
*/ |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
45 |
virtual bool BuildRoute(void *result) = 0; |
9652
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 |
/** |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
48 |
* When you are done with the route result, we have to free it in order to avoid memleaks. |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
49 |
* @note Always call this function on the result of FindRoute, even when you ran BuildRoute before! |
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
50 |
*/ |
9653
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
51 |
virtual void FreeRoute(void *result) = 0; |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
52 |
|
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
53 |
/** Keep the compilers happy */ |
50e2eb4abf46
(svn r10554) [NoAI] -Codechange: allow classes with virtual functions to still export their enums.
rubidium
parents:
9652
diff
changeset
|
54 |
virtual ~AIPathFinder() {} |
9652
c15bf5355b95
(svn r10553) [NoAI] -Add: added a framework for AIPathFinder() and implemented a really stupid AIPathFinderStupid()
truelight
parents:
diff
changeset
|
55 |
}; |
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 |
#endif /* AI_PATHFINDER_HPP */ |