author | rubidium |
Thu, 18 Dec 2008 12:23:08 +0000 | |
changeset 10436 | 8d3a9fbe8f19 |
parent 9111 | 48ce04029fe4 |
permissions | -rw-r--r-- |
3154 | 1 |
/* $Id$ */ |
2 |
||
9111
48ce04029fe4
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
8108
diff
changeset
|
3 |
/** @file tunnel_map.cpp Map accessors for tunnels. */ |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
5584
diff
changeset
|
4 |
|
3154 | 5 |
#include "stdafx.h" |
6 |
#include "openttd.h" |
|
7 |
#include "tunnel_map.h" |
|
8083
ad22eade501f
(svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents:
7323
diff
changeset
|
8 |
#include "tunnelbridge_map.h" |
ad22eade501f
(svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents:
7323
diff
changeset
|
9 |
|
3154 | 10 |
|
6489
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
11 |
/** |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
12 |
* Gets the other end of the tunnel. Where a vehicle would reappear when it |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
13 |
* enters at the given tile. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
14 |
* @param tile the tile to search from. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
15 |
* @return the tile of the other end of the tunnel. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
16 |
*/ |
3154 | 17 |
TileIndex GetOtherTunnelEnd(TileIndex tile) |
18 |
{ |
|
8083
ad22eade501f
(svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents:
7323
diff
changeset
|
19 |
DiagDirection dir = GetTunnelBridgeDirection(tile); |
4559
aa0c13e39840
(svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents:
4291
diff
changeset
|
20 |
TileIndexDiff delta = TileOffsByDiagDir(dir); |
3154 | 21 |
uint z = GetTileZ(tile); |
22 |
||
23 |
dir = ReverseDiagDir(dir); |
|
24 |
do { |
|
25 |
tile += delta; |
|
26 |
} while ( |
|
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:
3156
diff
changeset
|
27 |
!IsTunnelTile(tile) || |
8083
ad22eade501f
(svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents:
7323
diff
changeset
|
28 |
GetTunnelBridgeDirection(tile) != dir || |
3154 | 29 |
GetTileZ(tile) != z |
30 |
); |
|
31 |
||
32 |
return tile; |
|
33 |
} |
|
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
34 |
|
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
35 |
|
6489
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
36 |
/** |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
37 |
* Is there a tunnel in the way in the given direction? |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
38 |
* @param tile the tile to search from. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
39 |
* @param z the 'z' to search on. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
40 |
* @param dir the direction to start searching to. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
41 |
* @return true if and only if there is a tunnel. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
42 |
*/ |
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6489
diff
changeset
|
43 |
bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir) |
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
44 |
{ |
4559
aa0c13e39840
(svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents:
4291
diff
changeset
|
45 |
TileIndexDiff delta = TileOffsByDiagDir(dir); |
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
46 |
uint height; |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
47 |
|
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
48 |
do { |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
49 |
tile -= delta; |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
50 |
height = GetTileZ(tile); |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
51 |
} while (z < height); |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
52 |
|
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
53 |
return |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
54 |
z == height && |
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:
3156
diff
changeset
|
55 |
IsTunnelTile(tile) && |
8083
ad22eade501f
(svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents:
7323
diff
changeset
|
56 |
GetTunnelBridgeDirection(tile) == dir; |
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
57 |
} |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
58 |
|
6489
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
59 |
/** |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
60 |
* Is there a tunnel in the way in any direction? |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
61 |
* @param tile the tile to search from. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
62 |
* @param z the 'z' to search on. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
63 |
* @return true if and only if there is a tunnel. |
511474c82dd3
(svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents:
6422
diff
changeset
|
64 |
*/ |
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
65 |
bool IsTunnelInWay(TileIndex tile, uint z) |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
66 |
{ |
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
67 |
return |
7323
20a18eb8efaf
(svn r10686) -Fix [FS#1058]: determining whether there is a tunnel going under the lowered area is only needed in two directions instead of all four, so take the directions (one for each axis) to the nearest border (along the given axis). Furthermore GetTileZ did much more than absolutely necessary.
rubidium
parents:
7002
diff
changeset
|
68 |
IsTunnelInWayDir(tile, z, (TileX(tile) > (MapMaxX() / 2)) ? DIAGDIR_NE : DIAGDIR_SW) || |
20a18eb8efaf
(svn r10686) -Fix [FS#1058]: determining whether there is a tunnel going under the lowered area is only needed in two directions instead of all four, so take the directions (one for each axis) to the nearest border (along the given axis). Furthermore GetTileZ did much more than absolutely necessary.
rubidium
parents:
7002
diff
changeset
|
69 |
IsTunnelInWayDir(tile, z, (TileY(tile) > (MapMaxY() / 2)) ? DIAGDIR_NW : DIAGDIR_SE); |
3156
f4caf4197189
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents:
3154
diff
changeset
|
70 |
} |