author | peter1138 |
Fri, 09 Jun 2006 16:35:07 +0000 | |
changeset 3997 | 29c77eab14a4 |
parent 3977 | edb5b94e2094 |
child 4158 | a8f7265a6fd0 |
permissions | -rw-r--r-- |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
1 |
/* $Id$ */ |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
2 |
|
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
3 |
#ifndef BRIDGE_MAP_H |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
4 |
#define BRIDGE_MAP_H |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
5 |
|
3196 | 6 |
#include "direction.h" |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
7 |
#include "macros.h" |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
8 |
#include "map.h" |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
9 |
#include "rail.h" |
3234
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
10 |
#include "road_map.h" |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
11 |
#include "tile.h" |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
12 |
|
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
13 |
|
3234
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
14 |
static inline bool IsBridge(TileIndex t) |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
15 |
{ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3355
diff
changeset
|
16 |
assert(IsTileType(t, MP_TUNNELBRIDGE)); |
3234
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
17 |
return HASBIT(_m[t].m5, 7); |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
18 |
} |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
19 |
|
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
20 |
static inline bool IsBridgeTile(TileIndex t) |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
21 |
{ |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
22 |
return IsTileType(t, MP_TUNNELBRIDGE) && IsBridge(t); |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
23 |
} |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
24 |
|
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
25 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
26 |
static inline bool IsBridgeRamp(TileIndex t) |
3214
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
27 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
28 |
assert(IsBridgeTile(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
29 |
return !HASBIT(_m[t].m5, 6); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
30 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
31 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
32 |
static inline bool IsBridgeMiddle(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
33 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
34 |
assert(IsBridgeTile(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
35 |
return HASBIT(_m[t].m5, 6); |
3225
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
36 |
} |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
37 |
|
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
38 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
39 |
/** |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
40 |
* Determines which piece of a bridge is contained in the current tile |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
41 |
* @param tile The tile to analyze |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
42 |
* @return the piece |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
43 |
*/ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
44 |
static inline uint GetBridgePiece(TileIndex t) |
3933 | 45 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
46 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
47 |
return GB(_m[t].m2, 0, 4); |
3231
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
48 |
} |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
49 |
|
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
50 |
|
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
51 |
/** |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
52 |
* Determines the type of bridge on a tile |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
53 |
* @param tile The tile to analyze |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
54 |
* @return The bridge type |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
55 |
*/ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3355
diff
changeset
|
56 |
static inline uint GetBridgeType(TileIndex t) |
3231
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
57 |
{ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3355
diff
changeset
|
58 |
assert(IsBridgeTile(t)); |
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3355
diff
changeset
|
59 |
return GB(_m[t].m2, 4, 4); |
3231
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
60 |
} |
eb74c2e361f9
(svn r3904) Move GetBridgePiece() and GetBridgeType() to bridge_map.h and make the only place which still extracted that info diretly use the wrapper
tron
parents:
3226
diff
changeset
|
61 |
|
3214
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
62 |
|
3196 | 63 |
/** |
64 |
* Get the direction pointing onto the bridge |
|
65 |
*/ |
|
66 |
static inline DiagDirection GetBridgeRampDirection(TileIndex t) |
|
67 |
{ |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
68 |
assert(IsBridgeRamp(t)); |
3953
db302c2d1a2a
(svn r5101) Add a function to convert an axis and a flag for north/south into a DiagDirection. Use it for bridge ramps and ship depots
tron
parents:
3933
diff
changeset
|
69 |
return ReverseDiagDir(XYNSToDiagDir((Axis)GB(_m[t].m5, 0, 1), GB(_m[t].m5, 5, 1))); |
3196 | 70 |
} |
71 |
||
72 |
||
3225
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
73 |
static inline Axis GetBridgeAxis(TileIndex t) |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
74 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
75 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
76 |
return (Axis)GB(_m[t].m5, 0, 1); |
3225
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
77 |
} |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
78 |
|
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
79 |
|
3234
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
80 |
static inline TransportType GetBridgeTransportType(TileIndex t) |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
81 |
{ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3355
diff
changeset
|
82 |
assert(IsBridgeTile(t)); |
3234
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
83 |
return (TransportType)GB(_m[t].m5, 1, 2); |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
84 |
} |
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
85 |
|
986c30171e92
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents:
3231
diff
changeset
|
86 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
87 |
static inline bool IsClearUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
88 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
89 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
90 |
return GB(_m[t].m5, 3, 3) == 0; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
91 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
92 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
93 |
static inline bool IsWaterUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
94 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
95 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
96 |
return GB(_m[t].m5, 3, 3) == 1; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
97 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
98 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
99 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
100 |
static inline bool IsTransportUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
101 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
102 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
103 |
return HASBIT(_m[t].m5, 5); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
104 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
105 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
106 |
static inline TransportType GetTransportTypeUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
107 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
108 |
assert(IsTransportUnderBridge(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
109 |
return (TransportType)GB(_m[t].m5, 3, 2); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
110 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
111 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
112 |
static inline RoadBits GetRoadBitsUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
113 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
114 |
assert(GetTransportTypeUnderBridge(t) == TRANSPORT_ROAD); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
115 |
return GetBridgeAxis(t) == AXIS_X ? ROAD_Y : ROAD_X; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
116 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
117 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
118 |
static inline TrackBits GetRailBitsUnderBridge(TileIndex t) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
119 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
120 |
assert(GetTransportTypeUnderBridge(t) == TRANSPORT_RAIL); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
121 |
return GetBridgeAxis(t) == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
122 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
123 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
124 |
|
3214
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
125 |
/** |
3225
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
126 |
* Finds the end of a bridge in the specified direction starting at a middle tile |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
127 |
*/ |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
128 |
TileIndex GetBridgeEnd(TileIndex, DiagDirection); |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
129 |
|
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
130 |
/** |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
131 |
* Finds the southern end of a bridge starting at a middle tile |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
132 |
*/ |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
133 |
TileIndex GetSouthernBridgeEnd(TileIndex t); |
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
134 |
|
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
135 |
|
655763f3861c
(svn r3898) Add functions to find a bridge end starting at a middle tile
tron
parents:
3216
diff
changeset
|
136 |
/** |
3214
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
137 |
* Starting at one bridge end finds the other bridge end |
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
138 |
*/ |
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
139 |
TileIndex GetOtherBridgeEnd(TileIndex); |
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
140 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
141 |
uint GetBridgeHeight(TileIndex t); |
3214
172b409bf612
(svn r3887) Add a function to get the other bridge end when you're at a bridge ramp
tron
parents:
3209
diff
changeset
|
142 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
143 |
static inline void SetClearUnderBridge(TileIndex t) |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
144 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
145 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
146 |
SetTileOwner(t, OWNER_NONE); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
147 |
SB(_m[t].m5, 3, 3, 0 << 2 | 0); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
148 |
SB(_m[t].m3, 0, 4, 0); |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
149 |
} |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
150 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
151 |
static inline void SetWaterUnderBridge(TileIndex t) |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
152 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
153 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
154 |
SetTileOwner(t, OWNER_WATER); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
155 |
SB(_m[t].m5, 3, 3, 0 << 2 | 1); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
156 |
SB(_m[t].m3, 0, 4, 0); |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
157 |
} |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
158 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
159 |
static inline void SetCanalUnderBridge(TileIndex t, Owner o) |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
160 |
{ |
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
161 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
162 |
SetTileOwner(t, o); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
163 |
SB(_m[t].m5, 3, 3, 0 << 2 | 1); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
164 |
SB(_m[t].m3, 0, 4, 0); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
165 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
166 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
167 |
static inline void SetRailUnderBridge(TileIndex t, Owner o, RailType r) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
168 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
169 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
170 |
SetTileOwner(t, o); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
171 |
SB(_m[t].m5, 3, 3, 1 << 2 | TRANSPORT_RAIL); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
172 |
SB(_m[t].m3, 0, 4, r); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
173 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
174 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
175 |
static inline void SetRoadUnderBridge(TileIndex t, Owner o) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
176 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
177 |
assert(IsBridgeMiddle(t)); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
178 |
SetTileOwner(t, o); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
179 |
SB(_m[t].m5, 3, 3, 1 << 2 | TRANSPORT_ROAD); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
180 |
SB(_m[t].m3, 0, 4, 0); |
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
181 |
} |
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
182 |
|
3209
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
183 |
|
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
184 |
static inline void MakeBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, TransportType tt) |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
185 |
{ |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
186 |
uint northsouth = (d == DIAGDIR_NE || d == DIAGDIR_NW); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
187 |
|
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
188 |
SetTileType(t, MP_TUNNELBRIDGE); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
189 |
SetTileOwner(t, o); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
190 |
_m[t].m2 = bridgetype << 4; |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
191 |
_m[t].m4 = 0; |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
192 |
_m[t].m5 = 1 << 7 | 0 << 6 | northsouth << 5 | tt << 1 | DiagDirToAxis(d); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
193 |
} |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
194 |
|
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
195 |
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d) |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
196 |
{ |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
197 |
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
198 |
_m[t].m3 = 0; |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
199 |
} |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
200 |
|
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
201 |
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, RailType r) |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
202 |
{ |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
203 |
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL); |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
204 |
_m[t].m3 = r; |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
205 |
} |
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
206 |
|
e0b7d48351a3
(svn r3877) Add functions to turn a tile into a rail/road bridge ramp/middle part
tron
parents:
3196
diff
changeset
|
207 |
|
3977
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
208 |
static inline void MakeBridgeMiddle(TileIndex t, uint bridgetype, uint piece, Axis a, TransportType tt) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
209 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
210 |
SetTileType(t, MP_TUNNELBRIDGE); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
211 |
SetTileOwner(t, OWNER_NONE); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
212 |
_m[t].m2 = bridgetype << 4 | piece; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
213 |
_m[t].m3 = 0; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
214 |
_m[t].m4 = 0; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
215 |
_m[t].m5 = 1 << 7 | 1 << 6 | 0 << 5 | 0 << 3 | tt << 1 | a; |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
216 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
217 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
218 |
static inline void MakeRoadBridgeMiddle(TileIndex t, uint bridgetype, uint piece, Axis a) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
219 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
220 |
MakeBridgeMiddle(t, bridgetype, piece, a, TRANSPORT_ROAD); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
221 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
222 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
223 |
static inline void MakeRailBridgeMiddle(TileIndex t, uint bridgetype, uint piece, Axis a, RailType r) |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
224 |
{ |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
225 |
MakeBridgeMiddle(t, bridgetype, piece, a, TRANSPORT_RAIL); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
226 |
SB(_m[t].m3, 4, 4, r); |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
227 |
} |
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
228 |
|
edb5b94e2094
(svn r5155) - Remove the bridge branch merge (revision r5070)
tron
parents:
3953
diff
changeset
|
229 |
|
3189
1af302c5abd0
(svn r3846) Add functions to set the type of stuff (clear, water, rail, road) under bridges
tron
parents:
diff
changeset
|
230 |
#endif |