OpenTTD Source 20241224-master-gee860a5c8e
build_industry.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 <http://www.gnu.org/licenses/>.
6 */
7
10#ifndef BUILD_INDUSTRY_H
11#define BUILD_INDUSTRY_H
12
21#define MK(x, y, m) {{x, y}, m}
22
23static const IndustryTileLayout _tile_table_coal_mine_0 {
24 MK(1, 1, 0),
25 MK(1, 2, 2),
26 MK(0, 0, 5),
27 MK(1, 0, 6),
28 MK(2, 0, 3),
29 MK(2, 2, 3),
30};
31
32static const IndustryTileLayout _tile_table_coal_mine_1 {
33 MK(1, 1, 0),
34 MK(1, 2, 2),
35 MK(2, 0, 0),
36 MK(2, 1, 2),
37 MK(1, 0, 3),
38 MK(0, 0, 3),
39 MK(0, 1, 4),
40 MK(0, 2, 4),
41 MK(2, 2, 4),
42};
43
44static const IndustryTileLayout _tile_table_coal_mine_2 {
45 MK(0, 0, 0),
46 MK(0, 1, 2),
47 MK(0, 2, 5),
48 MK(1, 0, 3),
49 MK(1, 1, 3),
50 MK(1, 2, 6),
51};
52
53static const IndustryTileLayout _tile_table_coal_mine_3 {
54 MK(0, 1, 0),
55 MK(0, 2, 2),
56 MK(0, 3, 4),
57 MK(1, 0, 5),
58 MK(1, 1, 0),
59 MK(1, 2, 2),
60 MK(1, 3, 3),
61 MK(2, 0, 6),
62 MK(2, 1, 4),
63 MK(2, 2, 3),
64};
65
66static const std::vector<IndustryTileLayout> _tile_table_coal_mine {
67 _tile_table_coal_mine_0,
68 _tile_table_coal_mine_1,
69 _tile_table_coal_mine_2,
70 _tile_table_coal_mine_3,
71};
72
73static const IndustryTileLayout _tile_table_power_station_0 {
74 MK(0, 0, 7),
75 MK(0, 1, 9),
76 MK(1, 0, 7),
77 MK(1, 1, 8),
78 MK(2, 0, 7),
79 MK(2, 1, 8),
80 MK(3, 0, 10),
81 MK(3, 1, 10),
82};
83
84static const IndustryTileLayout _tile_table_power_station_1 {
85 MK(0, 1, 7),
86 MK(0, 2, 7),
87 MK(1, 0, 8),
88 MK(1, 1, 8),
89 MK(1, 2, 7),
90 MK(2, 0, 9),
91 MK(2, 1, 10),
92 MK(2, 2, 9),
93};
94
95static const IndustryTileLayout _tile_table_power_station_2 {
96 MK(0, 0, 7),
97 MK(0, 1, 7),
98 MK(1, 0, 9),
99 MK(1, 1, 8),
100 MK(2, 0, 10),
101 MK(2, 1, 9),
102};
103
104static const std::vector<IndustryTileLayout> _tile_table_power_station {
105 _tile_table_power_station_0,
106 _tile_table_power_station_1,
107 _tile_table_power_station_2,
108};
109
110static const IndustryTileLayout _tile_table_sawmill_0 {
111 MK(1, 0, 14),
112 MK(1, 1, 12),
113 MK(1, 2, 11),
114 MK(2, 0, 14),
115 MK(2, 1, 13),
116 MK(0, 0, 15),
117 MK(0, 1, 15),
118 MK(0, 2, 12),
119};
120
121static const IndustryTileLayout _tile_table_sawmill_1 {
122 MK(0, 0, 15),
123 MK(0, 1, 11),
124 MK(0, 2, 14),
125 MK(1, 0, 15),
126 MK(1, 1, 13),
127 MK(1, 2, 12),
128 MK(2, 0, 11),
129 MK(2, 1, 13),
130};
131
132static const std::vector<IndustryTileLayout> _tile_table_sawmill {
133 _tile_table_sawmill_0,
134 _tile_table_sawmill_1,
135};
136
137static const IndustryTileLayout _tile_table_forest_0 {
138 MK(0, 0, 16),
139 MK(0, 1, 16),
140 MK(0, 2, 16),
141 MK(0, 3, 16),
142 MK(1, 0, 16),
143 MK(1, 1, 16),
144 MK(1, 2, 16),
145 MK(1, 3, 16),
146 MK(2, 0, 16),
147 MK(2, 1, 16),
148 MK(2, 2, 16),
149 MK(2, 3, 16),
150 MK(3, 0, 16),
151 MK(3, 1, 16),
152 MK(3, 2, 16),
153 MK(3, 3, 16),
154 MK(1, 4, 16),
155 MK(2, 4, 16),
156};
157
158static const IndustryTileLayout _tile_table_forest_1 {
159 MK(0, 0, 16),
160 MK(1, 0, 16),
161 MK(2, 0, 16),
162 MK(3, 0, 16),
163 MK(4, 0, 16),
164 MK(0, 1, 16),
165 MK(1, 1, 16),
166 MK(2, 1, 16),
167 MK(3, 1, 16),
168 MK(4, 1, 16),
169 MK(0, 2, 16),
170 MK(1, 2, 16),
171 MK(2, 2, 16),
172 MK(3, 2, 16),
173 MK(4, 2, 16),
174 MK(0, 3, 16),
175 MK(1, 3, 16),
176 MK(2, 3, 16),
177 MK(3, 3, 16),
178 MK(4, 3, 16),
179 MK(1, 4, 16),
180 MK(2, 4, 16),
181 MK(3, 4, 16),
182};
183
184static const std::vector<IndustryTileLayout> _tile_table_forest {
185 _tile_table_forest_0,
186 _tile_table_forest_1,
187};
188
189static const IndustryTileLayout _tile_table_oil_refinery_0 {
190 MK(0, 0, 20),
191 MK(0, 1, 21),
192 MK(0, 2, 22),
193 MK(0, 3, 21),
194 MK(1, 0, 20),
195 MK(1, 1, 19),
196 MK(1, 2, 22),
197 MK(1, 3, 20),
198 MK(2, 1, 18),
199 MK(2, 2, 18),
200 MK(2, 3, 18),
201 MK(3, 2, 18),
202 MK(3, 3, 18),
203 MK(2, 0, 23),
204 MK(3, 1, 23),
205};
206
207static const IndustryTileLayout _tile_table_oil_refinery_1 {
208 MK(0, 0, 18),
209 MK(0, 1, 18),
210 MK(0, 2, 21),
211 MK(0, 3, 22),
212 MK(0, 4, 20),
213 MK(1, 0, 18),
214 MK(1, 1, 18),
215 MK(1, 2, 19),
216 MK(1, 3, 20),
217 MK(2, 0, 18),
218 MK(2, 1, 18),
219 MK(2, 2, 19),
220 MK(2, 3, 22),
221 MK(1, 4, 23),
222 MK(2, 4, 23),
223};
224
225static const std::vector<IndustryTileLayout> _tile_table_oil_refinery {
226 _tile_table_oil_refinery_0,
227 _tile_table_oil_refinery_1,
228};
229
230static const IndustryTileLayout _tile_table_oil_rig_0 {
231 MK(0, 0, 24),
232 MK(0, 1, 24),
233 MK(0, 2, 25),
234 MK(1, 0, 26),
235 MK(1, 1, 27),
236 MK(1, 2, 28),
237 MK(-4, -4, 255),
238 MK(-4, -3, 255),
239 MK(-4, -2, 255),
240 MK(-4, -1, 255),
241 MK(-4, 0, 255),
242 MK(-4, 1, 255),
243 MK(-4, 2, 255),
244 MK(-4, 3, 255),
245 MK(-4, 4, 255),
246 MK(-4, 5, 255),
247 MK(-4, 6, 255),
248 MK(-3, 6, 255),
249 MK(-2, 6, 255),
250 MK(-1, 6, 255),
251 MK(0, 6, 255),
252 MK(1, 6, 255),
253 MK(2, 6, 255),
254 MK(3, 6, 255),
255 MK(4, 6, 255),
256 MK(5, 6, 255),
257 MK(5, 5, 255),
258 MK(5, 4, 255),
259 MK(5, 3, 255),
260 MK(5, 2, 255),
261 MK(5, 1, 255),
262 MK(5, 0, 255),
263 MK(5, -1, 255),
264 MK(5, -2, 255),
265 MK(5, -3, 255),
266 MK(5, -4, 255),
267 MK(4, -4, 255),
268 MK(3, -4, 255),
269 MK(2, -4, 255),
270 MK(1, -4, 255),
271 MK(0, -4, 255),
272 MK(-1, -4, 255),
273 MK(-2, -4, 255),
274 MK(-3, -4, 255),
275 MK(2, 0, 255),
276 MK(2, -1, 255),
277 MK(1, -1, 255),
278 MK(0, -1, 255),
279 MK(-1, -1, 255),
280 MK(-1, 0, 255),
281 MK(-1, 1, 255),
282 MK(-1, 2, 255),
283 MK(-1, 3, 255),
284 MK(0, 3, 255),
285 MK(1, 3, 255),
286 MK(2, 3, 255),
287 MK(2, 2, 255),
288 MK(2, 1, 255),
289};
290
291static const std::vector<IndustryTileLayout> _tile_table_oil_rig {
292 _tile_table_oil_rig_0,
293};
294
295static const IndustryTileLayout _tile_table_factory_0 {
296 MK(0, 0, 39),
297 MK(0, 1, 40),
298 MK(1, 0, 41),
299 MK(1, 1, 42),
300 MK(0, 2, 39),
301 MK(0, 3, 40),
302 MK(1, 2, 41),
303 MK(1, 3, 42),
304 MK(2, 1, 39),
305 MK(2, 2, 40),
306 MK(3, 1, 41),
307 MK(3, 2, 42),
308};
309
310static const IndustryTileLayout _tile_table_factory_1 {
311 MK(0, 0, 39),
312 MK(0, 1, 40),
313 MK(1, 0, 41),
314 MK(1, 1, 42),
315 MK(2, 0, 39),
316 MK(2, 1, 40),
317 MK(3, 0, 41),
318 MK(3, 1, 42),
319 MK(1, 2, 39),
320 MK(1, 3, 40),
321 MK(2, 2, 41),
322 MK(2, 3, 42),
323};
324
325static const std::vector<IndustryTileLayout> _tile_table_factory {
326 _tile_table_factory_0,
327 _tile_table_factory_1,
328};
329
330static const IndustryTileLayout _tile_table_printing_works_0 {
331 MK(0, 0, 43),
332 MK(0, 1, 44),
333 MK(1, 0, 45),
334 MK(1, 1, 46),
335 MK(0, 2, 43),
336 MK(0, 3, 44),
337 MK(1, 2, 45),
338 MK(1, 3, 46),
339 MK(2, 1, 43),
340 MK(2, 2, 44),
341 MK(3, 1, 45),
342 MK(3, 2, 46),
343};
344
345static const IndustryTileLayout _tile_table_printing_works_1 {
346 MK(0, 0, 43),
347 MK(0, 1, 44),
348 MK(1, 0, 45),
349 MK(1, 1, 46),
350 MK(2, 0, 43),
351 MK(2, 1, 44),
352 MK(3, 0, 45),
353 MK(3, 1, 46),
354 MK(1, 2, 43),
355 MK(1, 3, 44),
356 MK(2, 2, 45),
357 MK(2, 3, 46),
358};
359
360static const std::vector<IndustryTileLayout> _tile_table_printing_works {
361 _tile_table_printing_works_0,
362 _tile_table_printing_works_1,
363};
364
365static const IndustryTileLayout _tile_table_steel_mill_0 {
366 MK(2, 1, 52),
367 MK(2, 2, 53),
368 MK(3, 1, 54),
369 MK(3, 2, 55),
370 MK(0, 0, 56),
371 MK(1, 0, 57),
372 MK(0, 1, 56),
373 MK(1, 1, 57),
374 MK(0, 2, 56),
375 MK(1, 2, 57),
376 MK(2, 0, 56),
377 MK(3, 0, 57),
378};
379
380static const IndustryTileLayout _tile_table_steel_mill_1 {
381 MK(0, 0, 52),
382 MK(0, 1, 53),
383 MK(1, 0, 54),
384 MK(1, 1, 55),
385 MK(2, 0, 52),
386 MK(2, 1, 53),
387 MK(3, 0, 54),
388 MK(3, 1, 55),
389 MK(0, 2, 56),
390 MK(1, 2, 57),
391 MK(2, 2, 56),
392 MK(3, 2, 57),
393 MK(1, 3, 56),
394 MK(2, 3, 57),
395};
396
397static const std::vector<IndustryTileLayout> _tile_table_steel_mill {
398 _tile_table_steel_mill_0,
399 _tile_table_steel_mill_1,
400};
401
402static const IndustryTileLayout _tile_table_farm_0 {
403 MK(1, 0, 33),
404 MK(1, 1, 34),
405 MK(1, 2, 36),
406 MK(0, 0, 37),
407 MK(0, 1, 37),
408 MK(0, 2, 36),
409 MK(2, 0, 35),
410 MK(2, 1, 38),
411 MK(2, 2, 38),
412};
413
414static const IndustryTileLayout _tile_table_farm_1 {
415 MK(1, 1, 33),
416 MK(1, 2, 34),
417 MK(0, 0, 35),
418 MK(0, 1, 36),
419 MK(0, 2, 36),
420 MK(0, 3, 35),
421 MK(1, 0, 37),
422 MK(1, 3, 38),
423 MK(2, 0, 37),
424 MK(2, 1, 37),
425 MK(2, 2, 38),
426 MK(2, 3, 38),
427};
428
429static const IndustryTileLayout _tile_table_farm_2 {
430 MK(2, 0, 33),
431 MK(2, 1, 34),
432 MK(0, 0, 36),
433 MK(0, 1, 36),
434 MK(0, 2, 37),
435 MK(0, 3, 37),
436 MK(1, 0, 35),
437 MK(1, 1, 38),
438 MK(1, 2, 38),
439 MK(1, 3, 37),
440 MK(2, 2, 37),
441 MK(2, 3, 35),
442};
443
444static const std::vector<IndustryTileLayout> _tile_table_farm {
445 _tile_table_farm_0,
446 _tile_table_farm_1,
447 _tile_table_farm_2,
448};
449
450static const IndustryTileLayout _tile_table_copper_mine_0 {
451 MK(0, 0, 47),
452 MK(0, 1, 49),
453 MK(0, 2, 51),
454 MK(1, 0, 47),
455 MK(1, 1, 49),
456 MK(1, 2, 50),
457 MK(2, 0, 51),
458 MK(2, 1, 51),
459};
460
461static const IndustryTileLayout _tile_table_copper_mine_1 {
462 MK(0, 0, 50),
463 MK(0, 1, 47),
464 MK(0, 2, 49),
465 MK(1, 0, 47),
466 MK(1, 1, 49),
467 MK(1, 2, 51),
468 MK(2, 0, 51),
469 MK(2, 1, 47),
470 MK(2, 2, 49),
471};
472
473static const std::vector<IndustryTileLayout> _tile_table_copper_mine {
474 _tile_table_copper_mine_0,
475 _tile_table_copper_mine_1,
476};
477
478static const IndustryTileLayout _tile_table_oil_well_0 {
479 MK(0, 0, 29),
480 MK(1, 0, 29),
481 MK(2, 0, 29),
482 MK(0, 1, 29),
483 MK(0, 2, 29),
484};
485
486static const IndustryTileLayout _tile_table_oil_well_1 {
487 MK(0, 0, 29),
488 MK(1, 0, 29),
489 MK(1, 1, 29),
490 MK(2, 2, 29),
491 MK(2, 3, 29),
492};
493
494static const std::vector<IndustryTileLayout> _tile_table_oil_well {
495 _tile_table_oil_well_0,
496 _tile_table_oil_well_1,
497};
498
499static const IndustryTileLayout _tile_table_bank_0 {
500 MK(0, 0, 58),
501 MK(1, 0, 59),
502};
503
504static const std::vector<IndustryTileLayout> _tile_table_bank {
505 _tile_table_bank_0,
506};
507
508static const IndustryTileLayout _tile_table_food_process_0 {
509 MK(0, 0, 60),
510 MK(1, 0, 60),
511 MK(2, 0, 60),
512 MK(0, 1, 60),
513 MK(1, 1, 60),
514 MK(2, 1, 60),
515 MK(0, 2, 61),
516 MK(1, 2, 61),
517 MK(2, 2, 63),
518 MK(0, 3, 62),
519 MK(1, 3, 62),
520 MK(2, 3, 63),
521};
522
523static const IndustryTileLayout _tile_table_food_process_1 {
524 MK(0, 0, 61),
525 MK(1, 0, 60),
526 MK(2, 0, 61),
527 MK(3, 0, 61),
528 MK(0, 1, 62),
529 MK(1, 1, 63),
530 MK(2, 1, 63),
531 MK(3, 1, 63),
532 MK(0, 2, 60),
533 MK(1, 2, 60),
534 MK(2, 2, 60),
535 MK(3, 2, 60),
536 MK(0, 3, 62),
537 MK(1, 3, 62),
538};
539
540static const std::vector<IndustryTileLayout> _tile_table_food_process {
541 _tile_table_food_process_0,
542 _tile_table_food_process_1,
543};
544
545static const IndustryTileLayout _tile_table_paper_mill_0 {
546 MK(0, 0, 64),
547 MK(1, 0, 65),
548 MK(2, 0, 66),
549 MK(3, 0, 67),
550 MK(0, 1, 68),
551 MK(1, 1, 69),
552 MK(2, 1, 67),
553 MK(3, 1, 67),
554 MK(0, 2, 66),
555 MK(1, 2, 71),
556 MK(2, 2, 71),
557 MK(3, 2, 70),
558};
559
560static const std::vector<IndustryTileLayout> _tile_table_paper_mill {
561 _tile_table_paper_mill_0,
562};
563
564static const IndustryTileLayout _tile_table_gold_mine_0 {
565 MK(0, 0, 72),
566 MK(0, 1, 73),
567 MK(0, 2, 74),
568 MK(0, 3, 75),
569 MK(1, 0, 76),
570 MK(1, 1, 77),
571 MK(1, 2, 78),
572 MK(1, 3, 79),
573 MK(2, 0, 80),
574 MK(2, 1, 81),
575 MK(2, 2, 82),
576 MK(2, 3, 83),
577 MK(3, 0, 84),
578 MK(3, 1, 85),
579 MK(3, 2, 86),
580 MK(3, 3, 87),
581};
582
583static const std::vector<IndustryTileLayout> _tile_table_gold_mine {
584 _tile_table_gold_mine_0,
585};
586
587static const IndustryTileLayout _tile_table_bank2_0 {
588 MK(0, 0, 89),
589 MK(1, 0, 90),
590};
591
592static const std::vector<IndustryTileLayout> _tile_table_bank2 {
593 _tile_table_bank2_0,
594};
595
596static const IndustryTileLayout _tile_table_diamond_mine_0 {
597 MK(0, 0, 91),
598 MK(0, 1, 92),
599 MK(0, 2, 93),
600 MK(1, 0, 94),
601 MK(1, 1, 95),
602 MK(1, 2, 96),
603 MK(2, 0, 97),
604 MK(2, 1, 98),
605 MK(2, 2, 99),
606};
607
608static const std::vector<IndustryTileLayout> _tile_table_diamond_mine {
609 _tile_table_diamond_mine_0,
610};
611
612static const IndustryTileLayout _tile_table_iron_mine_0 {
613 MK(0, 0, 100),
614 MK(0, 1, 101),
615 MK(0, 2, 102),
616 MK(0, 3, 103),
617 MK(1, 0, 104),
618 MK(1, 1, 105),
619 MK(1, 2, 106),
620 MK(1, 3, 107),
621 MK(2, 0, 108),
622 MK(2, 1, 109),
623 MK(2, 2, 110),
624 MK(2, 3, 111),
625 MK(3, 0, 112),
626 MK(3, 1, 113),
627 MK(3, 2, 114),
628 MK(3, 3, 115),
629};
630
631static const std::vector<IndustryTileLayout> _tile_table_iron_mine {
632 _tile_table_iron_mine_0,
633};
634
635static const IndustryTileLayout _tile_table_fruit_plantation_0 {
636 MK(0, 0, 116),
637 MK(0, 1, 116),
638 MK(0, 2, 116),
639 MK(0, 3, 116),
640 MK(1, 0, 116),
641 MK(1, 1, 116),
642 MK(1, 2, 116),
643 MK(1, 3, 116),
644 MK(2, 0, 116),
645 MK(2, 1, 116),
646 MK(2, 2, 116),
647 MK(2, 3, 116),
648 MK(3, 0, 116),
649 MK(3, 1, 116),
650 MK(3, 2, 116),
651 MK(3, 3, 116),
652 MK(4, 0, 116),
653 MK(4, 1, 116),
654 MK(4, 2, 116),
655 MK(4, 3, 116),
656};
657
658static const std::vector<IndustryTileLayout> _tile_table_fruit_plantation {
659 _tile_table_fruit_plantation_0,
660};
661
662static const IndustryTileLayout _tile_table_rubber_plantation_0 {
663 MK(0, 0, 117),
664 MK(0, 1, 117),
665 MK(0, 2, 117),
666 MK(0, 3, 117),
667 MK(1, 0, 117),
668 MK(1, 1, 117),
669 MK(1, 2, 117),
670 MK(1, 3, 117),
671 MK(2, 0, 117),
672 MK(2, 1, 117),
673 MK(2, 2, 117),
674 MK(2, 3, 117),
675 MK(3, 0, 117),
676 MK(3, 1, 117),
677 MK(3, 2, 117),
678 MK(3, 3, 117),
679 MK(4, 0, 117),
680 MK(4, 1, 117),
681 MK(4, 2, 117),
682 MK(4, 3, 117),
683};
684
685static const std::vector<IndustryTileLayout> _tile_table_rubber_plantation {
686 _tile_table_rubber_plantation_0,
687};
688
689static const IndustryTileLayout _tile_table_water_supply_0 {
690 MK(0, 0, 118),
691 MK(0, 1, 119),
692 MK(1, 0, 118),
693 MK(1, 1, 119),
694};
695
696static const std::vector<IndustryTileLayout> _tile_table_water_supply {
697 _tile_table_water_supply_0,
698};
699
700static const IndustryTileLayout _tile_table_water_tower_0 {
701 MK(0, 0, 120),
702};
703
704static const std::vector<IndustryTileLayout> _tile_table_water_tower {
705 _tile_table_water_tower_0,
706};
707
708static const IndustryTileLayout _tile_table_factory2_0 {
709 MK(0, 0, 121),
710 MK(0, 1, 122),
711 MK(1, 0, 123),
712 MK(1, 1, 124),
713 MK(0, 2, 121),
714 MK(0, 3, 122),
715 MK(1, 2, 123),
716 MK(1, 3, 124),
717};
718
719static const IndustryTileLayout _tile_table_factory2_1 {
720 MK(0, 0, 121),
721 MK(0, 1, 122),
722 MK(1, 0, 123),
723 MK(1, 1, 124),
724 MK(2, 0, 121),
725 MK(2, 1, 122),
726 MK(3, 0, 123),
727 MK(3, 1, 124),
728};
729
730static const std::vector<IndustryTileLayout> _tile_table_factory2 {
731 _tile_table_factory2_0,
732 _tile_table_factory2_1,
733};
734
735static const IndustryTileLayout _tile_table_farm2_0 {
736 MK(1, 0, 33),
737 MK(1, 1, 34),
738 MK(1, 2, 36),
739 MK(0, 0, 37),
740 MK(0, 1, 37),
741 MK(0, 2, 36),
742 MK(2, 0, 35),
743 MK(2, 1, 38),
744 MK(2, 2, 38),
745};
746
747static const IndustryTileLayout _tile_table_farm2_1 {
748 MK(1, 1, 33),
749 MK(1, 2, 34),
750 MK(0, 0, 35),
751 MK(0, 1, 36),
752 MK(0, 2, 36),
753 MK(0, 3, 35),
754 MK(1, 0, 37),
755 MK(1, 3, 38),
756 MK(2, 0, 37),
757 MK(2, 1, 37),
758 MK(2, 2, 38),
759 MK(2, 3, 38),
760};
761
762static const IndustryTileLayout _tile_table_farm2_2 {
763 MK(2, 0, 33),
764 MK(2, 1, 34),
765 MK(0, 0, 36),
766 MK(0, 1, 36),
767 MK(0, 2, 37),
768 MK(0, 3, 37),
769 MK(1, 0, 35),
770 MK(1, 1, 38),
771 MK(1, 2, 38),
772 MK(1, 3, 37),
773 MK(2, 2, 37),
774 MK(2, 3, 35),
775};
776
777static const std::vector<IndustryTileLayout> _tile_table_farm2 {
778 _tile_table_farm2_0,
779 _tile_table_farm2_1,
780 _tile_table_farm2_2,
781};
782
783static const IndustryTileLayout _tile_table_lumber_mill_0 {
784 MK(0, 0, 125),
785 MK(0, 1, 126),
786 MK(1, 0, 127),
787 MK(1, 1, 128),
788};
789
790static const std::vector<IndustryTileLayout> _tile_table_lumber_mill {
791 _tile_table_lumber_mill_0,
792};
793
794static const IndustryTileLayout _tile_table_cotton_candy_0 {
795 MK(0, 0, 129),
796 MK(0, 1, 129),
797 MK(0, 2, 129),
798 MK(0, 3, 129),
799 MK(1, 0, 129),
800 MK(1, 1, 129),
801 MK(1, 2, 129),
802 MK(1, 3, 129),
803 MK(2, 0, 129),
804 MK(2, 1, 129),
805 MK(2, 2, 129),
806 MK(2, 3, 129),
807 MK(3, 0, 129),
808 MK(3, 1, 129),
809 MK(3, 2, 129),
810 MK(3, 3, 129),
811 MK(1, 4, 129),
812 MK(2, 4, 129),
813};
814
815static const IndustryTileLayout _tile_table_cotton_candy_1 {
816 MK(0, 0, 129),
817 MK(1, 0, 129),
818 MK(2, 0, 129),
819 MK(3, 0, 129),
820 MK(4, 0, 129),
821 MK(0, 1, 129),
822 MK(1, 1, 129),
823 MK(2, 1, 129),
824 MK(3, 1, 129),
825 MK(4, 1, 129),
826 MK(0, 2, 129),
827 MK(1, 2, 129),
828 MK(2, 2, 129),
829 MK(3, 2, 129),
830 MK(4, 2, 129),
831 MK(0, 3, 129),
832 MK(1, 3, 129),
833 MK(2, 3, 129),
834 MK(3, 3, 129),
835 MK(4, 3, 129),
836 MK(1, 4, 129),
837 MK(2, 4, 129),
838 MK(3, 4, 129),
839};
840
841static const std::vector<IndustryTileLayout> _tile_table_cotton_candy {
842 _tile_table_cotton_candy_0,
843 _tile_table_cotton_candy_1,
844};
845
846static const IndustryTileLayout _tile_table_candy_factory_0 {
847 MK(0, 0, 131),
848 MK(0, 1, 132),
849 MK(1, 0, 133),
850 MK(1, 1, 134),
851 MK(0, 2, 131),
852 MK(0, 3, 132),
853 MK(1, 2, 133),
854 MK(1, 3, 134),
855 MK(2, 1, 131),
856 MK(2, 2, 132),
857 MK(3, 1, 133),
858 MK(3, 2, 134),
859};
860
861static const IndustryTileLayout _tile_table_candy_factory_1 {
862 MK(0, 0, 131),
863 MK(0, 1, 132),
864 MK(1, 0, 133),
865 MK(1, 1, 134),
866 MK(2, 0, 131),
867 MK(2, 1, 132),
868 MK(3, 0, 133),
869 MK(3, 1, 134),
870 MK(1, 2, 131),
871 MK(1, 3, 132),
872 MK(2, 2, 133),
873 MK(2, 3, 134),
874};
875
876static const std::vector<IndustryTileLayout> _tile_table_candy_factory {
877 _tile_table_candy_factory_0,
878 _tile_table_candy_factory_1,
879};
880
881static const IndustryTileLayout _tile_table_battery_farm_0 {
882 MK(0, 0, 135),
883 MK(0, 1, 135),
884 MK(0, 2, 135),
885 MK(0, 3, 135),
886 MK(1, 0, 135),
887 MK(1, 1, 135),
888 MK(1, 2, 135),
889 MK(1, 3, 135),
890 MK(2, 0, 135),
891 MK(2, 1, 135),
892 MK(2, 2, 135),
893 MK(2, 3, 135),
894 MK(3, 0, 135),
895 MK(3, 1, 135),
896 MK(3, 2, 135),
897 MK(3, 3, 135),
898 MK(4, 0, 135),
899 MK(4, 1, 135),
900 MK(4, 2, 135),
901 MK(4, 3, 135),
902};
903
904static const std::vector<IndustryTileLayout> _tile_table_battery_farm {
905 _tile_table_battery_farm_0,
906};
907
908static const IndustryTileLayout _tile_table_cola_wells_0 {
909 MK(0, 0, 137),
910 MK(0, 1, 137),
911 MK(0, 2, 137),
912 MK(1, 0, 137),
913 MK(1, 1, 137),
914 MK(1, 2, 137),
915 MK(2, 1, 137),
916 MK(2, 2, 137),
917};
918
919static const IndustryTileLayout _tile_table_cola_wells_1 {
920 MK(0, 1, 137),
921 MK(0, 2, 137),
922 MK(0, 3, 137),
923 MK(1, 0, 137),
924 MK(1, 1, 137),
925 MK(1, 2, 137),
926 MK(2, 1, 137),
927};
928
929static const std::vector<IndustryTileLayout> _tile_table_cola_wells {
930 _tile_table_cola_wells_0,
931 _tile_table_cola_wells_1,
932};
933
934static const IndustryTileLayout _tile_table_toy_shop_0 {
935 MK(0, 0, 138),
936 MK(0, 1, 139),
937 MK(1, 0, 140),
938 MK(1, 1, 141),
939};
940
941static const std::vector<IndustryTileLayout> _tile_table_toy_shop {
942 _tile_table_toy_shop_0,
943};
944
945static const IndustryTileLayout _tile_table_toy_factory_0 {
946 MK(0, 0, 147),
947 MK(0, 1, 142),
948 MK(1, 0, 147),
949 MK(1, 1, 143),
950 MK(2, 0, 147),
951 MK(2, 1, 144),
952 MK(3, 0, 146),
953 MK(3, 1, 145),
954};
955
956static const std::vector<IndustryTileLayout> _tile_table_toy_factory {
957 _tile_table_toy_factory_0,
958};
959
960static const IndustryTileLayout _tile_table_plastic_fountain_0 {
961 MK(0, 0, 148),
962 MK(0, 1, 151),
963 MK(0, 2, 154),
964};
965
966static const IndustryTileLayout _tile_table_plastic_fountain_1 {
967 MK(0, 0, 148),
968 MK(1, 0, 151),
969 MK(2, 0, 154),
970};
971
972static const std::vector<IndustryTileLayout> _tile_table_plastic_fountain {
973 _tile_table_plastic_fountain_0,
974 _tile_table_plastic_fountain_1,
975};
976
977static const IndustryTileLayout _tile_table_fizzy_drink_0 {
978 MK(0, 0, 156),
979 MK(0, 1, 157),
980 MK(1, 0, 158),
981 MK(1, 1, 159),
982};
983
984static const std::vector<IndustryTileLayout> _tile_table_fizzy_drink {
985 _tile_table_fizzy_drink_0,
986};
987
988static const IndustryTileLayout _tile_table_bubble_generator_0 {
989 MK(0, 0, 163),
990 MK(0, 1, 160),
991 MK(1, 0, 163),
992 MK(1, 1, 161),
993 MK(2, 0, 163),
994 MK(2, 1, 162),
995 MK(0, 2, 163),
996 MK(0, 3, 160),
997 MK(1, 2, 163),
998 MK(1, 3, 161),
999 MK(2, 2, 163),
1000 MK(2, 3, 162),
1001};
1002
1003static const std::vector<IndustryTileLayout> _tile_table_bubble_generator {
1004 _tile_table_bubble_generator_0,
1005};
1006
1007static const IndustryTileLayout _tile_table_toffee_quarry_0 {
1008 MK(0, 0, 164),
1009 MK(1, 0, 165),
1010 MK(2, 0, 166),
1011};
1012
1013static const std::vector<IndustryTileLayout> _tile_table_toffee_quarry {
1014 _tile_table_toffee_quarry_0,
1015};
1016
1017static const IndustryTileLayout _tile_table_sugar_mine_0 {
1018 MK(0, 0, 167),
1019 MK(0, 1, 168),
1020 MK(1, 0, 169),
1021 MK(1, 1, 170),
1022 MK(2, 0, 171),
1023 MK(2, 1, 172),
1024 MK(3, 0, 173),
1025 MK(3, 1, 174),
1026};
1027
1028static const std::vector<IndustryTileLayout> _tile_table_sugar_mine {
1029 _tile_table_sugar_mine_0,
1030};
1031
1032#undef MK
1033
1035static const std::initializer_list<uint8_t> _sawmill_sounds = { SND_28_SAWMILL };
1036
1038static const std::initializer_list<uint8_t> _factory_sounds = { SND_03_FACTORY };
1039
1041static const std::initializer_list<uint8_t> _farm_sounds = { SND_24_FARM_1, SND_25_FARM_2, SND_26_FARM_3 };
1042
1044static const std::initializer_list<uint8_t> _plastic_mine_sounds = { SND_33_PLASTIC_MINE };
1045
1046enum IndustryTypes {
1047 IT_COAL_MINE = 0,
1048 IT_POWER_STATION = 1,
1049 IT_SAWMILL = 2,
1050 IT_FOREST = 3,
1051 IT_OIL_REFINERY = 4,
1052 IT_OIL_RIG = 5,
1053 IT_FACTORY = 6,
1054 IT_PRINTING_WORKS = 7,
1055 IT_STEEL_MILL = 8,
1056 IT_FARM = 9,
1057 IT_COPPER_MINE = 10,
1058 IT_OIL_WELL = 11,
1059 IT_BANK_TEMP = 12,
1060 IT_FOOD_PROCESS = 13,
1061 IT_PAPER_MILL = 14,
1062 IT_GOLD_MINE = 15,
1063 IT_BANK_TROPIC_ARCTIC = 16,
1064 IT_DIAMOND_MINE = 17,
1065 IT_IRON_MINE = 18,
1066 IT_FRUIT_PLANTATION = 19,
1067 IT_RUBBER_PLANTATION = 20,
1068 IT_WATER_SUPPLY = 21,
1069 IT_WATER_TOWER = 22,
1070 IT_FACTORY_2 = 23,
1071 IT_FARM_2 = 24,
1072 IT_LUMBER_MILL = 25,
1073 IT_COTTON_CANDY = 26,
1074 IT_CANDY_FACTORY = 27,
1075 IT_BATTERY_FARM = 28,
1076 IT_COLA_WELLS = 29,
1077 IT_TOY_SHOP = 30,
1078 IT_TOY_FACTORY = 31,
1079 IT_PLASTIC_FOUNTAINS = 32,
1080 IT_FIZZY_DRINK_FACTORY = 33,
1081 IT_BUBBLE_GENERATOR = 34,
1082 IT_TOFFEE_QUARRY = 35,
1083 IT_SUGAR_MINE = 36,
1084 IT_END,
1085};
1086
1128#define MI(tbl, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \
1129 c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
1130 {tbl, d, 0, pc, {c1, c2, c3}, proc, \
1131 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1132 {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1133 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1134 {{im1, 0}, {im2, 0}, {im3, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, \
1135 pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
1136 0, true, GRFFileProps(INVALID_INDUSTRYTYPE), snd, \
1137 {{p1, p2}}, {{a1, a2, a3}}}
1138 /* Format:
1139 tile table count and sounds table
1140 cost multiplier appear chances(4ingame, 4random) map colour
1141 cannot be close to these industries (3 times) check proc
1142 (produced cargo + rate) (twice) minimum cargo moved to station
1143 3 accepted cargo and their corresponding input multiplier
1144 industry life climate availability
1145 industry behaviours
1146 industry name building text
1147 messages : Closure production up production down */
1148static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
1149 MI(_tile_table_coal_mine, {},
1150 210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1151 IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1152 CT_COAL, 15, CT_INVALID, 0, 5,
1153 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1154 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1156 STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1157 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1158
1159 MI(_tile_table_power_station, {},
1160 240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1161 IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1162 CT_INVALID, 0, CT_INVALID, 0, 5,
1163 CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1164 INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1165 INDUSTRYBEH_NONE,
1166 STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1167 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1168
1169 MI(_tile_table_sawmill, _sawmill_sounds,
1170 224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1171 IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1172 CT_GOODS, 0, CT_INVALID, 0, 5,
1173 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1174 INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1175 INDUSTRYBEH_NONE,
1176 STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1177 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1178
1179 MI(_tile_table_forest, {},
1180 200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1181 IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
1182 CT_WOOD, 13, CT_INVALID, 0, 30,
1183 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1184 INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1185 INDUSTRYBEH_NONE,
1186 STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1187 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1188
1189 MI(_tile_table_oil_refinery, {},
1190 244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1191 IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
1192 CT_GOODS, 0, CT_INVALID, 0, 5,
1193 CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1194 INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1196 STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1197 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1198
1199 MI(_tile_table_oil_rig, {},
1200 240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1201 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
1202 CT_OIL, 15, CT_PASSENGERS, 2, 5,
1203 CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1204 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1206 STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1207 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1208
1209 MI(_tile_table_factory, _factory_sounds,
1210 208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1211 IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
1212 CT_GOODS, 0, CT_INVALID, 0, 5,
1213 MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256,
1214 INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1216 STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1217 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1218
1219 MI(_tile_table_printing_works, _factory_sounds,
1220 208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1221 IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1222 CT_GOODS, 0, CT_INVALID, 0, 5,
1223 CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1224 INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1225 INDUSTRYBEH_NONE,
1226 STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1227 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1228
1229 MI(_tile_table_steel_mill, {},
1230 215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1231 IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
1232 CT_STEEL, 0, CT_INVALID, 0, 5,
1233 CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1234 INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1235 INDUSTRYBEH_NONE,
1236 STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1237 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1238
1239 MI(_tile_table_farm, _farm_sounds,
1240 250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1241 IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
1243 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1244 INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1246 STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1247 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1248
1249 MI(_tile_table_copper_mine, {},
1250 205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1251 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1252 CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1253 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1254 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1255 INDUSTRYBEH_NONE,
1256 STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1257 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1258
1259 MI(_tile_table_oil_well, {},
1260 220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1261 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1262 CT_OIL, 12, CT_INVALID, 0, 5,
1263 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1264 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1266 STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1267 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1268
1269 MI(_tile_table_bank, {},
1270 255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1271 IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1274 INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE,
1276 STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1277 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1278
1279 MI(_tile_table_food_process, {},
1280 206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1281 IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
1282 CT_FOOD, 0, CT_INVALID, 0, 5,
1284 INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1285 INDUSTRYBEH_NONE,
1286 STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1287 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1288
1289 MI(_tile_table_paper_mill, _sawmill_sounds,
1290 227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1291 IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
1292 CT_PAPER, 0, CT_INVALID, 0, 5,
1293 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1294 INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1295 INDUSTRYBEH_NONE,
1296 STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1297 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1298
1299 MI(_tile_table_gold_mine, {},
1300 208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1301 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1303 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1304 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC,
1305 INDUSTRYBEH_NONE,
1306 STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1307 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1308
1309 MI(_tile_table_bank2, {},
1310 151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1311 IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
1312 CT_INVALID, 0, CT_INVALID, 0, 5,
1314 INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1316 STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1317 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1318
1319 MI(_tile_table_diamond_mine, {},
1320 213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1321 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1323 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1324 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1325 INDUSTRYBEH_NONE,
1326 STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1327 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1328
1329 MI(_tile_table_iron_mine, {},
1330 220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1331 IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1332 CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1333 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1334 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1335 INDUSTRYBEH_NONE,
1336 STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1337 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1338
1339 MI(_tile_table_fruit_plantation, {},
1340 225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1341 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1342 MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15,
1343 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1344 INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1345 INDUSTRYBEH_NONE,
1346 STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1347 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1348
1349 MI(_tile_table_rubber_plantation, {},
1350 218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1351 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1352 CT_RUBBER, 10, CT_INVALID, 0, 15,
1353 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1354 INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1355 INDUSTRYBEH_NONE,
1356 STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1357 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1358
1359 MI(_tile_table_water_supply, {},
1360 199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1361 IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
1362 CT_WATER, 12, CT_INVALID, 0, 5,
1363 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1364 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1365 INDUSTRYBEH_NONE,
1366 STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1367 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1368
1369 MI(_tile_table_water_tower, {},
1370 115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1371 IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
1372 CT_INVALID, 0, CT_INVALID, 0, 5,
1373 CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1374 INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC,
1376 STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1377 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1378
1379 MI(_tile_table_factory2, _factory_sounds,
1380 208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1381 IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
1382 CT_GOODS, 0, CT_INVALID, 0, 5,
1383 CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1384 INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1385 INDUSTRYBEH_NONE,
1386 STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1387 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1388
1389 MI(_tile_table_farm2, {},
1390 250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1391 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1393 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1394 INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1396 STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1397 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1398
1399 MI(_tile_table_lumber_mill, {},
1400 135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1401 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
1402 CT_WOOD, 0, CT_INVALID, 0, 5,
1403 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1404 INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1406 STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1407 STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1408
1409 MI(_tile_table_cotton_candy, {},
1410 195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1411 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1412 CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1413 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1414 INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1415 INDUSTRYBEH_NONE,
1416 STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1417 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1418
1419 MI(_tile_table_candy_factory, {},
1420 206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1421 IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
1422 CT_CANDY, 0, CT_INVALID, 0, 5,
1423 CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1424 INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1425 INDUSTRYBEH_NONE,
1426 STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1427 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1428
1429 MI(_tile_table_battery_farm, {},
1430 187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1431 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1432 CT_BATTERIES, 11, CT_INVALID, 0, 30,
1433 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1434 INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1435 INDUSTRYBEH_NONE,
1436 STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1437 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1438
1439 MI(_tile_table_cola_wells, {},
1440 193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1441 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1442 CT_COLA, 12, CT_INVALID, 0, 5,
1443 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1444 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1445 INDUSTRYBEH_NONE,
1446 STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1447 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1448
1449 MI(_tile_table_toy_shop, {},
1450 133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1451 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1452 CT_INVALID, 0, CT_INVALID, 0, 5,
1453 CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1454 INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND,
1456 STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1457 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1458
1459 MI(_tile_table_toy_factory, {},
1460 163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1461 IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
1462 CT_TOYS, 0, CT_INVALID, 0, 5,
1463 CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1464 INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1465 INDUSTRYBEH_NONE,
1466 STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1467 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1468
1469 MI(_tile_table_plastic_fountain, _plastic_mine_sounds,
1470 192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1471 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1472 CT_PLASTIC, 14, CT_INVALID, 0, 5,
1473 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1474 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1475 INDUSTRYBEH_NONE,
1476 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1477 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1478
1479 MI(_tile_table_fizzy_drink, {},
1480 177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1481 IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
1482 CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1483 CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1484 INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1485 INDUSTRYBEH_NONE,
1486 STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1487 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1488
1489 MI(_tile_table_bubble_generator, {},
1490 203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1491 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
1492 CT_BUBBLES, 13, CT_INVALID, 0, 5,
1493 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1494 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1495 INDUSTRYBEH_NONE,
1496 STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1497 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1498
1499 MI(_tile_table_toffee_quarry, {},
1500 213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1501 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1502 CT_TOFFEE, 10, CT_INVALID, 0, 5,
1503 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1504 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1505 INDUSTRYBEH_NONE,
1506 STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1507 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1508
1509 MI(_tile_table_sugar_mine, {},
1510 210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1511 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1512 CT_SUGAR, 11, CT_INVALID, 0, 5,
1513 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1514 INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1515 INDUSTRYBEH_NONE,
1516 STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1517 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1518};
1519#undef MI
1520
1534#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \
1535 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1536 {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE), {c1, c2, c3} \
1537}
1538static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1539 /* Coal Mine */
1547
1548 /* Power Station */
1553
1554 /* Sawmill */
1560
1561 /* Forest Artic, temperate */
1564
1565 /* Oil refinery */
1572
1573 /* Oil Rig */
1579
1580 /* Oil Wells artic, temperate and sub-tropical */
1585
1586 /* Farm tropic, arctic and temperate */
1593
1594 /* Factory temperate */
1599
1600 /* Printing works */
1605
1606 /* Copper ore mine */
1612
1613 /* Steel mill */
1620
1621 /* Bank temperate*/
1624
1625 /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1630
1631 /* Paper mill */
1640
1641 /* Gold mine */
1659
1660 /* Bank Sub Arctic */
1663
1664 /* Diamond mine */
1674
1675 /* Iron ore Mine */
1692
1693 /* Fruit plantation */
1695
1696 /* Rubber plantation */
1698
1699 /* Water supply */
1702
1703 /* Water tower */
1705
1706 /* Factory (sub-tropical) */
1707 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1708 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1709 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1710 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1711
1712 /* Lumber mill */
1717
1718 /* Candyfloss forest */
1721
1722 /* Sweet factory */
1723 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1724 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1725 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1726 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1727
1728 /* Battery farm */
1731
1732 /* Cola wells */
1734
1735 /* Toy shop */
1740
1741 /* Toy factory */
1742 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1743 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1744 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1745 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1746 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1747 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1748
1749 /* Plastic Fountain */
1758
1759 /* Fizzy drink factory */
1760 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1761 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1762 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1763 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1764
1765 /* Bubble generator */
1770
1771 /* Toffee quarry */
1775
1776 /* Sugar mine */
1785};
1786#undef MT
1787
1788#endif /* BUILD_INDUSTRY_H */
static const std::initializer_list< uint8_t > _farm_sounds
Array with 3 animal sounds, for farms.
#define MK(x, y, m)
Definition of an industry tiles layout.
#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3)
Writes the properties of an industry tile into the IndustryTileSpec struct.
static const std::initializer_list< uint8_t > _factory_sounds
Array with whistle sound, for factory.
static const std::initializer_list< uint8_t > _plastic_mine_sounds
Array with... hem... a sound of toyland.
static const std::initializer_list< uint8_t > _sawmill_sounds
Array with saw sound, for sawmill.
#define MI(tbl, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3)
Writes the properties of an industry into the IndustrySpec struct.
static constexpr CargoLabel CT_INVALID
Invalid cargo type.
Definition cargo_type.h:71
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
Definition cargo_type.h:30
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
Definition cargo_type.h:85
@ MCT_LIVESTOCK_FRUIT
Cargo can be livestock or fruit.
Definition cargo_type.h:84
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
Definition cargo_type.h:86
static const IndustryGfx NEW_INDUSTRYTILEOFFSET
original number of tiles
static const IndustryGfx INDUSTRYTILE_NOANIM
flag to mark industry tiles as having no animation
static const IndustryType NEW_INDUSTRYOFFSET
original number of industry types
@ INDUSTRYLIFE_EXTRACTIVE
Like mines.
@ INDUSTRYLIFE_BLACK_HOLE
Like power plants and banks.
@ INDUSTRYLIFE_PROCESSING
Like factories.
@ INDUSTRYLIFE_ORGANIC
Like forests.
@ CHECK_REFINERY
Industry should be positioned near edge of the map.
@ CHECK_PLANTATION
Industry should NOT be in the desert.
@ CHECK_OIL_RIG
Industries at sea should be positioned near edge of the map.
@ CHECK_LUMBERMILL
Industry should be in the rain forest.
@ CHECK_WATER
Industry should be in the desert.
@ CHECK_BUBBLEGEN
Industry should be in low land.
@ CHECK_FOREST
Industry should be build above snow-line in arctic climate.
@ CHECK_FARM
Industry should be below snow-line in arctic.
@ CHECK_NOTHING
Always succeeds.
std::vector< IndustryTileLayoutTile > IndustryTileLayout
A complete tile layout for an industry is a list of tiles.
@ INDUSTRYBEH_CAN_SUBSIDENCE
can cause a subsidence (coal mine, shaft that collapses)
@ INDUSTRYBEH_AIRPLANE_ATTACKS
can be exploded by a military airplane (oil refinery)
@ INDUSTRYBEH_CHOPPER_ATTACKS
can be exploded by a military helicopter (factory)
@ INDUSTRYBEH_DONT_INCR_PROD
do not increase production (oil wells) in the temperate climate
@ INDUSTRYBEH_PLANT_ON_BUILT
Fields are planted around when built (all farms)
@ INDUSTRYBEH_AFTER_1960
can only be built after 1960 (oil rigs)
@ INDUSTRYBEH_CUT_TREES
cuts trees and produce first output cargo from them (lumber mill)
@ INDUSTRYBEH_BUILT_ONWATER
is built on water (oil rig)
@ INDUSTRYBEH_PLANT_FIELDS
periodically plants fields around itself (temp and arctic farms)
@ INDUSTRYBEH_ONLY_NEARTOWN
is always built near towns (toy shop)
@ INDUSTRYBEH_TOWN1200_MORE
can only be built in towns larger than 1200 inhabitants (temperate bank)
@ INDUSTRYBEH_ONLY_INTOWN
can only be built in towns (arctic/tropic banks, water tower)
@ INDUSTRYBEH_BEFORE_1950
can only be built before 1950 (oil wells)
@ INDUSTRYBEH_AI_AIRSHIP_ROUTES
ai will attempt to establish air/ship routes to this industry (oil rig)
@ SLOPE_E
the east corner of the tile is raised
Definition slope_type.h:52
@ SLOPE_S
the south corner of the tile is raised
Definition slope_type.h:51
@ SLOPE_STEEP
indicates the slope is steep
Definition slope_type.h:54
@ SND_26_FARM_3
36 == 0x24 Industry producing: farm (3): horse
Definition sound_type.h:83
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition sound_type.h:48
@ SND_24_FARM_1
34 == 0x22 Industry producing: farm (1): sheep
Definition sound_type.h:81
@ SND_28_SAWMILL
38 == 0x26 Industry producing: sawmill
Definition sound_type.h:85
@ SND_25_FARM_2
35 == 0x23 Industry producing: farm (2): cow
Definition sound_type.h:82
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition sound_type.h:98
Defines the data structure for constructing industry.
Defines the data structure of each individual tile of an industry.