OpenTTD Source  20240919-master-gdf0233f4c2
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 
23 static 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 
32 static 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 
44 static 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 
53 static 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 
66 static 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 
73 static 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 
84 static 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 
95 static 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 
104 static 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 
110 static 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 
121 static 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 
132 static const std::vector<IndustryTileLayout> _tile_table_sawmill {
133  _tile_table_sawmill_0,
134  _tile_table_sawmill_1,
135 };
136 
137 static 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 
158 static 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 
184 static const std::vector<IndustryTileLayout> _tile_table_forest {
185  _tile_table_forest_0,
186  _tile_table_forest_1,
187 };
188 
189 static 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 
207 static 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 
225 static const std::vector<IndustryTileLayout> _tile_table_oil_refinery {
226  _tile_table_oil_refinery_0,
227  _tile_table_oil_refinery_1,
228 };
229 
230 static 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 
291 static const std::vector<IndustryTileLayout> _tile_table_oil_rig {
292  _tile_table_oil_rig_0,
293 };
294 
295 static 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 
310 static 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 
325 static const std::vector<IndustryTileLayout> _tile_table_factory {
326  _tile_table_factory_0,
327  _tile_table_factory_1,
328 };
329 
330 static 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 
345 static 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 
360 static const std::vector<IndustryTileLayout> _tile_table_printing_works {
361  _tile_table_printing_works_0,
362  _tile_table_printing_works_1,
363 };
364 
365 static 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 
380 static 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 
397 static const std::vector<IndustryTileLayout> _tile_table_steel_mill {
398  _tile_table_steel_mill_0,
399  _tile_table_steel_mill_1,
400 };
401 
402 static 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 
414 static 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 
429 static 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 
444 static const std::vector<IndustryTileLayout> _tile_table_farm {
445  _tile_table_farm_0,
446  _tile_table_farm_1,
447  _tile_table_farm_2,
448 };
449 
450 static 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 
461 static 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 
473 static const std::vector<IndustryTileLayout> _tile_table_copper_mine {
474  _tile_table_copper_mine_0,
475  _tile_table_copper_mine_1,
476 };
477 
478 static 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 
486 static 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 
494 static const std::vector<IndustryTileLayout> _tile_table_oil_well {
495  _tile_table_oil_well_0,
496  _tile_table_oil_well_1,
497 };
498 
499 static const IndustryTileLayout _tile_table_bank_0 {
500  MK(0, 0, 58),
501  MK(1, 0, 59),
502 };
503 
504 static const std::vector<IndustryTileLayout> _tile_table_bank {
505  _tile_table_bank_0,
506 };
507 
508 static 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 
523 static 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 
540 static const std::vector<IndustryTileLayout> _tile_table_food_process {
541  _tile_table_food_process_0,
542  _tile_table_food_process_1,
543 };
544 
545 static 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 
560 static const std::vector<IndustryTileLayout> _tile_table_paper_mill {
561  _tile_table_paper_mill_0,
562 };
563 
564 static 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 
583 static const std::vector<IndustryTileLayout> _tile_table_gold_mine {
584  _tile_table_gold_mine_0,
585 };
586 
587 static const IndustryTileLayout _tile_table_bank2_0 {
588  MK(0, 0, 89),
589  MK(1, 0, 90),
590 };
591 
592 static const std::vector<IndustryTileLayout> _tile_table_bank2 {
593  _tile_table_bank2_0,
594 };
595 
596 static 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 
608 static const std::vector<IndustryTileLayout> _tile_table_diamond_mine {
609  _tile_table_diamond_mine_0,
610 };
611 
612 static 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 
631 static const std::vector<IndustryTileLayout> _tile_table_iron_mine {
632  _tile_table_iron_mine_0,
633 };
634 
635 static 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 
658 static const std::vector<IndustryTileLayout> _tile_table_fruit_plantation {
659  _tile_table_fruit_plantation_0,
660 };
661 
662 static 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 
685 static const std::vector<IndustryTileLayout> _tile_table_rubber_plantation {
686  _tile_table_rubber_plantation_0,
687 };
688 
689 static 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 
696 static const std::vector<IndustryTileLayout> _tile_table_water_supply {
697  _tile_table_water_supply_0,
698 };
699 
700 static const IndustryTileLayout _tile_table_water_tower_0 {
701  MK(0, 0, 120),
702 };
703 
704 static const std::vector<IndustryTileLayout> _tile_table_water_tower {
705  _tile_table_water_tower_0,
706 };
707 
708 static 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 
719 static 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 
730 static const std::vector<IndustryTileLayout> _tile_table_factory2 {
731  _tile_table_factory2_0,
732  _tile_table_factory2_1,
733 };
734 
735 static 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 
747 static 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 
762 static 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 
777 static const std::vector<IndustryTileLayout> _tile_table_farm2 {
778  _tile_table_farm2_0,
779  _tile_table_farm2_1,
780  _tile_table_farm2_2,
781 };
782 
783 static 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 
790 static const std::vector<IndustryTileLayout> _tile_table_lumber_mill {
791  _tile_table_lumber_mill_0,
792 };
793 
794 static 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 
815 static 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 
841 static const std::vector<IndustryTileLayout> _tile_table_cotton_candy {
842  _tile_table_cotton_candy_0,
843  _tile_table_cotton_candy_1,
844 };
845 
846 static 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 
861 static 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 
876 static const std::vector<IndustryTileLayout> _tile_table_candy_factory {
877  _tile_table_candy_factory_0,
878  _tile_table_candy_factory_1,
879 };
880 
881 static 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 
904 static const std::vector<IndustryTileLayout> _tile_table_battery_farm {
905  _tile_table_battery_farm_0,
906 };
907 
908 static 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 
919 static 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 
929 static const std::vector<IndustryTileLayout> _tile_table_cola_wells {
930  _tile_table_cola_wells_0,
931  _tile_table_cola_wells_1,
932 };
933 
934 static 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 
941 static const std::vector<IndustryTileLayout> _tile_table_toy_shop {
942  _tile_table_toy_shop_0,
943 };
944 
945 static 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 
956 static const std::vector<IndustryTileLayout> _tile_table_toy_factory {
957  _tile_table_toy_factory_0,
958 };
959 
960 static const IndustryTileLayout _tile_table_plastic_fountain_0 {
961  MK(0, 0, 148),
962  MK(0, 1, 151),
963  MK(0, 2, 154),
964 };
965 
966 static const IndustryTileLayout _tile_table_plastic_fountain_1 {
967  MK(0, 0, 148),
968  MK(1, 0, 151),
969  MK(2, 0, 154),
970 };
971 
972 static const std::vector<IndustryTileLayout> _tile_table_plastic_fountain {
973  _tile_table_plastic_fountain_0,
974  _tile_table_plastic_fountain_1,
975 };
976 
977 static 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 
984 static const std::vector<IndustryTileLayout> _tile_table_fizzy_drink {
985  _tile_table_fizzy_drink_0,
986 };
987 
988 static 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 
1003 static const std::vector<IndustryTileLayout> _tile_table_bubble_generator {
1004  _tile_table_bubble_generator_0,
1005 };
1006 
1007 static const IndustryTileLayout _tile_table_toffee_quarry_0 {
1008  MK(0, 0, 164),
1009  MK(1, 0, 165),
1010  MK(2, 0, 166),
1011 };
1012 
1013 static const std::vector<IndustryTileLayout> _tile_table_toffee_quarry {
1014  _tile_table_toffee_quarry_0,
1015 };
1016 
1017 static 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 
1028 static const std::vector<IndustryTileLayout> _tile_table_sugar_mine {
1029  _tile_table_sugar_mine_0,
1030 };
1031 
1032 #undef MK
1033 
1035 static const std::initializer_list<uint8_t> _sawmill_sounds = { SND_28_SAWMILL };
1036 
1038 static const std::initializer_list<uint8_t> _factory_sounds = { SND_03_FACTORY };
1039 
1041 static const std::initializer_list<uint8_t> _farm_sounds = { SND_24_FARM_1, SND_25_FARM_2, SND_26_FARM_3 };
1042 
1044 static const std::initializer_list<uint8_t> _plastic_mine_sounds = { SND_33_PLASTIC_MINE };
1045 
1046 enum 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  {p1, p2, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \
1133  {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1134  {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}, \
1135  {a1, a2, a3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \
1136  {{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}}, \
1137  pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
1138  0, true, GRFFileProps(INVALID_INDUSTRYTYPE), snd}
1139  /* Format:
1140  tile table count and sounds table
1141  cost multiplier appear chances(4ingame, 4random) map colour
1142  cannot be close to these industries (3 times) check proc
1143  (produced cargo + rate) (twice) minimum cargo moved to station
1144  3 accepted cargo and their corresponding input multiplier
1145  industry life climate availability
1146  industry behaviours
1147  industry name building text
1148  messages : Closure production up production down */
1149 static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
1150  MI(_tile_table_coal_mine, {},
1151  210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1152  IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1153  CT_COAL, 15, CT_INVALID, 0, 5,
1154  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1155  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1157  STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1158  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1159 
1160  MI(_tile_table_power_station, {},
1161  240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1162  IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1163  CT_INVALID, 0, CT_INVALID, 0, 5,
1164  CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1165  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1166  INDUSTRYBEH_NONE,
1167  STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1168  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1169 
1170  MI(_tile_table_sawmill, _sawmill_sounds,
1171  224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1172  IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1173  CT_GOODS, 0, CT_INVALID, 0, 5,
1174  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1175  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1176  INDUSTRYBEH_NONE,
1177  STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1178  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1179 
1180  MI(_tile_table_forest, {},
1181  200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1182  IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
1183  CT_WOOD, 13, CT_INVALID, 0, 30,
1184  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1185  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1186  INDUSTRYBEH_NONE,
1187  STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1188  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1189 
1190  MI(_tile_table_oil_refinery, {},
1191  244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1192  IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
1193  CT_GOODS, 0, CT_INVALID, 0, 5,
1194  CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1195  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1197  STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1198  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1199 
1200  MI(_tile_table_oil_rig, {},
1201  240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1202  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
1203  CT_OIL, 15, CT_PASSENGERS, 2, 5,
1204  CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1205  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1207  STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1208  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1209 
1210  MI(_tile_table_factory, _factory_sounds,
1211  208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1212  IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
1213  CT_GOODS, 0, CT_INVALID, 0, 5,
1214  MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256,
1215  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1217  STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1218  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1219 
1220  MI(_tile_table_printing_works, _factory_sounds,
1221  208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1222  IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1223  CT_GOODS, 0, CT_INVALID, 0, 5,
1224  CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1225  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1226  INDUSTRYBEH_NONE,
1227  STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1228  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1229 
1230  MI(_tile_table_steel_mill, {},
1231  215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1232  IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
1233  CT_STEEL, 0, CT_INVALID, 0, 5,
1234  CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1235  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1236  INDUSTRYBEH_NONE,
1237  STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1238  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1239 
1240  MI(_tile_table_farm, _farm_sounds,
1241  250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1242  IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
1244  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1245  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1247  STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1248  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1249 
1250  MI(_tile_table_copper_mine, {},
1251  205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1252  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1253  CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1254  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1255  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1256  INDUSTRYBEH_NONE,
1257  STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1258  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1259 
1260  MI(_tile_table_oil_well, {},
1261  220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1262  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1263  CT_OIL, 12, CT_INVALID, 0, 5,
1264  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1265  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1267  STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1268  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1269 
1270  MI(_tile_table_bank, {},
1271  255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1272  IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1275  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE,
1277  STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1278  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1279 
1280  MI(_tile_table_food_process, {},
1281  206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1282  IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
1283  CT_FOOD, 0, CT_INVALID, 0, 5,
1285  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1286  INDUSTRYBEH_NONE,
1287  STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1288  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1289 
1290  MI(_tile_table_paper_mill, _sawmill_sounds,
1291  227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1292  IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
1293  CT_PAPER, 0, CT_INVALID, 0, 5,
1294  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1295  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1296  INDUSTRYBEH_NONE,
1297  STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1298  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1299 
1300  MI(_tile_table_gold_mine, {},
1301  208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1302  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1304  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1305  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC,
1306  INDUSTRYBEH_NONE,
1307  STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1308  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1309 
1310  MI(_tile_table_bank2, {},
1311  151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1312  IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
1313  CT_INVALID, 0, CT_INVALID, 0, 5,
1315  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1317  STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1318  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1319 
1320  MI(_tile_table_diamond_mine, {},
1321  213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1322  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1324  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1325  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1326  INDUSTRYBEH_NONE,
1327  STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1328  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1329 
1330  MI(_tile_table_iron_mine, {},
1331  220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1332  IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1333  CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1334  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1335  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1336  INDUSTRYBEH_NONE,
1337  STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1338  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1339 
1340  MI(_tile_table_fruit_plantation, {},
1341  225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1342  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1343  MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15,
1344  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1345  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1346  INDUSTRYBEH_NONE,
1347  STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1348  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1349 
1350  MI(_tile_table_rubber_plantation, {},
1351  218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1352  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1353  CT_RUBBER, 10, CT_INVALID, 0, 15,
1354  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1355  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1356  INDUSTRYBEH_NONE,
1357  STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1358  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1359 
1360  MI(_tile_table_water_supply, {},
1361  199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1362  IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
1363  CT_WATER, 12, CT_INVALID, 0, 5,
1364  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1365  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1366  INDUSTRYBEH_NONE,
1367  STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1368  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1369 
1370  MI(_tile_table_water_tower, {},
1371  115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1372  IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
1373  CT_INVALID, 0, CT_INVALID, 0, 5,
1374  CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1375  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC,
1377  STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1378  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1379 
1380  MI(_tile_table_factory2, _factory_sounds,
1381  208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1382  IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
1383  CT_GOODS, 0, CT_INVALID, 0, 5,
1384  CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1385  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1386  INDUSTRYBEH_NONE,
1387  STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1388  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1389 
1390  MI(_tile_table_farm2, {},
1391  250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1392  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1393  MCT_GRAIN_WHEAT_MAIZE, 11, CT_INVALID, 0, 5,
1394  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1395  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1397  STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1398  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1399 
1400  MI(_tile_table_lumber_mill, {},
1401  135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1402  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
1403  CT_WOOD, 0, CT_INVALID, 0, 5,
1404  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1405  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1407  STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1408  STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1409 
1410  MI(_tile_table_cotton_candy, {},
1411  195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1412  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1413  CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1414  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1415  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1416  INDUSTRYBEH_NONE,
1417  STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1418  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1419 
1420  MI(_tile_table_candy_factory, {},
1421  206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1422  IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
1423  CT_CANDY, 0, CT_INVALID, 0, 5,
1424  CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1425  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1426  INDUSTRYBEH_NONE,
1427  STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1428  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1429 
1430  MI(_tile_table_battery_farm, {},
1431  187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1432  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1433  CT_BATTERIES, 11, CT_INVALID, 0, 30,
1434  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1435  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1436  INDUSTRYBEH_NONE,
1437  STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1438  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1439 
1440  MI(_tile_table_cola_wells, {},
1441  193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1442  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1443  CT_COLA, 12, CT_INVALID, 0, 5,
1444  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1445  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1446  INDUSTRYBEH_NONE,
1447  STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1448  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1449 
1450  MI(_tile_table_toy_shop, {},
1451  133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1452  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1453  CT_INVALID, 0, CT_INVALID, 0, 5,
1454  CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1455  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND,
1457  STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1458  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1459 
1460  MI(_tile_table_toy_factory, {},
1461  163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1462  IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
1463  CT_TOYS, 0, CT_INVALID, 0, 5,
1464  CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1465  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1466  INDUSTRYBEH_NONE,
1467  STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1468  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1469 
1470  MI(_tile_table_plastic_fountain, _plastic_mine_sounds,
1471  192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1472  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1473  CT_PLASTIC, 14, CT_INVALID, 0, 5,
1474  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1475  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1476  INDUSTRYBEH_NONE,
1477  STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1478  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1479 
1480  MI(_tile_table_fizzy_drink, {},
1481  177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1482  IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
1483  CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1484  CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1485  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1486  INDUSTRYBEH_NONE,
1487  STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1488  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1489 
1490  MI(_tile_table_bubble_generator, {},
1491  203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1492  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
1493  CT_BUBBLES, 13, CT_INVALID, 0, 5,
1494  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1495  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1496  INDUSTRYBEH_NONE,
1497  STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1498  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1499 
1500  MI(_tile_table_toffee_quarry, {},
1501  213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1502  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1503  CT_TOFFEE, 10, CT_INVALID, 0, 5,
1504  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1505  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1506  INDUSTRYBEH_NONE,
1507  STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1508  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1509 
1510  MI(_tile_table_sugar_mine, {},
1511  210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1512  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1513  CT_SUGAR, 11, CT_INVALID, 0, 5,
1514  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1515  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1516  INDUSTRYBEH_NONE,
1517  STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1518  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1519 };
1520 #undef MI
1521 
1535 #define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \
1536  {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}, \
1537  {c1, c2, c3, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID, CT_INVALID}, \
1538  {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE) \
1539 }
1540 static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1541  /* Coal Mine */
1549 
1550  /* Power Station */
1555 
1556  /* Sawmill */
1562 
1563  /* Forest Artic, temperate */
1566 
1567  /* Oil refinery */
1574 
1575  /* Oil Rig */
1581 
1582  /* Oil Wells artic, temperate and sub-tropical */
1587 
1588  /* Farm tropic, arctic and temperate */
1595 
1596  /* Factory temperate */
1601 
1602  /* Printing works */
1607 
1608  /* Copper ore mine */
1614 
1615  /* Steel mill */
1622 
1623  /* Bank temperate*/
1626 
1627  /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1632 
1633  /* Paper mill */
1642 
1643  /* Gold mine */
1661 
1662  /* Bank Sub Arctic */
1665 
1666  /* Diamond mine */
1676 
1677  /* Iron ore Mine */
1694 
1695  /* Fruit plantation */
1697 
1698  /* Rubber plantation */
1700 
1701  /* Water supply */
1704 
1705  /* Water tower */
1707 
1708  /* Factory (sub-tropical) */
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  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1712  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1713 
1714  /* Lumber mill */
1719 
1720  /* Candyfloss forest */
1723 
1724  /* Sweet factory */
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  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1728  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1729 
1730  /* Battery farm */
1733 
1734  /* Cola wells */
1736 
1737  /* Toy shop */
1742 
1743  /* Toy factory */
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  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1749  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1750 
1751  /* Plastic Fountain */
1760 
1761  /* Fizzy drink factory */
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  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1765  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1766 
1767  /* Bubble generator */
1772 
1773  /* Toffee quarry */
1777 
1778  /* Sugar mine */
1787 };
1788 #undef MT
1789 
1790 #endif /* BUILD_INDUSTRY_H */
SLOPE_E
@ SLOPE_E
the east corner of the tile is raised
Definition: slope_type.h:52
INDUSTRYBEH_ONLY_INTOWN
@ INDUSTRYBEH_ONLY_INTOWN
can only be built in towns (arctic/tropic banks, water tower)
Definition: industrytype.h:61
CHECK_WATER
@ CHECK_WATER
Industry should be in the desert.
Definition: industrytype.h:39
MCT_GRAIN_WHEAT_MAIZE
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
Definition: cargo_type.h:85
INDUSTRYBEH_AFTER_1960
@ INDUSTRYBEH_AFTER_1960
can only be built after 1960 (oil rigs)
Definition: industrytype.h:66
CHECK_FOREST
@ CHECK_FOREST
Industry should be build above snow-line in arctic climate.
Definition: industrytype.h:35
INDUSTRYBEH_CAN_SUBSIDENCE
@ INDUSTRYBEH_CAN_SUBSIDENCE
can cause a subsidence (coal mine, shaft that collapses)
Definition: industrytype.h:70
INDUSTRYBEH_DONT_INCR_PROD
@ INDUSTRYBEH_DONT_INCR_PROD
do not increase production (oil wells) in the temperate climate
Definition: industrytype.h:64
CHECK_BUBBLEGEN
@ CHECK_BUBBLEGEN
Industry should be in low land.
Definition: industrytype.h:41
_farm_sounds
static const std::initializer_list< uint8_t > _farm_sounds
Array with 3 animal sounds, for farms.
Definition: build_industry.h:1041
SLOPE_S
@ SLOPE_S
the south corner of the tile is raised
Definition: slope_type.h:51
IndustryTileLayout
std::vector< IndustryTileLayoutTile > IndustryTileLayout
A complete tile layout for an industry is a list of tiles.
Definition: industrytype.h:96
INDUSTRYBEH_PLANT_ON_BUILT
@ INDUSTRYBEH_PLANT_ON_BUILT
Fields are planted around when built (all farms)
Definition: industrytype.h:63
INDUSTRYBEH_AIRPLANE_ATTACKS
@ INDUSTRYBEH_AIRPLANE_ATTACKS
can be exploded by a military airplane (oil refinery)
Definition: industrytype.h:68
INDUSTRYBEH_AI_AIRSHIP_ROUTES
@ INDUSTRYBEH_AI_AIRSHIP_ROUTES
ai will attempt to establish air/ship routes to this industry (oil rig)
Definition: industrytype.h:67
NEW_INDUSTRYOFFSET
static const IndustryType NEW_INDUSTRYOFFSET
original number of industry types
Definition: industry_type.h:25
INDUSTRYBEH_PLANT_FIELDS
@ INDUSTRYBEH_PLANT_FIELDS
periodically plants fields around itself (temp and arctic farms)
Definition: industrytype.h:57
INDUSTRYTILE_NOANIM
static const IndustryGfx INDUSTRYTILE_NOANIM
flag to mark industry tiles as having no animation
Definition: industry_type.h:31
INDUSTRYBEH_BUILT_ONWATER
@ INDUSTRYBEH_BUILT_ONWATER
is built on water (oil rig)
Definition: industrytype.h:59
INDUSTRYBEH_BEFORE_1950
@ INDUSTRYBEH_BEFORE_1950
can only be built before 1950 (oil wells)
Definition: industrytype.h:65
INDUSTRYLIFE_BLACK_HOLE
@ INDUSTRYLIFE_BLACK_HOLE
Like power plants and banks.
Definition: industrytype.h:23
MT
#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3)
Writes the properties of an industry tile into the IndustryTileSpec struct.
Definition: build_industry.h:1535
CHECK_FARM
@ CHECK_FARM
Industry should be below snow-line in arctic.
Definition: industrytype.h:37
IndustrySpec
Defines the data structure for constructing industry.
Definition: industrytype.h:101
SND_26_FARM_3
@ SND_26_FARM_3
36 == 0x24 Industry producing: farm (3): horse
Definition: sound_type.h:75
INDUSTRYLIFE_PROCESSING
@ INDUSTRYLIFE_PROCESSING
Like factories.
Definition: industrytype.h:26
_factory_sounds
static const std::initializer_list< uint8_t > _factory_sounds
Array with whistle sound, for factory.
Definition: build_industry.h:1038
SND_33_PLASTIC_MINE
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition: sound_type.h:90
CT_INVALID
static constexpr CargoLabel CT_INVALID
Invalid cargo type.
Definition: cargo_type.h:71
CT_PASSENGERS
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
Definition: cargo_type.h:30
CHECK_OIL_RIG
@ CHECK_OIL_RIG
Industries at sea should be positioned near edge of the map.
Definition: industrytype.h:42
MK
#define MK(x, y, m)
Definition of an industry tiles layout.
Definition: build_industry.h:21
CHECK_LUMBERMILL
@ CHECK_LUMBERMILL
Industry should be in the rain forest.
Definition: industrytype.h:40
SLOPE_STEEP
@ SLOPE_STEEP
indicates the slope is steep
Definition: slope_type.h:54
INDUSTRYBEH_ONLY_NEARTOWN
@ INDUSTRYBEH_ONLY_NEARTOWN
is always built near towns (toy shop)
Definition: industrytype.h:62
MCT_LIVESTOCK_FRUIT
@ MCT_LIVESTOCK_FRUIT
Cargo can be livestock or fruit.
Definition: cargo_type.h:84
MI
#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.
Definition: build_industry.h:1128
INDUSTRYLIFE_ORGANIC
@ INDUSTRYLIFE_ORGANIC
Like forests.
Definition: industrytype.h:25
CHECK_NOTHING
@ CHECK_NOTHING
Always succeeds.
Definition: industrytype.h:34
SND_03_FACTORY
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition: sound_type.h:40
_plastic_mine_sounds
static const std::initializer_list< uint8_t > _plastic_mine_sounds
Array with...
Definition: build_industry.h:1044
SND_24_FARM_1
@ SND_24_FARM_1
34 == 0x22 Industry producing: farm (1): sheep
Definition: sound_type.h:73
INDUSTRYBEH_CHOPPER_ATTACKS
@ INDUSTRYBEH_CHOPPER_ATTACKS
can be exploded by a military helicopter (factory)
Definition: industrytype.h:69
MCT_VALUABLES_GOLD_DIAMONDS
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
Definition: cargo_type.h:86
INDUSTRYBEH_TOWN1200_MORE
@ INDUSTRYBEH_TOWN1200_MORE
can only be built in towns larger than 1200 inhabitants (temperate bank)
Definition: industrytype.h:60
NEW_INDUSTRYTILEOFFSET
static const IndustryGfx NEW_INDUSTRYTILEOFFSET
original number of tiles
Definition: industry_type.h:32
_sawmill_sounds
static const std::initializer_list< uint8_t > _sawmill_sounds
Array with saw sound, for sawmill.
Definition: build_industry.h:1035
INDUSTRYBEH_CUT_TREES
@ INDUSTRYBEH_CUT_TREES
cuts trees and produce first output cargo from them (lumber mill)
Definition: industrytype.h:58
SND_25_FARM_2
@ SND_25_FARM_2
35 == 0x23 Industry producing: farm (2): cow
Definition: sound_type.h:74
IndustryTileSpec
Defines the data structure of each individual tile of an industry.
Definition: industrytype.h:148
SND_28_SAWMILL
@ SND_28_SAWMILL
38 == 0x26 Industry producing: sawmill
Definition: sound_type.h:77
CHECK_PLANTATION
@ CHECK_PLANTATION
Industry should NOT be in the desert.
Definition: industrytype.h:38
CHECK_REFINERY
@ CHECK_REFINERY
Industry should be positioned near edge of the map.
Definition: industrytype.h:36
INDUSTRYLIFE_EXTRACTIVE
@ INDUSTRYLIFE_EXTRACTIVE
Like mines.
Definition: industrytype.h:24