OpenTTD Source 20260903-master-ged04d336ed
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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
9
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),
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 : uint8_t {
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
1126
1127#define MI(tbl, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \
1128 c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
1129 {tbl, d, 0, pc, {c1, c2, c3}, proc, \
1130 {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}, \
1131 {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1132 {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}, \
1133 {{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}}, \
1134 pr, clim, bev, PixelColour{col}, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
1135 IndustryCallbackMasks{}, true, SubstituteGRFFileProps(IT_INVALID), snd, {}, \
1136 {{p1, p2}}, {{a1, a2, a3}}}
1137 /* Format:
1138 tile table count and sounds table
1139 cost multiplier appear chances(4ingame, 4random) map colour
1140 cannot be close to these industries (3 times) check proc
1141 (produced cargo + rate) (twice) minimum cargo moved to station
1142 3 accepted cargo and their corresponding input multiplier
1143 industry life climate availability
1144 industry behaviours
1145 industry name building text
1146 messages : Closure production up production down */
1148 MI(_tile_table_coal_mine, {},
1149 210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1150 IT_POWER_STATION, IT_INVALID, IT_INVALID, IndustryCheck::None,
1151 CT_COAL, 15, CT_INVALID, 0, 5,
1152 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1155 STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1156 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1157
1158 MI(_tile_table_power_station, {},
1159 240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1160 IT_COAL_MINE, IT_INVALID, IT_INVALID, IndustryCheck::None,
1161 CT_INVALID, 0, CT_INVALID, 0, 5,
1162 CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1164 {},
1165 STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1166 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1167
1168 MI(_tile_table_sawmill, _sawmill_sounds,
1169 224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1170 IT_FOREST, IT_INVALID, IT_INVALID, IndustryCheck::None,
1171 CT_GOODS, 0, CT_INVALID, 0, 5,
1172 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1174 {},
1175 STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1176 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1177
1178 MI(_tile_table_forest, {},
1179 200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1180 IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, IndustryCheck::Forest,
1181 CT_WOOD, 13, CT_INVALID, 0, 30,
1182 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1184 {},
1185 STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1186 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1187
1188 MI(_tile_table_oil_refinery, {},
1189 244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1190 IT_OIL_RIG, IT_INVALID, IT_INVALID, IndustryCheck::Refinery,
1191 CT_GOODS, 0, CT_INVALID, 0, 5,
1192 CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1195 STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1196 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1197
1198 MI(_tile_table_oil_rig, {},
1199 240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1200 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, IndustryCheck::OilRig,
1201 CT_OIL, 15, CT_PASSENGERS, 2, 5,
1202 CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1205 STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1206 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1207
1208 MI(_tile_table_factory, _factory_sounds,
1209 208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1210 IT_FARM, IT_STEEL_MILL, IT_INVALID, IndustryCheck::None,
1211 CT_GOODS, 0, CT_INVALID, 0, 5,
1212 MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256,
1215 STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1216 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1217
1218 MI(_tile_table_printing_works, _factory_sounds,
1219 208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1220 IT_PAPER_MILL, IT_INVALID, IT_INVALID, IndustryCheck::None,
1221 CT_GOODS, 0, CT_INVALID, 0, 5,
1222 CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1224 {},
1225 STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1226 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1227
1228 MI(_tile_table_steel_mill, {},
1229 215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1230 IT_IRON_MINE, IT_FACTORY, IT_INVALID, IndustryCheck::None,
1231 CT_STEEL, 0, CT_INVALID, 0, 5,
1232 CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1234 {},
1235 STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1236 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1237
1238 MI(_tile_table_farm, _farm_sounds,
1239 250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1240 IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, IndustryCheck::Farm,
1242 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1245 STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1246 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1247
1248 MI(_tile_table_copper_mine, {},
1249 205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1250 IT_FACTORY_2, IT_INVALID, IT_INVALID, IndustryCheck::None,
1251 CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1252 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1254 {},
1255 STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1256 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1257
1258 MI(_tile_table_oil_well, {},
1259 220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1260 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1261 CT_OIL, 12, CT_INVALID, 0, 5,
1262 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1265 STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1266 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1267
1268 MI(_tile_table_bank, {},
1269 255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1270 IT_BANK_TEMP, IT_INVALID, IT_INVALID, IndustryCheck::None,
1275 STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1276 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1277
1278 MI(_tile_table_food_process, {},
1279 206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1280 IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, IndustryCheck::None,
1281 CT_FOOD, 0, CT_INVALID, 0, 5,
1284 {},
1285 STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1286 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1287
1288 MI(_tile_table_paper_mill, _sawmill_sounds,
1289 227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1290 IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, IndustryCheck::None,
1291 CT_PAPER, 0, CT_INVALID, 0, 5,
1292 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1294 {},
1295 STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1296 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1297
1298 MI(_tile_table_gold_mine, {},
1299 208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1300 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, IndustryCheck::None,
1302 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1304 {},
1305 STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1306 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1307
1308 MI(_tile_table_bank2, {},
1309 151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1310 IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, IndustryCheck::None,
1311 CT_INVALID, 0, CT_INVALID, 0, 5,
1315 STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1316 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1317
1318 MI(_tile_table_diamond_mine, {},
1319 213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1320 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, IndustryCheck::None,
1322 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1324 {},
1325 STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1326 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1327
1328 MI(_tile_table_iron_mine, {},
1329 220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1330 IT_STEEL_MILL, IT_INVALID, IT_INVALID, IndustryCheck::None,
1331 CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1332 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1334 {},
1335 STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1336 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1337
1338 MI(_tile_table_fruit_plantation, {},
1339 225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1340 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, IndustryCheck::Plantation,
1341 MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15,
1342 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1344 {},
1345 STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1346 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1347
1348 MI(_tile_table_rubber_plantation, {},
1349 218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1350 IT_FACTORY_2, IT_INVALID, IT_INVALID, IndustryCheck::Plantation,
1351 CT_RUBBER, 10, CT_INVALID, 0, 15,
1352 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1354 {},
1355 STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1356 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1357
1358 MI(_tile_table_water_supply, {},
1359 199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1360 IT_WATER_TOWER, IT_INVALID, IT_INVALID, IndustryCheck::Water,
1361 CT_WATER, 12, CT_INVALID, 0, 5,
1362 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1364 {},
1365 STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1366 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1367
1368 MI(_tile_table_water_tower, {},
1369 115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1370 IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, IndustryCheck::Water,
1371 CT_INVALID, 0, CT_INVALID, 0, 5,
1372 CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1375 STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1376 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1377
1378 MI(_tile_table_factory2, _factory_sounds,
1379 208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1380 IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, IndustryCheck::Plantation,
1381 CT_GOODS, 0, CT_INVALID, 0, 5,
1382 CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1384 {},
1385 STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1386 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1387
1388 MI(_tile_table_farm2, {},
1389 250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1390 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, IndustryCheck::Plantation,
1392 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1395 STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1396 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1397
1398 MI(_tile_table_lumber_mill, {},
1399 135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1400 IT_FACTORY_2, IT_INVALID, IT_INVALID, IndustryCheck::Lumbermill,
1401 CT_WOOD, 0, CT_INVALID, 0, 5,
1402 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1405 STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1406 STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1407
1408 MI(_tile_table_cotton_candy, {},
1409 195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1410 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1411 CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1412 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1414 {},
1415 STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1416 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1417
1418 MI(_tile_table_candy_factory, {},
1419 206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1420 IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, IndustryCheck::None,
1421 CT_CANDY, 0, CT_INVALID, 0, 5,
1422 CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1424 {},
1425 STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1426 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1427
1428 MI(_tile_table_battery_farm, {},
1429 187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1430 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1431 CT_BATTERIES, 11, CT_INVALID, 0, 30,
1432 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1434 {},
1435 STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1436 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1437
1438 MI(_tile_table_cola_wells, {},
1439 193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1440 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1441 CT_COLA, 12, CT_INVALID, 0, 5,
1442 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1444 {},
1445 STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1446 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1447
1448 MI(_tile_table_toy_shop, {},
1449 133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1450 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1451 CT_INVALID, 0, CT_INVALID, 0, 5,
1452 CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1455 STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1456 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1457
1458 MI(_tile_table_toy_factory, {},
1459 163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1460 IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, IndustryCheck::None,
1461 CT_TOYS, 0, CT_INVALID, 0, 5,
1462 CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1464 {},
1465 STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1466 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1467
1468 MI(_tile_table_plastic_fountain, _plastic_mine_sounds,
1469 192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1470 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1471 CT_PLASTIC, 14, CT_INVALID, 0, 5,
1472 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1474 {},
1475 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1476 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1477
1478 MI(_tile_table_fizzy_drink, {},
1479 177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1480 IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, IndustryCheck::None,
1481 CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1482 CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1484 {},
1485 STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1486 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1487
1488 MI(_tile_table_bubble_generator, {},
1489 203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1490 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::BubbleGen,
1491 CT_BUBBLES, 13, CT_INVALID, 0, 5,
1492 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1494 {},
1495 STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1496 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1497
1498 MI(_tile_table_toffee_quarry, {},
1499 213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1500 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1501 CT_TOFFEE, 10, CT_INVALID, 0, 5,
1502 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1504 {},
1505 STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1506 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1507
1508 MI(_tile_table_sugar_mine, {},
1509 210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1510 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, IndustryCheck::None,
1511 CT_SUGAR, 11, CT_INVALID, 0, 5,
1512 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1514 {},
1515 STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1516 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1517};
1518#undef MI
1519
1533#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \
1534 {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}, \
1535 {ca1, ca2, ca3}, sl, a1, a2, a3, IndustryTileCallbackMasks{}, AnimationInfo<IndustryAnimationTriggers>{}, IndustryTileSpecialFlags{}, true, SubstituteGRFFileProps(INVALID_INDUSTRYTILE), {}, {c1, c2, c3} \
1536}
1537static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1538 /* Coal Mine */
1546
1547 /* Power Station */
1552
1553 /* Sawmill */
1559
1560 /* Forest Artic, temperate */
1563
1564 /* Oil refinery */
1571
1572 /* Oil Rig */
1578
1579 /* Oil Wells arctic, temperate and sub-tropical */
1584
1585 /* Farm tropic, arctic and temperate */
1592
1593 /* Factory temperate */
1598
1599 /* Printing works */
1604
1605 /* Copper ore mine */
1611
1612 /* Steel mill */
1619
1620 /* Bank temperate*/
1623
1624 /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1629
1630 /* Paper mill */
1639
1640 /* Gold mine */
1658
1659 /* Bank Sub Arctic */
1662
1663 /* Diamond mine */
1673
1674 /* Iron ore Mine */
1691
1692 /* Fruit plantation */
1694
1695 /* Rubber plantation */
1697
1698 /* Water supply */
1701
1702 /* Water tower */
1704
1705 /* Factory (sub-tropical) */
1706 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
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
1711 /* Lumber mill */
1716
1717 /* Candyfloss forest */
1720
1721 /* Sweet factory */
1722 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
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
1727 /* Battery farm */
1730
1731 /* Cola wells */
1733
1734 /* Toy shop */
1739
1740 /* Toy factory */
1741 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
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
1748 /* Plastic Fountain */
1757
1758 /* Fizzy drink factory */
1759 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
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
1764 /* Bubble generator */
1769
1770 /* Toffee quarry */
1774
1775 /* Sugar mine */
1784};
1785#undef MT
1786
1787#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:72
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
Definition cargo_type.h:86
@ MCT_LIVESTOCK_FRUIT
Cargo can be livestock or fruit.
Definition cargo_type.h:85
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
Definition cargo_type.h:87
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
Definition cargo_type.h:31
static const IndustryGfx NEW_INDUSTRYTILEOFFSET
original number of tiles
static const IndustryGfx INDUSTRYTILE_NOANIM
Sentinel value to mark industry tiles as having no animation.
static const IndustryType NEW_INDUSTRYOFFSET
original number of industry types
static constexpr IndustryGfx GFX_WATERTILE_SPECIALCHECK
Sentinel marker in industry layout to perform a water tile check.
@ AirplaneAttacks
can be exploded by a military airplane (oil refinery)
@ CutTrees
cuts trees and produce first output cargo from them (lumber mill)
@ PlantOnBuild
Fields are planted around when built (all farms).
@ Before1950
can only be built before 1950 (oil wells)
@ BuiltOnWater
is built on water (oil rig)
@ DontIncrProd
do not increase production (oil wells) in the temperate climate
@ AIAirShipRoutes
ai will attempt to establish air/ship routes to this industry (oil rig)
@ After1960
can only be built after 1960 (oil rigs)
@ CanSubsidence
can cause a subsidence (coal mine, shaft that collapses)
@ OnlyInTown
can only be built in towns (arctic/tropic banks, water tower)
@ PlantFields
periodically plants fields around itself (temp and arctic farms)
@ Town1200More
can only be built in towns larger than 1200 inhabitants (temperate bank)
@ ChopperAttacks
can be exploded by a military helicopter (factory)
@ OnlyNearTown
is always built near towns (toy shop)
@ Processing
Like factories.
@ Organic
Like forests.
@ Extractive
Like mines.
std::vector< IndustryTileLayoutTile > IndustryTileLayout
A complete tile layout for an industry is a list of tiles.
EnumBitSet< IndustryBehaviour, uint32_t > IndustryBehaviours
Bitset of IndustryBehaviour elements.
@ Water
Industry should be in the desert.
@ OilRig
Industries at sea should be positioned near edge of the map.
@ None
Always succeeds.
@ Plantation
Industry should NOT be in the desert.
@ Lumbermill
Industry should be in the rainforest.
@ Farm
Industry should be below snow-line in arctic.
@ Refinery
Industry should be positioned near edge of the map.
@ Forest
Industry should be build above snow-line in arctic climate.
@ BubbleGen
Industry should be in low land.
static constexpr IndustryLifeTypes INDUSTRYLIFE_BLACK_HOLE
Like power plants and banks.
EnumBitSet< LandscapeType, uint8_t > LandscapeTypes
Bitset of LandscapeType elements.
@ Arctic
Landscape with snow levels.
@ Toyland
Landscape with funky industries and vehicles.
@ Tropic
Landscape with distinct rainforests and deserts,.
@ Temperate
Base landscape.
const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET]
Extern declaration for _origin_industry_specs in table/build_industry.h.
@ SLOPE_E
the east corner of the tile is raised
Definition slope_type.h:57
@ SLOPE_S
the south corner of the tile is raised
Definition slope_type.h:56
@ SLOPE_STEEP
indicates the slope is steep
Definition slope_type.h:59
@ SND_26_FARM_3
36 == 0x24 Industry producing: farm (3): horse
Definition sound_type.h:84
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition sound_type.h:49
@ SND_24_FARM_1
34 == 0x22 Industry producing: farm (1): sheep
Definition sound_type.h:82
@ SND_28_SAWMILL
38 == 0x26 Industry producing: sawmill
Definition sound_type.h:86
@ SND_25_FARM_2
35 == 0x23 Industry producing: farm (2): cow
Definition sound_type.h:83
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition sound_type.h:99
Defines the data structure for constructing industry.
Defines the data structure of each individual tile of an industry.