author | tron |
Wed, 08 Mar 2006 15:29:23 +0000 | |
changeset 3167 | 8323c2ccd029 |
parent 3154 | 6ab0cb6b7ab3 |
child 3196 | 5cec26c5ab75 |
permissions | -rw-r--r-- |
3146
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
1 |
/* $Id$ */ |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
2 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
3 |
#include "stdafx.h" |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
4 |
#include "openttd.h" |
3150
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
5 |
#include "functions.h" |
3146
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
6 |
#include "road_map.h" |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
7 |
#include "station.h" |
3154 | 8 |
#include "tunnel_map.h" |
3146
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
9 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
10 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
11 |
RoadBits GetAnyRoadBits(TileIndex tile) |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
12 |
{ |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
13 |
switch (GetTileType(tile)) { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
14 |
case MP_STREET: |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
15 |
switch (GetRoadType(tile)) { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
16 |
default: |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
17 |
case ROAD_NORMAL: return GetRoadBits(tile); |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
18 |
case ROAD_CROSSING: return GetCrossingRoadBits(tile); |
3167
8323c2ccd029
(svn r3795) Add a function to request the orientation of a depot
tron
parents:
3154
diff
changeset
|
19 |
case ROAD_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); |
3146
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
20 |
} |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
21 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
22 |
case MP_STATION: |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
23 |
if (!IsRoadStationTile(tile)) return 0; |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
24 |
return DiagDirToRoadBits(GetRoadStationDir(tile)); |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
25 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
26 |
case MP_TUNNELBRIDGE: |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
27 |
if (_m[tile].m5 & 0x80) { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
28 |
// bridge |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
29 |
if (_m[tile].m5 & 0x40) { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
30 |
// middle part |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
31 |
if ((_m[tile].m5 & 0x38) != 0x28) return 0; // no road under bridge |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
32 |
return _m[tile].m5 & 1 ? ROAD_X : ROAD_Y; |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
33 |
} else { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
34 |
// ending |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
35 |
if (GB(_m[tile].m5, 1, 2) != TRANSPORT_ROAD) return 0; // not a road bridge |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
36 |
return _m[tile].m5 & 1 ? ROAD_Y : ROAD_X; |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
37 |
} |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
38 |
} else { |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
39 |
// tunnel |
3154 | 40 |
if (GetTunnelTransportType(tile) != TRANSPORT_ROAD) return 0; |
41 |
return DiagDirToRoadBits(ReverseDiagDir(GetTunnelDirection(tile))); |
|
3146
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
42 |
} |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
43 |
|
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
44 |
default: return 0; |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
45 |
} |
8d95593c5ff0
(svn r3766) Add a function to get the RoadBits from an arbitrary tile
tron
parents:
diff
changeset
|
46 |
} |
3150
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
47 |
|
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
48 |
|
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
49 |
TrackBits GetAnyRoadTrackBits(TileIndex tile) |
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
50 |
{ |
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
51 |
uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); |
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
52 |
return (byte)(r | (r >> 8)); |
729951cb5448
(svn r3773) Shove some semantics down ottd's throat by replacing ints and magic numbers by enums and some related changes
tron
parents:
3146
diff
changeset
|
53 |
} |