OpenTTD Source  20241125-master-g5b02f51e17
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  {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1133  {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1134  {{im1, 0}, {im2, 0}, {im3, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, \
1135  pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
1136  0, true, GRFFileProps(INVALID_INDUSTRYTYPE), snd, \
1137  {{p1, p2}}, {{a1, a2, a3}}}
1138  /* Format:
1139  tile table count and sounds table
1140  cost multiplier appear chances(4ingame, 4random) map colour
1141  cannot be close to these industries (3 times) check proc
1142  (produced cargo + rate) (twice) minimum cargo moved to station
1143  3 accepted cargo and their corresponding input multiplier
1144  industry life climate availability
1145  industry behaviours
1146  industry name building text
1147  messages : Closure production up production down */
1148 static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
1149  MI(_tile_table_coal_mine, {},
1150  210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1151  IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1152  CT_COAL, 15, CT_INVALID, 0, 5,
1153  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1154  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1156  STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1157  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1158 
1159  MI(_tile_table_power_station, {},
1160  240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1161  IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1162  CT_INVALID, 0, CT_INVALID, 0, 5,
1163  CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1164  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1165  INDUSTRYBEH_NONE,
1166  STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1167  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1168 
1169  MI(_tile_table_sawmill, _sawmill_sounds,
1170  224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1171  IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1172  CT_GOODS, 0, CT_INVALID, 0, 5,
1173  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1174  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1175  INDUSTRYBEH_NONE,
1176  STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1177  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1178 
1179  MI(_tile_table_forest, {},
1180  200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1181  IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
1182  CT_WOOD, 13, CT_INVALID, 0, 30,
1183  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1184  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1185  INDUSTRYBEH_NONE,
1186  STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1187  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1188 
1189  MI(_tile_table_oil_refinery, {},
1190  244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1191  IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
1192  CT_GOODS, 0, CT_INVALID, 0, 5,
1193  CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1194  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1196  STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1197  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1198 
1199  MI(_tile_table_oil_rig, {},
1200  240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1201  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
1202  CT_OIL, 15, CT_PASSENGERS, 2, 5,
1203  CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1204  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1206  STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1207  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1208 
1209  MI(_tile_table_factory, _factory_sounds,
1210  208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1211  IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
1212  CT_GOODS, 0, CT_INVALID, 0, 5,
1213  MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256,
1214  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1216  STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1217  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1218 
1219  MI(_tile_table_printing_works, _factory_sounds,
1220  208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1221  IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1222  CT_GOODS, 0, CT_INVALID, 0, 5,
1223  CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1224  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1225  INDUSTRYBEH_NONE,
1226  STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1227  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1228 
1229  MI(_tile_table_steel_mill, {},
1230  215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1231  IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
1232  CT_STEEL, 0, CT_INVALID, 0, 5,
1233  CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1234  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1235  INDUSTRYBEH_NONE,
1236  STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1237  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1238 
1239  MI(_tile_table_farm, _farm_sounds,
1240  250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1241  IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
1243  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1244  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1246  STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1247  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1248 
1249  MI(_tile_table_copper_mine, {},
1250  205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1251  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1252  CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1253  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1254  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1255  INDUSTRYBEH_NONE,
1256  STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1257  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1258 
1259  MI(_tile_table_oil_well, {},
1260  220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1261  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1262  CT_OIL, 12, CT_INVALID, 0, 5,
1263  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1264  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1266  STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1267  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1268 
1269  MI(_tile_table_bank, {},
1270  255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1271  IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1274  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE,
1276  STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1277  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1278 
1279  MI(_tile_table_food_process, {},
1280  206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1281  IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
1282  CT_FOOD, 0, CT_INVALID, 0, 5,
1284  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1285  INDUSTRYBEH_NONE,
1286  STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1287  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1288 
1289  MI(_tile_table_paper_mill, _sawmill_sounds,
1290  227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1291  IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
1292  CT_PAPER, 0, CT_INVALID, 0, 5,
1293  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1294  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1295  INDUSTRYBEH_NONE,
1296  STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1297  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1298 
1299  MI(_tile_table_gold_mine, {},
1300  208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1301  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1303  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1304  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC,
1305  INDUSTRYBEH_NONE,
1306  STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1307  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1308 
1309  MI(_tile_table_bank2, {},
1310  151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1311  IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
1312  CT_INVALID, 0, CT_INVALID, 0, 5,
1314  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1316  STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1317  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1318 
1319  MI(_tile_table_diamond_mine, {},
1320  213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1321  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1323  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1324  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1325  INDUSTRYBEH_NONE,
1326  STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1327  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1328 
1329  MI(_tile_table_iron_mine, {},
1330  220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1331  IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1332  CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1333  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1334  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1335  INDUSTRYBEH_NONE,
1336  STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1337  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1338 
1339  MI(_tile_table_fruit_plantation, {},
1340  225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1341  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1342  MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15,
1343  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1344  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1345  INDUSTRYBEH_NONE,
1346  STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1347  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1348 
1349  MI(_tile_table_rubber_plantation, {},
1350  218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1351  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1352  CT_RUBBER, 10, CT_INVALID, 0, 15,
1353  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1354  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1355  INDUSTRYBEH_NONE,
1356  STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1357  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1358 
1359  MI(_tile_table_water_supply, {},
1360  199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1361  IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
1362  CT_WATER, 12, CT_INVALID, 0, 5,
1363  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1364  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1365  INDUSTRYBEH_NONE,
1366  STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1367  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1368 
1369  MI(_tile_table_water_tower, {},
1370  115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1371  IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
1372  CT_INVALID, 0, CT_INVALID, 0, 5,
1373  CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1374  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC,
1376  STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1377  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1378 
1379  MI(_tile_table_factory2, _factory_sounds,
1380  208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1381  IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
1382  CT_GOODS, 0, CT_INVALID, 0, 5,
1383  CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1384  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1385  INDUSTRYBEH_NONE,
1386  STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1387  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1388 
1389  MI(_tile_table_farm2, {},
1390  250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1391  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1392  MCT_GRAIN_WHEAT_MAIZE, 11, CT_INVALID, 0, 5,
1393  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1394  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1396  STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1397  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1398 
1399  MI(_tile_table_lumber_mill, {},
1400  135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1401  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
1402  CT_WOOD, 0, CT_INVALID, 0, 5,
1403  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1404  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1406  STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1407  STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1408 
1409  MI(_tile_table_cotton_candy, {},
1410  195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1411  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1412  CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1413  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1414  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1415  INDUSTRYBEH_NONE,
1416  STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1417  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1418 
1419  MI(_tile_table_candy_factory, {},
1420  206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1421  IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
1422  CT_CANDY, 0, CT_INVALID, 0, 5,
1423  CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1424  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1425  INDUSTRYBEH_NONE,
1426  STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1427  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1428 
1429  MI(_tile_table_battery_farm, {},
1430  187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1431  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1432  CT_BATTERIES, 11, CT_INVALID, 0, 30,
1433  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1434  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1435  INDUSTRYBEH_NONE,
1436  STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1437  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1438 
1439  MI(_tile_table_cola_wells, {},
1440  193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1441  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1442  CT_COLA, 12, CT_INVALID, 0, 5,
1443  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1444  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1445  INDUSTRYBEH_NONE,
1446  STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1447  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1448 
1449  MI(_tile_table_toy_shop, {},
1450  133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1451  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1452  CT_INVALID, 0, CT_INVALID, 0, 5,
1453  CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1454  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND,
1456  STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1457  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1458 
1459  MI(_tile_table_toy_factory, {},
1460  163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1461  IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
1462  CT_TOYS, 0, CT_INVALID, 0, 5,
1463  CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1464  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1465  INDUSTRYBEH_NONE,
1466  STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1467  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1468 
1469  MI(_tile_table_plastic_fountain, _plastic_mine_sounds,
1470  192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1471  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1472  CT_PLASTIC, 14, CT_INVALID, 0, 5,
1473  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1474  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1475  INDUSTRYBEH_NONE,
1476  STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1477  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1478 
1479  MI(_tile_table_fizzy_drink, {},
1480  177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1481  IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
1482  CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1483  CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1484  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1485  INDUSTRYBEH_NONE,
1486  STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1487  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1488 
1489  MI(_tile_table_bubble_generator, {},
1490  203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1491  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
1492  CT_BUBBLES, 13, CT_INVALID, 0, 5,
1493  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1494  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1495  INDUSTRYBEH_NONE,
1496  STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1497  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1498 
1499  MI(_tile_table_toffee_quarry, {},
1500  213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1501  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1502  CT_TOFFEE, 10, CT_INVALID, 0, 5,
1503  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1504  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1505  INDUSTRYBEH_NONE,
1506  STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1507  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1508 
1509  MI(_tile_table_sugar_mine, {},
1510  210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1511  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1512  CT_SUGAR, 11, CT_INVALID, 0, 5,
1513  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1514  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1515  INDUSTRYBEH_NONE,
1516  STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1517  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1518 };
1519 #undef MI
1520 
1534 #define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \
1535  {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1536  {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE), {c1, c2, c3} \
1537 }
1538 static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1539  /* Coal Mine */
1547 
1548  /* Power Station */
1553 
1554  /* Sawmill */
1560 
1561  /* Forest Artic, temperate */
1564 
1565  /* Oil refinery */
1572 
1573  /* Oil Rig */
1579 
1580  /* Oil Wells artic, temperate and sub-tropical */
1585 
1586  /* Farm tropic, arctic and temperate */
1593 
1594  /* Factory temperate */
1599 
1600  /* Printing works */
1605 
1606  /* Copper ore mine */
1612 
1613  /* Steel mill */
1620 
1621  /* Bank temperate*/
1624 
1625  /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1630 
1631  /* Paper mill */
1640 
1641  /* Gold mine */
1659 
1660  /* Bank Sub Arctic */
1663 
1664  /* Diamond mine */
1674 
1675  /* Iron ore Mine */
1692 
1693  /* Fruit plantation */
1695 
1696  /* Rubber plantation */
1698 
1699  /* Water supply */
1702 
1703  /* Water tower */
1705 
1706  /* Factory (sub-tropical) */
1707  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1708  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1709  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1710  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1711 
1712  /* Lumber mill */
1717 
1718  /* Candyfloss forest */
1721 
1722  /* Sweet factory */
1723  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1724  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1725  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1726  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1727 
1728  /* Battery farm */
1731 
1732  /* Cola wells */
1734 
1735  /* Toy shop */
1740 
1741  /* Toy factory */
1742  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1743  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1744  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1745  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1746  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1747  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1748 
1749  /* Plastic Fountain */
1758 
1759  /* Fizzy drink factory */
1760  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1761  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1762  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1763  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1764 
1765  /* Bubble generator */
1770 
1771  /* Toffee quarry */
1775 
1776  /* Sugar mine */
1785 };
1786 #undef MT
1787 
1788 #endif /* BUILD_INDUSTRY_H */
static const std::initializer_list< uint8_t > _farm_sounds
Array with 3 animal sounds, for farms.
#define MK(x, y, m)
Definition of an industry tiles layout.
#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3)
Writes the properties of an industry tile into the IndustryTileSpec struct.
static const std::initializer_list< uint8_t > _factory_sounds
Array with whistle sound, for factory.
static const std::initializer_list< uint8_t > _plastic_mine_sounds
Array with...
static const std::initializer_list< uint8_t > _sawmill_sounds
Array with saw sound, for sawmill.
#define MI(tbl, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3)
Writes the properties of an industry into the IndustrySpec struct.
static constexpr CargoLabel CT_INVALID
Invalid cargo type.
Definition: cargo_type.h:71
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
Definition: cargo_type.h:30
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
Definition: cargo_type.h:85
@ MCT_LIVESTOCK_FRUIT
Cargo can be livestock or fruit.
Definition: cargo_type.h:84
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
Definition: cargo_type.h:86
static const IndustryGfx NEW_INDUSTRYTILEOFFSET
original number of tiles
Definition: industry_type.h:32
static const IndustryGfx INDUSTRYTILE_NOANIM
flag to mark industry tiles as having no animation
Definition: industry_type.h:31
static const IndustryType NEW_INDUSTRYOFFSET
original number of industry types
Definition: industry_type.h:25
@ INDUSTRYLIFE_EXTRACTIVE
Like mines.
Definition: industrytype.h:24
@ INDUSTRYLIFE_BLACK_HOLE
Like power plants and banks.
Definition: industrytype.h:23
@ INDUSTRYLIFE_PROCESSING
Like factories.
Definition: industrytype.h:26
@ INDUSTRYLIFE_ORGANIC
Like forests.
Definition: industrytype.h:25
@ CHECK_REFINERY
Industry should be positioned near edge of the map.
Definition: industrytype.h:36
@ CHECK_PLANTATION
Industry should NOT be in the desert.
Definition: industrytype.h:38
@ CHECK_OIL_RIG
Industries at sea should be positioned near edge of the map.
Definition: industrytype.h:42
@ CHECK_LUMBERMILL
Industry should be in the rain forest.
Definition: industrytype.h:40
@ CHECK_WATER
Industry should be in the desert.
Definition: industrytype.h:39
@ CHECK_BUBBLEGEN
Industry should be in low land.
Definition: industrytype.h:41
@ CHECK_FOREST
Industry should be build above snow-line in arctic climate.
Definition: industrytype.h:35
@ CHECK_FARM
Industry should be below snow-line in arctic.
Definition: industrytype.h:37
@ CHECK_NOTHING
Always succeeds.
Definition: industrytype.h:34
std::vector< IndustryTileLayoutTile > IndustryTileLayout
A complete tile layout for an industry is a list of tiles.
Definition: industrytype.h:96
@ INDUSTRYBEH_CAN_SUBSIDENCE
can cause a subsidence (coal mine, shaft that collapses)
Definition: industrytype.h:70
@ INDUSTRYBEH_AIRPLANE_ATTACKS
can be exploded by a military airplane (oil refinery)
Definition: industrytype.h:68
@ INDUSTRYBEH_CHOPPER_ATTACKS
can be exploded by a military helicopter (factory)
Definition: industrytype.h:69
@ INDUSTRYBEH_DONT_INCR_PROD
do not increase production (oil wells) in the temperate climate
Definition: industrytype.h:64
@ INDUSTRYBEH_PLANT_ON_BUILT
Fields are planted around when built (all farms)
Definition: industrytype.h:63
@ INDUSTRYBEH_AFTER_1960
can only be built after 1960 (oil rigs)
Definition: industrytype.h:66
@ INDUSTRYBEH_CUT_TREES
cuts trees and produce first output cargo from them (lumber mill)
Definition: industrytype.h:58
@ INDUSTRYBEH_BUILT_ONWATER
is built on water (oil rig)
Definition: industrytype.h:59
@ INDUSTRYBEH_PLANT_FIELDS
periodically plants fields around itself (temp and arctic farms)
Definition: industrytype.h:57
@ INDUSTRYBEH_ONLY_NEARTOWN
is always built near towns (toy shop)
Definition: industrytype.h:62
@ INDUSTRYBEH_TOWN1200_MORE
can only be built in towns larger than 1200 inhabitants (temperate bank)
Definition: industrytype.h:60
@ INDUSTRYBEH_ONLY_INTOWN
can only be built in towns (arctic/tropic banks, water tower)
Definition: industrytype.h:61
@ INDUSTRYBEH_BEFORE_1950
can only be built before 1950 (oil wells)
Definition: industrytype.h:65
@ INDUSTRYBEH_AI_AIRSHIP_ROUTES
ai will attempt to establish air/ship routes to this industry (oil rig)
Definition: industrytype.h:67
@ SLOPE_E
the east corner of the tile is raised
Definition: slope_type.h:52
@ SLOPE_S
the south corner of the tile is raised
Definition: slope_type.h:51
@ SLOPE_STEEP
indicates the slope is steep
Definition: slope_type.h:54
@ SND_26_FARM_3
36 == 0x24 Industry producing: farm (3): horse
Definition: sound_type.h:75
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition: sound_type.h:40
@ SND_24_FARM_1
34 == 0x22 Industry producing: farm (1): sheep
Definition: sound_type.h:73
@ SND_28_SAWMILL
38 == 0x26 Industry producing: sawmill
Definition: sound_type.h:77
@ SND_25_FARM_2
35 == 0x23 Industry producing: farm (2): cow
Definition: sound_type.h:74
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition: sound_type.h:90
Defines the data structure for constructing industry.
Definition: industrytype.h:101
Defines the data structure of each individual tile of an industry.
Definition: industrytype.h:149