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