author | tron |
Mon, 05 Jun 2006 16:08:06 +0000 | |
changeset 3968 | 3dbc765cc171 |
parent 3644 | 7c9a6a91873b |
child 4000 | 4009d092b306 |
permissions | -rw-r--r-- |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
1 |
/* $Id$ */ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
2 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
3 |
#include "../../stdafx.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
4 |
#include "../../openttd.h" |
3234
a2791a480b71
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3184
diff
changeset
|
5 |
#include "../../bridge_map.h" |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
6 |
#include "../../debug.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
7 |
#include "../../functions.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
8 |
#include "../../map.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
9 |
#include "../../tile.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
10 |
#include "../../command.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
11 |
#include "trolly.h" |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
12 |
#include "../../depot.h" |
3179 | 13 |
#include "../../tunnel_map.h" |
3359
633290bf1117
(svn r4154) -Moved MAX_BRIDGES in bridge.h and made it an enum. This makes two drops ...
celestar
parents:
3234
diff
changeset
|
14 |
#include "../../bridge.h" |
2682
7fa4b202b9f0
(svn r3224) -Add: Allow the NewAI to work in Multiplayer Games (switchable via patch
truelight
parents:
2549
diff
changeset
|
15 |
#include "../ai.h" |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
16 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
17 |
#define TEST_STATION_NO_DIR 0xFF |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
18 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
19 |
// Tests if a station can be build on the given spot |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
20 |
// TODO: make it train compatible |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
21 |
static bool TestCanBuildStationHere(TileIndex tile, byte dir) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
22 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
23 |
Player *p = GetPlayer(_current_player); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
24 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
25 |
if (dir == TEST_STATION_NO_DIR) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
26 |
int32 ret; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
27 |
// TODO: currently we only allow spots that can be access from al 4 directions... |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
28 |
// should be fixed!!! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
29 |
for (dir = 0; dir < 4; dir++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
30 |
ret = AiNew_Build_Station(p, p->ainew.tbt, tile, 1, 1, dir, DC_QUERY_COST); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
31 |
if (!CmdFailed(ret)) return true; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
32 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
33 |
return false; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
34 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
35 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
36 |
// return true if command succeeded, so the inverse of CmdFailed() |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
37 |
return !CmdFailed(AiNew_Build_Station(p, p->ainew.tbt, tile, 1, 1, dir, DC_QUERY_COST)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
38 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
39 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
40 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
41 |
static bool IsRoad(TileIndex tile) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
42 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
43 |
return |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
44 |
// MP_STREET, but not a road depot? |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
45 |
(IsTileType(tile, MP_STREET) && !IsTileDepotType(tile, TRANSPORT_ROAD)) || |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
46 |
(IsTileType(tile, MP_TUNNELBRIDGE) && ( |
3184
118a520164e4
(svn r3830) Move IsTunnelTile() from tile.h to tunnel_map.h and add IsTunnel(), which just checks for a tunnel, but not the tile type as IsTunnelTile() does
tron
parents:
3179
diff
changeset
|
47 |
(IsTunnel(tile) && GetTunnelTransportType(tile) == TRANSPORT_ROAD) || |
3234
a2791a480b71
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3184
diff
changeset
|
48 |
(IsBridge(tile) && GetBridgeTransportType(tile) == TRANSPORT_ROAD) |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
49 |
)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
50 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
51 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
52 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
53 |
// Checks if a tile 'a' is between the tiles 'b' and 'c' |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
54 |
#define TILES_BETWEEN(a, b, c) (TileX(a) >= TileX(b) && TileX(a) <= TileX(c) && TileY(a) >= TileY(b) && TileY(a) <= TileY(c)) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
55 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
56 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
57 |
// Check if the current tile is in our end-area |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
58 |
static int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
59 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
60 |
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
61 |
// It is not allowed to have a station on the end of a bridge or tunnel ;) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
62 |
if (current->path.node.user_data[0] != 0) return AYSTAR_DONE; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
63 |
if (TILES_BETWEEN(current->path.node.tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br)) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
64 |
if (IsTileType(current->path.node.tile, MP_CLEAR) || IsTileType(current->path.node.tile, MP_TREES)) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
65 |
if (current->path.parent == NULL || TestCanBuildStationHere(current->path.node.tile, AiNew_GetDirection(current->path.parent->node.tile, current->path.node.tile))) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
66 |
return AYSTAR_FOUND_END_NODE; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
67 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
68 |
return AYSTAR_DONE; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
69 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
70 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
71 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
72 |
// Calculates the hash |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
73 |
// Currently it is a 10 bit hash, so the hash array has a max depth of 6 bits (so 64) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
74 |
static uint AiPathFinder_Hash(uint key1, uint key2) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
75 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
76 |
return (TileX(key1) & 0x1F) + ((TileY(key1) & 0x1F) << 5); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
77 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
78 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
79 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
80 |
// Clear the memory of all the things |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
81 |
static void AyStar_AiPathFinder_Free(AyStar *aystar) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
82 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
83 |
AyStarMain_Free(aystar); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
84 |
free(aystar); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
85 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
86 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
87 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
88 |
static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current, OpenListNode *parent); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
89 |
static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current, OpenListNode *parent); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
90 |
static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *current); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
91 |
static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *current); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
92 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
93 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
94 |
// This creates the AiPathFinder |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
95 |
AyStar *new_AyStar_AiPathFinder(int max_tiles_around, Ai_PathFinderInfo *PathFinderInfo) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
96 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
97 |
PathNode start_node; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
98 |
uint x; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
99 |
uint y; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
100 |
// Create AyStar |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
101 |
AyStar *result = malloc(sizeof(AyStar)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
102 |
init_AyStar(result, AiPathFinder_Hash, 1 << 10); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
103 |
// Set the function pointers |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
104 |
result->CalculateG = AyStar_AiPathFinder_CalculateG; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
105 |
result->CalculateH = AyStar_AiPathFinder_CalculateH; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
106 |
result->EndNodeCheck = AyStar_AiPathFinder_EndNodeCheck; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
107 |
result->FoundEndNode = AyStar_AiPathFinder_FoundEndNode; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
108 |
result->GetNeighbours = AyStar_AiPathFinder_GetNeighbours; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
109 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
110 |
result->free = AyStar_AiPathFinder_Free; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
111 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
112 |
// Set some information |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
113 |
result->loops_per_tick = AI_PATHFINDER_LOOPS_PER_TICK; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
114 |
result->max_path_cost = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
115 |
result->max_search_nodes = AI_PATHFINDER_MAX_SEARCH_NODES; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
116 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
117 |
// Set the user_data to the PathFinderInfo |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
118 |
result->user_target = PathFinderInfo; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
119 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
120 |
// Set the start node |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
121 |
start_node.parent = NULL; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
122 |
start_node.node.direction = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
123 |
start_node.node.user_data[0] = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
124 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
125 |
// Now we add all the starting tiles |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
126 |
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
127 |
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
128 |
start_node.node.tile = TileXY(x, y); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
129 |
result->addstart(result, &start_node.node, 0); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
130 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
131 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
132 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
133 |
return result; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
134 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
135 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
136 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
137 |
// To reuse AyStar we sometimes have to clean all the memory |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
138 |
void clean_AyStar_AiPathFinder(AyStar *aystar, Ai_PathFinderInfo *PathFinderInfo) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
139 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
140 |
PathNode start_node; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
141 |
uint x; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
142 |
uint y; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
143 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
144 |
aystar->clear(aystar); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
145 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
146 |
// Set the user_data to the PathFinderInfo |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
147 |
aystar->user_target = PathFinderInfo; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
148 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
149 |
// Set the start node |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
150 |
start_node.parent = NULL; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
151 |
start_node.node.direction = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
152 |
start_node.node.user_data[0] = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
153 |
start_node.node.tile = PathFinderInfo->start_tile_tl; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
154 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
155 |
// Now we add all the starting tiles |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
156 |
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
157 |
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
158 |
if (!(IsTileType(TileXY(x, y), MP_CLEAR) || IsTileType(TileXY(x, y), MP_TREES))) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
159 |
if (!TestCanBuildStationHere(TileXY(x, y), TEST_STATION_NO_DIR)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
160 |
start_node.node.tile = TileXY(x, y); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
161 |
aystar->addstart(aystar, &start_node.node, 0); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
162 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
163 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
164 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
165 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
166 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
167 |
// The h-value, simple calculation |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
168 |
static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current, OpenListNode *parent) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
169 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
170 |
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
171 |
int r, r2; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
172 |
if (PathFinderInfo->end_direction != AI_PATHFINDER_NO_DIRECTION) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
173 |
// The station is pointing to a direction, add a tile towards that direction, so the H-value is more accurate |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
174 |
r = DistanceManhattan(current->tile, PathFinderInfo->end_tile_tl + TileOffsByDir(PathFinderInfo->end_direction)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
175 |
r2 = DistanceManhattan(current->tile, PathFinderInfo->end_tile_br + TileOffsByDir(PathFinderInfo->end_direction)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
176 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
177 |
// No direction, so just get the fastest route to the station |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
178 |
r = DistanceManhattan(current->tile, PathFinderInfo->end_tile_tl); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
179 |
r2 = DistanceManhattan(current->tile, PathFinderInfo->end_tile_br); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
180 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
181 |
// See if the bottomright is faster than the topleft.. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
182 |
if (r2 < r) r = r2; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
183 |
return r * AI_PATHFINDER_H_MULTIPLER; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
184 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
185 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
186 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
187 |
// We found the end.. let's get the route back and put it in an array |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
188 |
static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *current) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
189 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
190 |
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
191 |
uint i = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
192 |
PathNode *parent = ¤t->path; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
193 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
194 |
do { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
195 |
PathFinderInfo->route_extra[i] = parent->node.user_data[0]; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
196 |
PathFinderInfo->route[i++] = parent->node.tile; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
197 |
if (i > lengthof(PathFinderInfo->route)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
198 |
// We ran out of space for the PathFinder |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
199 |
DEBUG(ai, 0)("[AiPathFinder] Ran out of space in the route[] array!!!"); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
200 |
PathFinderInfo->route_length = -1; // -1 indicates out of space |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
201 |
return; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
202 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
203 |
parent = parent->parent; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
204 |
} while (parent != NULL); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
205 |
PathFinderInfo->route_length = i; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
206 |
DEBUG(ai, 1)("[Ai-PathFinding] Found route of %d nodes long in %d nodes of searching", i, Hash_Size(&aystar->ClosedListHash)); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
207 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
208 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
209 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
210 |
// What tiles are around us. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
211 |
static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *current) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
212 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
213 |
uint i; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
214 |
int ret; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
215 |
int dir; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
216 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
217 |
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
218 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
219 |
aystar->num_neighbours = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
220 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
221 |
// Go through all surrounding tiles and check if they are within the limits |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
222 |
for (i = 0; i < 4; i++) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
223 |
TileIndex ctile = current->path.node.tile; // Current tile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
224 |
TileIndex atile = ctile + TileOffsByDir(i); // Adjacent tile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
225 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
226 |
if (TileX(atile) > 1 && TileX(atile) < MapMaxX() - 1 && |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
227 |
TileY(atile) > 1 && TileY(atile) < MapMaxY() - 1) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
228 |
// We also directly test if the current tile can connect to this tile.. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
229 |
// We do this simply by just building the tile! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
230 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
231 |
// If the next step is a bridge, we have to enter it the right way |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
232 |
if (!PathFinderInfo->rail_or_road && IsRoad(atile)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
233 |
if (IsTileType(atile, MP_TUNNELBRIDGE)) { |
3184
118a520164e4
(svn r3830) Move IsTunnelTile() from tile.h to tunnel_map.h and add IsTunnel(), which just checks for a tunnel, but not the tile type as IsTunnelTile() does
tron
parents:
3179
diff
changeset
|
234 |
if (IsTunnel(atile)) { |
3179 | 235 |
if (GetTunnelDirection(atile) != i) continue; |
3184
118a520164e4
(svn r3830) Move IsTunnelTile() from tile.h to tunnel_map.h and add IsTunnel(), which just checks for a tunnel, but not the tile type as IsTunnelTile() does
tron
parents:
3179
diff
changeset
|
236 |
} else { |
3484
6248e4748d1a
(svn r4333) Revert back to a direct map access in one case until the exact conditions for this piece of code are investigated. The IsRoad() function is causing me headaches...
tron
parents:
3395
diff
changeset
|
237 |
if ((_m[atile].m5 & 1U) != DiagDirToAxis(i)) continue; |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
238 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
239 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
240 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
241 |
// But also if we are on a bridge, we can only move a certain direction |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
242 |
if (!PathFinderInfo->rail_or_road && IsRoad(ctile)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
243 |
if (IsTileType(ctile, MP_TUNNELBRIDGE)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
244 |
// An existing bridge/tunnel... let's test the direction ;) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
245 |
if ((_m[ctile].m5 & 1U) != (i & 1)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
246 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
247 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
248 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
249 |
if ((AI_PATHFINDER_FLAG_BRIDGE & current->path.node.user_data[0]) != 0 || |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
250 |
(AI_PATHFINDER_FLAG_TUNNEL & current->path.node.user_data[0]) != 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
251 |
// We are a bridge/tunnel, how cool!! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
252 |
// This means we can only point forward.. get the direction from the user_data |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
253 |
if (i != (current->path.node.user_data[0] >> 8)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
254 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
255 |
dir = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
256 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
257 |
// First, check if we have a parent |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
258 |
if (current->path.parent == NULL && current->path.node.user_data[0] == 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
259 |
// If not, this means we are at the starting station |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
260 |
if (PathFinderInfo->start_direction != AI_PATHFINDER_NO_DIRECTION) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
261 |
// We do need a direction? |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
262 |
if (AiNew_GetDirection(ctile, atile) != PathFinderInfo->start_direction) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
263 |
// We are not pointing the right way, invalid tile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
264 |
continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
265 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
266 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
267 |
} else if (current->path.node.user_data[0] == 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
268 |
if (PathFinderInfo->rail_or_road) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
269 |
// Rail check |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
270 |
dir = AiNew_GetRailDirection(current->path.parent->node.tile, ctile, atile); |
2682
7fa4b202b9f0
(svn r3224) -Add: Allow the NewAI to work in Multiplayer Games (switchable via patch
truelight
parents:
2549
diff
changeset
|
271 |
ret = AI_DoCommand(ctile, 0, dir, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
272 |
if (CmdFailed(ret)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
273 |
#ifdef AI_PATHFINDER_NO_90DEGREES_TURN |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
274 |
if (current->path.parent->parent != NULL) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
275 |
// Check if we don't make a 90degree curve |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
276 |
int dir1 = AiNew_GetRailDirection(current->path.parent->parent->node.tile, current->path.parent->node.tile, ctile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
277 |
if (_illegal_curves[dir1] == dir || _illegal_curves[dir] == dir1) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
278 |
continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
279 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
280 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
281 |
#endif |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
282 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
283 |
// Road check |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
284 |
dir = AiNew_GetRoadDirection(current->path.parent->node.tile, ctile, atile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
285 |
if (IsRoad(ctile)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
286 |
if (IsTileType(ctile, MP_TUNNELBRIDGE)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
287 |
// We have a bridge, how nicely! We should mark it... |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
288 |
dir = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
289 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
290 |
// It already has road.. check if we miss any bits! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
291 |
if ((_m[ctile].m5 & dir) != dir) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
292 |
// We do miss some pieces :( |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
293 |
dir &= ~_m[ctile].m5; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
294 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
295 |
dir = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
296 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
297 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
298 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
299 |
// Only destruct things if it is MP_CLEAR of MP_TREES |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
300 |
if (dir != 0) { |
2682
7fa4b202b9f0
(svn r3224) -Add: Allow the NewAI to work in Multiplayer Games (switchable via patch
truelight
parents:
2549
diff
changeset
|
301 |
ret = AI_DoCommand(ctile, dir, 0, DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
302 |
if (CmdFailed(ret)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
303 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
304 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
305 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
306 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
307 |
// The tile can be connected |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
308 |
aystar->neighbours[aystar->num_neighbours].tile = atile; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
309 |
aystar->neighbours[aystar->num_neighbours].user_data[0] = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
310 |
aystar->neighbours[aystar->num_neighbours++].direction = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
311 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
312 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
313 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
314 |
// Next step, check for bridges and tunnels |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
315 |
if (current->path.parent != NULL && current->path.node.user_data[0] == 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
316 |
// First we get the dir from this tile and his parent |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
317 |
DiagDirection dir = AiNew_GetDirection(current->path.parent->node.tile, current->path.node.tile); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
318 |
// It means we can only walk with the track, so the bridge has to be in the same direction |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
319 |
TileIndex tile = current->path.node.tile; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
320 |
TileIndex new_tile = tile; |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
321 |
Slope tileh = GetTileSlope(tile, NULL); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
322 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
323 |
// Bridges can only be build on land that is not flat |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
324 |
// And if there is a road or rail blocking |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
325 |
if (tileh != SLOPE_FLAT || |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
326 |
(PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_STREET)) || |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
327 |
(!PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_RAILWAY))) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
328 |
for (;;) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
329 |
new_tile += TileOffsByDir(dir); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
330 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
331 |
// Precheck, is the length allowed? |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
332 |
if (!CheckBridge_Stuff(0, GetBridgeLength(tile, new_tile))) break; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
333 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
334 |
// Check if we hit the station-tile.. we don't like that! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
335 |
if (TILES_BETWEEN(new_tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br)) break; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
336 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
337 |
// Try building the bridge.. |
2682
7fa4b202b9f0
(svn r3224) -Add: Allow the NewAI to work in Multiplayer Games (switchable via patch
truelight
parents:
2549
diff
changeset
|
338 |
ret = AI_DoCommand(tile, new_tile, (0 << 8) + (MAX_BRIDGES / 2), DC_AUTO, CMD_BUILD_BRIDGE); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
339 |
if (CmdFailed(ret)) continue; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
340 |
// We can build a bridge here.. add him to the neighbours |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
341 |
aystar->neighbours[aystar->num_neighbours].tile = new_tile; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
342 |
aystar->neighbours[aystar->num_neighbours].user_data[0] = AI_PATHFINDER_FLAG_BRIDGE + (dir << 8); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
343 |
aystar->neighbours[aystar->num_neighbours++].direction = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
344 |
// We can only have 12 neighbours, and we need 1 left for tunnels |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
345 |
if (aystar->num_neighbours == 11) break; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
346 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
347 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
348 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
349 |
// Next, check for tunnels! |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
350 |
// Tunnels can only be built on slopes corresponding to the direction |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
351 |
// For now, we check both sides for this tile.. terraforming gives fuzzy result |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
352 |
if ((dir == DIAGDIR_NE && tileh == SLOPE_NE) || |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
353 |
(dir == DIAGDIR_SE && tileh == SLOPE_SE) || |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
354 |
(dir == DIAGDIR_SW && tileh == SLOPE_SW) || |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
355 |
(dir == DIAGDIR_NW && tileh == SLOPE_NW)) { |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
356 |
// Now simply check if a tunnel can be build |
2682
7fa4b202b9f0
(svn r3224) -Add: Allow the NewAI to work in Multiplayer Games (switchable via patch
truelight
parents:
2549
diff
changeset
|
357 |
ret = AI_DoCommand(tile, (PathFinderInfo->rail_or_road?0:0x200), 0, DC_AUTO, CMD_BUILD_TUNNEL); |
3055
ed20cba49858
(svn r3644) Don't use FindLandscapeHeightByTile() when it's overkill - often it was just a complicated way of writing GetTileSlope(tile, NULL)
tron
parents:
3033
diff
changeset
|
358 |
tileh = GetTileSlope(_build_tunnel_endtile, NULL); |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
359 |
if (!CmdFailed(ret) && (tileh == SLOPE_SW || tileh == SLOPE_SE || tileh == SLOPE_NW || tileh == SLOPE_NE)) { |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
360 |
aystar->neighbours[aystar->num_neighbours].tile = _build_tunnel_endtile; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
361 |
aystar->neighbours[aystar->num_neighbours].user_data[0] = AI_PATHFINDER_FLAG_TUNNEL + (dir << 8); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
362 |
aystar->neighbours[aystar->num_neighbours++].direction = 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
363 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
364 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
365 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
366 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
367 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
368 |
|
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
369 |
extern uint GetRailFoundation(Slope tileh, TrackBits bits); // XXX function declaration in .c |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
370 |
extern uint GetRoadFoundation(Slope tileh, uint bits); // XXX function declaration in .c |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
371 |
extern uint GetBridgeFoundation(Slope tileh, Axis); // XXX function declaration in .c |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
372 |
enum { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
373 |
BRIDGE_NO_FOUNDATION = 1 << 0 | 1 << 3 | 1 << 6 | 1 << 9 | 1 << 12, |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
374 |
}; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
375 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
376 |
// The most important function: it calculates the g-value |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
377 |
static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current, OpenListNode *parent) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
378 |
{ |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
379 |
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
380 |
int r, res = 0; |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
381 |
Slope tileh = GetTileSlope(current->tile, NULL); |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
382 |
Slope parent_tileh = GetTileSlope(parent->path.node.tile, NULL); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
383 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
384 |
// Check if we hit the end-tile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
385 |
if (TILES_BETWEEN(current->tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
386 |
// We are at the end-tile, check if we had a direction or something... |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
387 |
if (PathFinderInfo->end_direction != AI_PATHFINDER_NO_DIRECTION && AiNew_GetDirection(current->tile, parent->path.node.tile) != PathFinderInfo->end_direction) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
388 |
// We are not pointing the right way, invalid tile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
389 |
return AYSTAR_INVALID_NODE; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
390 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
391 |
// If it was valid, drop out.. we don't build on the endtile |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
392 |
return 0; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
393 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
394 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
395 |
// Give everything a small penalty |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
396 |
res += AI_PATHFINDER_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
397 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
398 |
if (!PathFinderInfo->rail_or_road) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
399 |
// Road has the lovely advantage it can use other road... check if |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
400 |
// the current tile is road, and if so, give a good bonus |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
401 |
if (IsRoad(current->tile)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
402 |
res -= AI_PATHFINDER_ROAD_ALREADY_EXISTS_BONUS; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
403 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
404 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
405 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
406 |
// We should give a penalty when the tile is going up or down.. this is one way to do so! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
407 |
// Too bad we have to count it from the parent.. but that is not so bad. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
408 |
// We also dislike long routes on slopes, since they do not look too realistic |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
409 |
// when there is a flat land all around, they are more expensive to build, and |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
410 |
// especially they essentially block the ability to connect or cross the road |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
411 |
// from one side. |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
412 |
if (parent_tileh != SLOPE_FLAT && parent->path.parent != NULL) { |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
413 |
// Skip if the tile was from a bridge or tunnel |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
414 |
if (parent->path.node.user_data[0] == 0 && current->user_data[0] == 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
415 |
if (PathFinderInfo->rail_or_road) { |
3055
ed20cba49858
(svn r3644) Don't use FindLandscapeHeightByTile() when it's overkill - often it was just a complicated way of writing GetTileSlope(tile, NULL)
tron
parents:
3033
diff
changeset
|
416 |
r = GetRailFoundation(parent_tileh, 1 << AiNew_GetRailDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile)); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
417 |
// Maybe is BRIDGE_NO_FOUNDATION a bit strange here, but it contains just the right information.. |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
418 |
if (r >= 15 || (r == 0 && HASBIT(BRIDGE_NO_FOUNDATION, tileh))) { |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
419 |
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
420 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
421 |
res += AI_PATHFINDER_FOUNDATION_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
422 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
423 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
424 |
if (!(IsRoad(parent->path.node.tile) && IsTileType(parent->path.node.tile, MP_TUNNELBRIDGE))) { |
3055
ed20cba49858
(svn r3644) Don't use FindLandscapeHeightByTile() when it's overkill - often it was just a complicated way of writing GetTileSlope(tile, NULL)
tron
parents:
3033
diff
changeset
|
425 |
r = GetRoadFoundation(parent_tileh, AiNew_GetRoadDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile)); |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
426 |
if (r >= 15 || r == 0) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
427 |
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
428 |
else |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
429 |
res += AI_PATHFINDER_FOUNDATION_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
430 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
431 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
432 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
433 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
434 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
435 |
// Are we part of a tunnel? |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
436 |
if ((AI_PATHFINDER_FLAG_TUNNEL & current->user_data[0]) != 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
437 |
// Tunnels are very expensive when build on long routes.. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
438 |
// Ironicly, we are using BridgeCode here ;) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
439 |
r = AI_PATHFINDER_TUNNEL_PENALTY * GetBridgeLength(current->tile, parent->path.node.tile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
440 |
res += r + (r >> 8); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
441 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
442 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
443 |
// Are we part of a bridge? |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
444 |
if ((AI_PATHFINDER_FLAG_BRIDGE & current->user_data[0]) != 0) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
445 |
// That means for every length a penalty |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
446 |
res += AI_PATHFINDER_BRIDGE_PENALTY * GetBridgeLength(current->tile, parent->path.node.tile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
447 |
// Check if we are going up or down, first for the starting point |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
448 |
// In user_data[0] is at the 8th bit the direction |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
449 |
if (!HASBIT(BRIDGE_NO_FOUNDATION, parent_tileh)) { |
3055
ed20cba49858
(svn r3644) Don't use FindLandscapeHeightByTile() when it's overkill - often it was just a complicated way of writing GetTileSlope(tile, NULL)
tron
parents:
3033
diff
changeset
|
450 |
if (GetBridgeFoundation(parent_tileh, (current->user_data[0] >> 8) & 1) < 15) |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
451 |
res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
452 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
453 |
// Second for the end point |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
454 |
if (!HASBIT(BRIDGE_NO_FOUNDATION, tileh)) { |
3055
ed20cba49858
(svn r3644) Don't use FindLandscapeHeightByTile() when it's overkill - often it was just a complicated way of writing GetTileSlope(tile, NULL)
tron
parents:
3033
diff
changeset
|
455 |
if (GetBridgeFoundation(tileh, (current->user_data[0] >> 8) & 1) < 15) |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
456 |
res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
457 |
} |
3644
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
458 |
if (parent_tileh == SLOPE_FLAT) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY; |
7c9a6a91873b
(svn r4553) int and magic numbers -> Slope and DiagDirection
tron
parents:
3484
diff
changeset
|
459 |
if (tileh == SLOPE_FLAT) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY; |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
460 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
461 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
462 |
// To prevent the AI from taking the fastest way in tiles, but not the fastest way |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
463 |
// in speed, we have to give a good penalty to direction changing |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
464 |
// This way, we get almost the fastest way in tiles, and a very good speed on the track |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
465 |
if (!PathFinderInfo->rail_or_road) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
466 |
if (parent->path.parent != NULL && |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
467 |
AiNew_GetDirection(current->tile, parent->path.node.tile) != AiNew_GetDirection(parent->path.node.tile, parent->path.parent->node.tile)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
468 |
// When road exists, we don't like turning, but its free, so don't be to piggy about it |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
469 |
if (IsRoad(parent->path.node.tile)) |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
470 |
res += AI_PATHFINDER_DIRECTION_CHANGE_ON_EXISTING_ROAD_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
471 |
else |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
472 |
res += AI_PATHFINDER_DIRECTION_CHANGE_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
473 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
474 |
} else { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
475 |
// For rail we have 1 exeption: diagonal rail.. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
476 |
// So we fetch 2 raildirection. That of the current one, and of the one before that |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
477 |
if (parent->path.parent != NULL && parent->path.parent->parent != NULL) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
478 |
int dir1 = AiNew_GetRailDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
479 |
int dir2 = AiNew_GetRailDirection(parent->path.parent->parent->node.tile, parent->path.parent->node.tile, parent->path.node.tile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
480 |
// First, see if we are on diagonal path, that is better than straight path |
3033
9cba043eb38f
(svn r3613) Some more const, indentation, whitespace and similar stuff
tron
parents:
2916
diff
changeset
|
481 |
if (dir1 > 1) res -= AI_PATHFINDER_DIAGONAL_BONUS; |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
482 |
|
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
483 |
// First see if they are different |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
484 |
if (dir1 != dir2) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
485 |
// dir 2 and 3 are 1 diagonal track, and 4 and 5. |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
486 |
if (!(((dir1 == 2 || dir1 == 3) && (dir2 == 2 || dir2 == 3)) || ((dir1 == 4 || dir1 == 5) && (dir2 == 4 || dir2 == 5)))) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
487 |
// It is not, so we changed of direction |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
488 |
res += AI_PATHFINDER_DIRECTION_CHANGE_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
489 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
490 |
if (parent->path.parent->parent->parent != NULL) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
491 |
int dir3 = AiNew_GetRailDirection(parent->path.parent->parent->parent->node.tile, parent->path.parent->parent->node.tile, parent->path.parent->node.tile); |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
492 |
// Check if we changed 3 tiles of direction in 3 tiles.. bad!!! |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
493 |
if ((dir1 == 0 || dir1 == 1) && dir2 > 1 && (dir3 == 0 || dir3 == 1)) { |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
494 |
res += AI_PATHFINDER_CURVE_PENALTY; |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
495 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
496 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
497 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
498 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
499 |
} |
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
500 |
|
2549 | 501 |
return (res < 0) ? 0 : res; |
2381
9a5ed6c0a2e6
(svn r2907) -Codechange: splitted the AIs to their own directory. AINew becomes 'trolly', AIOld becomes 'default', both in their own dir in the 'ai' dir. More AIs to come.
truelight
parents:
diff
changeset
|
502 |
} |