author | truebrain |
Wed, 26 Mar 2008 15:17:40 +0000 | |
branch | noai |
changeset 9823 | 0b7f816cf46f |
parent 9807 | 5b3be41b3ce6 |
child 9833 | 89a64246458f |
permissions | -rw-r--r-- |
9794 | 1 |
/** @file ai_tunnel.cpp handles the query-related of the AITunnel class and can construct tunnels **/ |
2 |
||
3 |
#include "ai_tunnel.hpp" |
|
9807
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
4 |
#include "ai_map.hpp" |
9794 | 5 |
#include "../../landscape.h" |
6 |
#include "../../tunnel_map.h" |
|
7 |
#include "../../road_type.h" |
|
9807
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
8 |
#include "../../command_func.h" |
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
9 |
#include "../../variables.h" |
9794 | 10 |
|
11 |
/* static */ bool AITunnel::IsTunnelTile(TileIndex tile) |
|
12 |
{ |
|
13 |
return ::IsTunnelTile(tile); |
|
14 |
} |
|
15 |
||
16 |
/* static */ TileIndex AITunnel::GetOtherTunnelEnd(TileIndex tile) |
|
17 |
{ |
|
9807
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
18 |
if (!::IsValidTile(tile)) return INVALID_TILE; |
9794 | 19 |
|
9807
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
20 |
/* If it's a tunnel alread, take the easy way out! */ |
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
21 |
if (IsTunnelTile(tile)) return ::GetOtherTunnelEnd(tile); |
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
22 |
|
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
23 |
::DoCommand(tile, 0, 0, DC_AUTO, CMD_BUILD_TUNNEL); |
5b3be41b3ce6
(svn r12315) [NoAI] -Fix: AITunnel::GetOtherTunnelEnd() now also works to estimate where a non-existing tunnel would end (Morloth / glx)
truebrain
parents:
9794
diff
changeset
|
24 |
return _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile; |
9794 | 25 |
} |
26 |
||
27 |
/* static */ bool AITunnel::BuildTunnel(AIVehicle::VehicleType vehicle_type, TileIndex start) |
|
28 |
{ |
|
29 |
if (!::IsValidTile(start)) return false; |
|
30 |
if (vehicle_type != AIVehicle::VEHICLE_RAIL && vehicle_type != AIVehicle::VEHICLE_ROAD) return false; |
|
31 |
||
32 |
uint type = 0; |
|
33 |
if (vehicle_type == AIVehicle::VEHICLE_ROAD) { |
|
34 |
type |= (TRANSPORT_ROAD << 9); |
|
35 |
type |= ROADTYPES_ROAD; |
|
36 |
} else { |
|
37 |
type |= (TRANSPORT_RAIL << 9); |
|
38 |
type |= RAILTYPES_RAIL; |
|
39 |
} |
|
40 |
||
41 |
return AIObject::DoCommand(start, type, 0, CMD_BUILD_TUNNEL); |
|
42 |
} |
|
43 |
||
44 |
/* static */ bool AITunnel::RemoveTunnel(TileIndex tile) |
|
45 |
{ |
|
46 |
if (!IsTunnelTile(tile)) return false; |
|
47 |
||
48 |
return AIObject::DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR); |
|
49 |
} |