OpenTTD Source  1.11.2
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 uint8 _sawmill_sounds[] = { SND_28_SAWMILL };
1036 
1038 static const uint8 _factory_sounds[] = { SND_03_FACTORY };
1039 
1042 
1044 static const uint8 _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, sndc, 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  {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}, \
1132  {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1133  {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}, \
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  sndc, snd, 0, 0, true, GRFFileProps(INVALID_INDUSTRYTYPE)}
1137  /* Format:
1138  tile table count and sounds table
1139  cost multiplier appear chances(4ingame, 4random) map colour
1140  cannot be close to these industries (3 times) check proc
1141  (produced cargo + rate) (twice) minimum cargo moved to station
1142  3 accepted cargo and their corresponding input multiplier
1143  industry life climate availability
1144  industry behaviours
1145  industry name building text
1146  messages : Closure production up production down */
1147 static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
1148  MI(_tile_table_coal_mine, 0, nullptr,
1149  210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1150  IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1151  CT_COAL, 15, CT_INVALID, 0, 5,
1152  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1153  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1155  STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1156  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1157 
1158  MI(_tile_table_power_station, 0, nullptr,
1159  240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1160  IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1161  CT_INVALID, 0, CT_INVALID, 0, 5,
1162  CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1163  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1164  INDUSTRYBEH_NONE,
1165  STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1166  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1167 
1168  MI(_tile_table_sawmill, 1, _sawmill_sounds,
1169  224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1170  IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1171  CT_GOODS, 0, CT_INVALID, 0, 5,
1172  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1173  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1174  INDUSTRYBEH_NONE,
1175  STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1176  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1177 
1178  MI(_tile_table_forest, 0, nullptr,
1179  200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1180  IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
1181  CT_WOOD, 13, CT_INVALID, 0, 30,
1182  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1183  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1184  INDUSTRYBEH_NONE,
1185  STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1186  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1187 
1188  MI(_tile_table_oil_refinery, 0, nullptr,
1189  244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1190  IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
1191  CT_GOODS, 0, CT_INVALID, 0, 5,
1192  CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1193  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1195  STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1196  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1197 
1198  MI(_tile_table_oil_rig, 0, nullptr,
1199  240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1200  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
1201  CT_OIL, 15, CT_PASSENGERS, 2, 5,
1202  CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1203  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1205  STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1206  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1207 
1208  MI(_tile_table_factory, 1, _factory_sounds,
1209  208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1210  IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
1211  CT_GOODS, 0, CT_INVALID, 0, 5,
1212  CT_LIVESTOCK, 256, CT_GRAIN, 256, CT_STEEL, 256,
1213  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1215  STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1216  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1217 
1218  MI(_tile_table_printing_works, 1, _factory_sounds,
1219  208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1220  IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1221  CT_GOODS, 0, CT_INVALID, 0, 5,
1222  CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1223  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1224  INDUSTRYBEH_NONE,
1225  STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1226  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1227 
1228  MI(_tile_table_steel_mill, 0, nullptr,
1229  215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1230  IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
1231  CT_STEEL, 0, CT_INVALID, 0, 5,
1232  CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1233  INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE,
1234  INDUSTRYBEH_NONE,
1235  STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1236  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1237 
1238  MI(_tile_table_farm, 3, _farm_sounds,
1239  250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1240  IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
1241  CT_GRAIN, 10, CT_LIVESTOCK, 10, 5,
1242  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1243  INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC,
1245  STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1246  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1247 
1248  MI(_tile_table_copper_mine, 0, nullptr,
1249  205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1250  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1251  CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1252  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1253  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1254  INDUSTRYBEH_NONE,
1255  STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1256  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1257 
1258  MI(_tile_table_oil_well, 0, nullptr,
1259  220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1260  IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1261  CT_OIL, 12, CT_INVALID, 0, 5,
1262  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1263  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC,
1265  STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1266  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1267 
1268  MI(_tile_table_bank, 0, nullptr,
1269  255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1270  IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1271  CT_VALUABLES, 6, CT_INVALID, 0, 5,
1272  CT_VALUABLES, 0, CT_INVALID, 0, CT_INVALID, 0,
1273  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE,
1275  STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1276  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1277 
1278  MI(_tile_table_food_process, 0, nullptr,
1279  206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1280  IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
1281  CT_FOOD, 0, CT_INVALID, 0, 5,
1282  CT_FRUIT, 256, CT_MAIZE, 256, CT_INVALID, 256,
1283  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1284  INDUSTRYBEH_NONE,
1285  STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1286  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1287 
1288  MI(_tile_table_paper_mill, 1, _sawmill_sounds,
1289  227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1290  IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
1291  CT_PAPER, 0, CT_INVALID, 0, 5,
1292  CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1293  INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC,
1294  INDUSTRYBEH_NONE,
1295  STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1296  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1297 
1298  MI(_tile_table_gold_mine, 0, nullptr,
1299  208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1300  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1301  CT_GOLD, 7, CT_INVALID, 0, 5,
1302  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1303  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC,
1304  INDUSTRYBEH_NONE,
1305  STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1306  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1307 
1308  MI(_tile_table_bank2, 0, nullptr,
1309  151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1310  IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
1311  CT_INVALID, 0, CT_INVALID, 0, 5,
1312  CT_GOLD, 256, CT_INVALID, 256, CT_INVALID, 256,
1313  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC,
1315  STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1316  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1317 
1318  MI(_tile_table_diamond_mine, 0, nullptr,
1319  213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1320  IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1321  CT_DIAMONDS, 7, CT_INVALID, 0, 5,
1322  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1323  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1324  INDUSTRYBEH_NONE,
1325  STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1326  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1327 
1328  MI(_tile_table_iron_mine, 0, nullptr,
1329  220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1330  IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1331  CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1332  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1333  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE,
1334  INDUSTRYBEH_NONE,
1335  STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1336  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1337 
1338  MI(_tile_table_fruit_plantation, 0, nullptr,
1339  225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1340  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1341  CT_FRUIT, 10, CT_INVALID, 0, 15,
1342  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1343  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1344  INDUSTRYBEH_NONE,
1345  STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1346  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1347 
1348  MI(_tile_table_rubber_plantation, 0, nullptr,
1349  218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1350  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1351  CT_RUBBER, 10, CT_INVALID, 0, 15,
1352  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1353  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1354  INDUSTRYBEH_NONE,
1355  STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1356  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1357 
1358  MI(_tile_table_water_supply, 0, nullptr,
1359  199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1360  IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
1361  CT_WATER, 12, CT_INVALID, 0, 5,
1362  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1363  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC,
1364  INDUSTRYBEH_NONE,
1365  STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1366  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1367 
1368  MI(_tile_table_water_tower, 0, nullptr,
1369  115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1370  IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
1371  CT_INVALID, 0, CT_INVALID, 0, 5,
1372  CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1373  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC,
1375  STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1376  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1377 
1378  MI(_tile_table_factory2, 1, _factory_sounds,
1379  208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1380  IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
1381  CT_GOODS, 0, CT_INVALID, 0, 5,
1382  CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1383  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1384  INDUSTRYBEH_NONE,
1385  STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1386  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1387 
1388  MI(_tile_table_farm2, 0, nullptr,
1389  250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1390  IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1391  CT_MAIZE, 11, CT_INVALID, 0, 5,
1392  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1393  INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC,
1395  STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1396  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1397 
1398  MI(_tile_table_lumber_mill, 0, nullptr,
1399  135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1400  IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
1401  CT_WOOD, 0, CT_INVALID, 0, 5,
1402  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1403  INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC,
1405  STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1406  STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1407 
1408  MI(_tile_table_cotton_candy, 0, nullptr,
1409  195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1410  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1411  CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1412  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1413  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1414  INDUSTRYBEH_NONE,
1415  STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1416  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1417 
1418  MI(_tile_table_candy_factory, 0, nullptr,
1419  206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1420  IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
1421  CT_CANDY, 0, CT_INVALID, 0, 5,
1422  CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1423  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1424  INDUSTRYBEH_NONE,
1425  STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1426  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1427 
1428  MI(_tile_table_battery_farm, 0, nullptr,
1429  187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1430  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1431  CT_BATTERIES, 11, CT_INVALID, 0, 30,
1432  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1433  INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND,
1434  INDUSTRYBEH_NONE,
1435  STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1436  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1437 
1438  MI(_tile_table_cola_wells, 0, nullptr,
1439  193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1440  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1441  CT_COLA, 12, CT_INVALID, 0, 5,
1442  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1443  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1444  INDUSTRYBEH_NONE,
1445  STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1446  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1447 
1448  MI(_tile_table_toy_shop, 0, nullptr,
1449  133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1450  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1451  CT_INVALID, 0, CT_INVALID, 0, 5,
1452  CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1453  INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND,
1455  STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1456  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1457 
1458  MI(_tile_table_toy_factory, 0, nullptr,
1459  163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1460  IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
1461  CT_TOYS, 0, CT_INVALID, 0, 5,
1462  CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1463  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1464  INDUSTRYBEH_NONE,
1465  STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1466  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1467 
1468  MI(_tile_table_plastic_fountain, 1, _plastic_mine_sounds,
1469  192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1470  IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1471  CT_PLASTIC, 14, CT_INVALID, 0, 5,
1472  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1473  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1474  INDUSTRYBEH_NONE,
1475  STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1476  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1477 
1478  MI(_tile_table_fizzy_drink, 0, nullptr,
1479  177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1480  IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
1481  CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1482  CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1483  INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND,
1484  INDUSTRYBEH_NONE,
1485  STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1486  STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1487 
1488  MI(_tile_table_bubble_generator, 0, nullptr,
1489  203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1490  IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
1491  CT_BUBBLES, 13, CT_INVALID, 0, 5,
1492  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1493  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1494  INDUSTRYBEH_NONE,
1495  STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1496  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1497 
1498  MI(_tile_table_toffee_quarry, 0, nullptr,
1499  213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1500  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1501  CT_TOFFEE, 10, CT_INVALID, 0, 5,
1502  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1503  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1504  INDUSTRYBEH_NONE,
1505  STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1506  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1507 
1508  MI(_tile_table_sugar_mine, 0, nullptr,
1509  210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1510  IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1511  CT_SUGAR, 11, CT_INVALID, 0, 5,
1512  CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1513  INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND,
1514  INDUSTRYBEH_NONE,
1515  STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1516  STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1517 };
1518 #undef MI
1519 
1533 #define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) {{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}, {ca1, ca2, ca3}, sl, a1, a2, a3, 0, {0, ANIM_STATUS_NO_ANIMATION, 2, 0}, INDTILE_SPECIAL_NONE, true, GRFFileProps(INVALID_INDUSTRYTILE)}
1534 static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1535  /* Coal Mine */
1539  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1543 
1544  /* Power Station */
1546  MT(1, CT_PASSENGERS, 8, CT_COAL, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1549 
1550  /* Sawmill */
1551  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1552  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1553  MT(1, CT_PASSENGERS, 8, CT_WOOD, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1556 
1557  /* Forest Artic, temperate */
1560 
1561  /* Oil refinery */
1567  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1568 
1569  /* Oil Rig */
1570  MT(0, CT_INVALID, 8, CT_PASSENGERS, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1575 
1576  /* Oil Wells artic, temperate and sub-tropical */
1581 
1582  /* Farm tropic, arctic and temperate */
1583  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1584  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1589 
1590  /* Factory temperate */
1591  MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1592  MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1593  MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1594  MT(8, CT_GRAIN, 8, CT_LIVESTOCK, 8, CT_STEEL, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1595 
1596  /* Printing works */
1601 
1602  /* Copper ore mine */
1606  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1607  MT(1, CT_PASSENGERS, 0, CT_INVALID, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1608 
1609  /* Steel mill */
1610  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1611  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1612  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1613  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1614  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1615  MT(1, CT_PASSENGERS, 8, CT_IRON_ORE, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1616 
1617  /* Bank temperate*/
1618  MT(1, CT_PASSENGERS, 8, CT_VALUABLES, 0, CT_INVALID, SLOPE_E, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1619  MT(1, CT_PASSENGERS, 8, CT_VALUABLES, 0, CT_INVALID, SLOPE_S, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1620 
1621  /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1622  MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1623  MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1624  MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1625  MT(8, CT_MAIZE, 8, CT_LIVESTOCK, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1626 
1627  /* Paper mill */
1636 
1637  /* Gold mine */
1655 
1656  /* Bank Sub Arctic */
1659 
1660  /* Diamond mine */
1670 
1671  /* Iron ore Mine */
1688 
1689  /* Fruit plantation */
1691 
1692  /* Rubber plantation */
1694 
1695  /* Water supply */
1698 
1699  /* Water tower */
1701 
1702  /* Factory (sub-tropical) */
1703  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1704  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1705  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1706  MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1707 
1708  /* Lumber mill */
1713 
1714  /* Candyfloss forest */
1717 
1718  /* Sweet factory */
1719  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1720  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1721  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1722  MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1723 
1724  /* Battery farm */
1727 
1728  /* Cola wells */
1730 
1731  /* Toy shop */
1736 
1737  /* Toy factory */
1738  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1739  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1740  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1741  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1742  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1743  MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1744 
1745  /* Plastic Fountain */
1754 
1755  /* Fizzy drink factory */
1756  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1757  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1758  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1759  MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1760 
1761  /* Bubble generator */
1766 
1767  /* Toffee quarry */
1771 
1772  /* Sugar mine */
1781 };
1782 #undef MT
1783 
1784 #endif /* BUILD_INDUSTRY_H */
INDUSTRYBEH_ONLY_INTOWN
@ INDUSTRYBEH_ONLY_INTOWN
can only be built in towns (arctic/tropic banks, water tower)
Definition: industrytype.h:67
CHECK_WATER
@ CHECK_WATER
Industry should be in the desert.
Definition: industrytype.h:45
INDUSTRYBEH_AFTER_1960
@ INDUSTRYBEH_AFTER_1960
can only be built after 1960 (oil rigs)
Definition: industrytype.h:72
CHECK_FOREST
@ CHECK_FOREST
Industry should be build above snow-line in arctic climate.
Definition: industrytype.h:41
INDUSTRYBEH_CAN_SUBSIDENCE
@ INDUSTRYBEH_CAN_SUBSIDENCE
can cause a subsidence (coal mine, shaft that collapses)
Definition: industrytype.h:76
INDUSTRYBEH_DONT_INCR_PROD
@ INDUSTRYBEH_DONT_INCR_PROD
do not increase production (oil wells) in the temperate climate
Definition: industrytype.h:70
CHECK_BUBBLEGEN
@ CHECK_BUBBLEGEN
Industry should be in low land.
Definition: industrytype.h:47
IndustryTileLayout
std::vector< IndustryTileLayoutTile > IndustryTileLayout
A complete tile layout for an industry is a list of tiles.
Definition: industrytype.h:102
_farm_sounds
static const uint8 _farm_sounds[]
Array with 3 animal sounds, for farms.
Definition: build_industry.h:1041
INDUSTRYBEH_PLANT_ON_BUILT
@ INDUSTRYBEH_PLANT_ON_BUILT
Fields are planted around when built (all farms)
Definition: industrytype.h:69
_sawmill_sounds
static const uint8 _sawmill_sounds[]
Array with saw sound, for sawmill.
Definition: build_industry.h:1035
INDUSTRYBEH_AIRPLANE_ATTACKS
@ INDUSTRYBEH_AIRPLANE_ATTACKS
can be exploded by a military airplane (oil refinery)
Definition: industrytype.h:74
INDUSTRYBEH_AI_AIRSHIP_ROUTES
@ INDUSTRYBEH_AI_AIRSHIP_ROUTES
ai will attempt to establish air/ship routes to this industry (oil rig)
Definition: industrytype.h:73
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:63
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:65
MI
#define MI(tbl, sndc, 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
SLOPE_STEEP
@ SLOPE_STEEP
indicates the slope is steep
Definition: slope_type.h:54
INDUSTRYBEH_BEFORE_1950
@ INDUSTRYBEH_BEFORE_1950
can only be built before 1950 (oil wells)
Definition: industrytype.h:71
INDUSTRYLIFE_BLACK_HOLE
@ INDUSTRYLIFE_BLACK_HOLE
Like power plants and banks.
Definition: industrytype.h:29
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:1533
CHECK_FARM
@ CHECK_FARM
Industry should be below snow-line in arctic.
Definition: industrytype.h:43
IndustrySpec
Defines the data structure for constructing industry.
Definition: industrytype.h:107
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:32
SND_33_PLASTIC_MINE
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition: sound_type.h:90
CHECK_OIL_RIG
@ CHECK_OIL_RIG
Industries at sea should be positioned near edge of the map.
Definition: industrytype.h:48
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:46
INDUSTRYBEH_ONLY_NEARTOWN
@ INDUSTRYBEH_ONLY_NEARTOWN
is always built near towns (toy shop)
Definition: industrytype.h:68
INDUSTRYLIFE_ORGANIC
@ INDUSTRYLIFE_ORGANIC
Like forests.
Definition: industrytype.h:31
SLOPE_S
@ SLOPE_S
the south corner of the tile is raised
Definition: slope_type.h:51
CHECK_NOTHING
@ CHECK_NOTHING
Always succeeds.
Definition: industrytype.h:40
SND_03_FACTORY
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition: sound_type.h:40
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:75
INDUSTRYBEH_TOWN1200_MORE
@ INDUSTRYBEH_TOWN1200_MORE
can only be built in towns larger than 1200 inhabitants (temperate bank)
Definition: industrytype.h:66
NEW_INDUSTRYTILEOFFSET
static const IndustryGfx NEW_INDUSTRYTILEOFFSET
original number of tiles
Definition: industry_type.h:32
_factory_sounds
static const uint8 _factory_sounds[]
Array with whistle sound, for factory.
Definition: build_industry.h:1038
CT_INVALID
@ CT_INVALID
Invalid cargo type.
Definition: cargo_type.h:68
INDUSTRYBEH_CUT_TREES
@ INDUSTRYBEH_CUT_TREES
cuts trees and produce first output cargo from them (lumber mill)
Definition: industrytype.h:64
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:156
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:44
CHECK_REFINERY
@ CHECK_REFINERY
Industry should be positioned near edge of the map.
Definition: industrytype.h:42
SLOPE_E
@ SLOPE_E
the east corner of the tile is raised
Definition: slope_type.h:52
_plastic_mine_sounds
static const uint8 _plastic_mine_sounds[]
Array with...
Definition: build_industry.h:1044
INDUSTRYLIFE_EXTRACTIVE
@ INDUSTRYLIFE_EXTRACTIVE
Like mines.
Definition: industrytype.h:30