OpenTTD Source 20260531-master-g0e951f3528
road_land.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
9
10#define TILE_SEQ_LINE(img, pal, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 20, {img, pal} },
11
12static const DrawTileSeqStruct _road_depot_NE[] = {
13 TILE_SEQ_LINE(0x584 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
14};
15
16static const DrawTileSeqStruct _road_depot_SE[] = {
17 TILE_SEQ_LINE(0x580 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 1, 16)
18 TILE_SEQ_LINE(0x581 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
19};
20
21static const DrawTileSeqStruct _road_depot_SW[] = {
22 TILE_SEQ_LINE(0x582 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 0, 16, 1)
23 TILE_SEQ_LINE(0x583 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 0, 15, 16, 1)
24};
25
26static const DrawTileSeqStruct _road_depot_NW[] = {
27 TILE_SEQ_LINE(0x585 | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE, 15, 0, 1, 16)
28};
29
32 { {0xA4A, PAL_NONE}, _road_depot_NE },
33 { {0xA4A, PAL_NONE}, _road_depot_SE },
34 { {0xA4A, PAL_NONE}, _road_depot_SW },
35 { {0xA4A, PAL_NONE}, _road_depot_NW }
36}}};
37
43 TILE_SEQ_LINE(2, PAL_NONE, 0, 0, 3, 3)
44 TILE_SEQ_LINE(4, PAL_NONE, 0, 13, 3, 3)
45 TILE_SEQ_LINE(6, PAL_NONE, 13, 0, 3, 3)
46 TILE_SEQ_LINE(8, PAL_NONE, 13, 13, 3, 3)
47};
48
49static const DrawTileSpriteSpan _crossing_layout = {
50 {0, PAL_NONE}, _crossing_layout_ALL
51};
52
53static const DrawTileSeqStruct _crossing_layout_SW_ALL[] = {
54 TILE_SEQ_LINE(6, PAL_NONE, 13, 0, 3, 3)
55 TILE_SEQ_LINE(8, PAL_NONE, 13, 13, 3, 3)
56};
57
58static const DrawTileSpriteSpan _crossing_layout_SW = {
59 {0, PAL_NONE}, _crossing_layout_SW_ALL
60};
61
62static const DrawTileSeqStruct _crossing_layout_NW_ALL[] = {
63 TILE_SEQ_LINE(2, PAL_NONE, 0, 0, 3, 3)
64 TILE_SEQ_LINE(6, PAL_NONE, 13, 0, 3, 3)
65};
66
67static const DrawTileSpriteSpan _crossing_layout_NW = {
68 {0, PAL_NONE}, _crossing_layout_NW_ALL
69};
70
71static const DrawTileSeqStruct _crossing_layout_NE_ALL[] = {
72 TILE_SEQ_LINE(2, PAL_NONE, 0, 0, 3, 3)
73 TILE_SEQ_LINE(4, PAL_NONE, 0, 13, 3, 3)
74};
75
76static const DrawTileSpriteSpan _crossing_layout_NE = {
77 {0, PAL_NONE}, _crossing_layout_NE_ALL
78};
79
80static const DrawTileSeqStruct _crossing_layout_SE_ALL[] = {
81 TILE_SEQ_LINE(4, PAL_NONE, 0, 13, 3, 3)
82 TILE_SEQ_LINE(8, PAL_NONE, 13, 13, 3, 3)
83};
84
85static const DrawTileSpriteSpan _crossing_layout_SE = {
86 {0, PAL_NONE}, _crossing_layout_SE_ALL
87};
88
89#undef TILE_SEQ_LINE
90
91
92static const SpriteID _road_tile_sprites_1[16] = {
93 0, 0x546, 0x545, 0x53B, 0x544, 0x534, 0x53E, 0x539,
94 0x543, 0x53C, 0x535, 0x538, 0x53D, 0x537, 0x53A, 0x536
95};
96
97static const SpriteID _road_backpole_sprites_1[16] = {
98 0, 0x54, 0x55, 0x5B, 0x54, 0x54, 0x5E, 0x5A, 0x55, 0x5C, 0x55, 0x58, 0x5D, 0x57, 0x59, 0x56
99};
100
101static const SpriteID _road_frontwire_sprites_1[16] = {
102 0, 0x38, 0x39, 0x40, 0x38, 0x38, 0x43, 0x3E, 0x39, 0x41, 0x39, 0x3C, 0x42, 0x3B, 0x3D, 0x3A
103};
104
105#define MAKELINE(a, b, c) { a, b, c },
106#define ENDLINE { 0, 0, 0 }
107
108static const DrawRoadTileStruct _roadside_nothing[] = {
109 ENDLINE
110};
111
112static const DrawRoadTileStruct _road_display_datas2_3[] = {
113 MAKELINE(0x57f, 1, 8)
114 ENDLINE
115};
116
117static const DrawRoadTileStruct _road_display_datas2_5[] = {
118 MAKELINE(0x57f, 1, 8)
119 MAKELINE(0x57e, 14, 8)
120 ENDLINE
121};
122
123static const DrawRoadTileStruct _road_display_datas2_6[] = {
124 MAKELINE(0x57e, 8, 1)
125 ENDLINE
126};
127
128static const DrawRoadTileStruct _road_display_datas2_7[] = {
129 MAKELINE(0x57f, 1, 8)
130 ENDLINE
131};
132
133static const DrawRoadTileStruct _road_display_datas2_9[] = {
134 MAKELINE(0x57f, 8, 14)
135 ENDLINE
136};
137
138static const DrawRoadTileStruct _road_display_datas2_10[] = {
139 MAKELINE(0x57f, 8, 14)
140 MAKELINE(0x57e, 8, 1)
141 ENDLINE
142};
143
144static const DrawRoadTileStruct _road_display_datas2_11[] = {
145 MAKELINE(0x57f, 8, 14)
146 ENDLINE
147};
148
149static const DrawRoadTileStruct _road_display_datas2_12[] = {
150 MAKELINE(0x57e, 8, 1)
151 ENDLINE
152};
153
154static const DrawRoadTileStruct _road_display_datas2_13[] = {
155 MAKELINE(0x57e, 14, 8)
156 ENDLINE
157};
158
159static const DrawRoadTileStruct _road_display_datas2_14[] = {
160 MAKELINE(0x57e, 8, 1)
161 ENDLINE
162};
163
164static const DrawRoadTileStruct _road_display_datas2_19[] = {
165 MAKELINE(0x1212, 0, 2)
166 MAKELINE(0x1212, 3, 9)
167 MAKELINE(0x1212, 10, 12)
168 ENDLINE
169};
170
171static const DrawRoadTileStruct _road_display_datas2_21[] = {
172 MAKELINE(0x1212, 0, 2)
173 MAKELINE(0x1212, 0, 10)
174 MAKELINE(0x1212, 12, 2)
175 MAKELINE(0x1212, 12, 10)
176 ENDLINE
177};
178
179static const DrawRoadTileStruct _road_display_datas2_22[] = {
180 MAKELINE(0x1212, 10, 0)
181 MAKELINE(0x1212, 3, 3)
182 MAKELINE(0x1212, 0, 10)
183 ENDLINE
184};
185
186static const DrawRoadTileStruct _road_display_datas2_23[] = {
187 MAKELINE(0x1212, 0, 2)
188 MAKELINE(0x1212, 0, 10)
189 ENDLINE
190};
191
192static const DrawRoadTileStruct _road_display_datas2_25[] = {
193 MAKELINE(0x1212, 12, 2)
194 MAKELINE(0x1212, 9, 9)
195 MAKELINE(0x1212, 2, 12)
196 ENDLINE
197};
198
199static const DrawRoadTileStruct _road_display_datas2_26[] = {
200 MAKELINE(0x1212, 2, 0)
201 MAKELINE(0x1212, 10, 0)
202 MAKELINE(0x1212, 2, 12)
203 MAKELINE(0x1212, 10, 12)
204 ENDLINE
205};
206
207static const DrawRoadTileStruct _road_display_datas2_27[] = {
208 MAKELINE(0x1212, 2, 12)
209 MAKELINE(0x1212, 10, 12)
210 ENDLINE
211};
212
213static const DrawRoadTileStruct _road_display_datas2_28[] = {
214 MAKELINE(0x1212, 2, 0)
215 MAKELINE(0x1212, 9, 3)
216 MAKELINE(0x1212, 12, 10)
217 ENDLINE
218};
219
220static const DrawRoadTileStruct _road_display_datas2_29[] = {
221 MAKELINE(0x1212, 12, 2)
222 MAKELINE(0x1212, 12, 10)
223 ENDLINE
224};
225
226static const DrawRoadTileStruct _road_display_datas2_30[] = {
227 MAKELINE(0x1212, 2, 0)
228 MAKELINE(0x1212, 10, 0)
229 ENDLINE
230};
231
232#undef MAKELINE
233#undef ENDLINE
234
235static const DrawRoadTileStruct * const _roadside_none[] = {
236 _roadside_nothing, _roadside_nothing,
237 _roadside_nothing, _roadside_nothing,
238 _roadside_nothing, _roadside_nothing,
239 _roadside_nothing, _roadside_nothing,
240 _roadside_nothing, _roadside_nothing,
241 _roadside_nothing, _roadside_nothing,
242 _roadside_nothing, _roadside_nothing,
243 _roadside_nothing, _roadside_nothing
244};
245
246static const DrawRoadTileStruct * const _roadside_lamps[] = {
247 _roadside_nothing,
248 _roadside_nothing,
249 _roadside_nothing,
250 _road_display_datas2_3,
251 _roadside_nothing,
252 _road_display_datas2_5,
253 _road_display_datas2_6,
254 _road_display_datas2_7,
255 _roadside_nothing,
256 _road_display_datas2_9,
257 _road_display_datas2_10,
258 _road_display_datas2_11,
259 _road_display_datas2_12,
260 _road_display_datas2_13,
261 _road_display_datas2_14,
262 _roadside_nothing,
263};
264
265static const DrawRoadTileStruct * const _roadside_trees[] = {
266 _roadside_nothing,
267 _roadside_nothing,
268 _roadside_nothing,
269 _road_display_datas2_19,
270 _roadside_nothing,
271 _road_display_datas2_21,
272 _road_display_datas2_22,
273 _road_display_datas2_23,
274
275 _roadside_nothing,
276 _road_display_datas2_25,
277 _road_display_datas2_26,
278 _road_display_datas2_27,
279 _road_display_datas2_28,
280 _road_display_datas2_29,
281 _road_display_datas2_30,
282 _roadside_nothing,
283};
284
285static const DrawRoadTileStruct * const * const _road_display_table[] = {
286 _roadside_none,
287 _roadside_none,
288 _roadside_none,
289 _roadside_lamps,
290 _roadside_none,
291 _roadside_trees,
292};
EnumIndexArray< T, DiagDirection, DiagDirection::End > DiagDirectionIndexArray
Array with DiagDirection as index.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
Definition gfx_type.h:17
static const DrawTileSeqStruct _crossing_layout_ALL[]
Sprite layout for level crossings.
Definition road_land.h:42
static const DiagDirectionIndexArray< DrawTileSpriteSpan > _road_depot
Sprite layout for a road depot for each direction.
Definition road_land.h:31
static constexpr uint8_t PALETTE_MODIFIER_COLOUR
this bit is set when a recolouring process is in action
Definition sprites.h:1562
#define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img)
Constructor macro for an image without a palette in a DrawTileSeqStruct array.
A tile child sprite and palette to draw for stations etc, with 3D bounding box.
Definition sprite.h:33
Ground palette sprite of a tile, together with its sprite layout.
Definition sprite.h:76