OpenTTD Source 20260208-master-g43af8e94d0
build_industry.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
9
10#ifndef BUILD_INDUSTRY_H
11#define BUILD_INDUSTRY_H
12
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
1128
1129#define MI(tbl, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \
1130 c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \
1131 {tbl, d, 0, pc, {c1, c2, c3}, proc, \
1132 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1133 {r1, r2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, m, \
1134 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1135 {{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}}, \
1136 pr, clim, bev, PixelColour{col}, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \
1137 IndustryCallbackMasks{}, true, SubstituteGRFFileProps(IT_INVALID), snd, {}, \
1138 {{p1, p2}}, {{a1, a2, a3}}}
1139 /* Format:
1140 tile table count and sounds table
1141 cost multiplier appear chances(4ingame, 4random) map colour
1142 cannot be close to these industries (3 times) check proc
1143 (produced cargo + rate) (twice) minimum cargo moved to station
1144 3 accepted cargo and their corresponding input multiplier
1145 industry life climate availability
1146 industry behaviours
1147 industry name building text
1148 messages : Closure production up production down */
1149static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
1150 MI(_tile_table_coal_mine, {},
1151 210, 0xB3333333, 2, 3, 0, 0, 8, 8, 0, 0, 1,
1152 IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1153 CT_COAL, 15, CT_INVALID, 0, 5,
1154 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1157 STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1158 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1159
1160 MI(_tile_table_power_station, {},
1161 240, 0xFFFFFFFF, 2, 2, 0, 0, 5, 5, 0, 0, 184,
1162 IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1163 CT_INVALID, 0, CT_INVALID, 0, 5,
1164 CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256,
1166 {},
1167 STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION,
1168 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1169
1170 MI(_tile_table_sawmill, _sawmill_sounds,
1171 224, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 194,
1172 IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1173 CT_GOODS, 0, CT_INVALID, 0, 5,
1174 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1176 {},
1177 STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1178 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1179
1180 MI(_tile_table_forest, {},
1181 200, 0xBFFFFFFF, 3, 4, 0, 0, 5, 5, 0, 0, 86,
1182 IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
1183 CT_WOOD, 13, CT_INVALID, 0, 30,
1184 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1186 {},
1187 STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1188 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1189
1190 MI(_tile_table_oil_refinery, {},
1191 244, 0xFFFFFFFF, 2, 2, 2, 0, 4, 4, 4, 0, 191,
1192 IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
1193 CT_GOODS, 0, CT_INVALID, 0, 5,
1194 CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256,
1197 STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1198 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1199
1200 MI(_tile_table_oil_rig, {},
1201 240, 0x99999999, 6, 0, 0, 0, 0, 0, 0, 0, 152,
1202 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
1203 CT_OIL, 15, CT_PASSENGERS, 2, 5,
1204 CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
1207 STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION,
1208 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1209
1210 MI(_tile_table_factory, _factory_sounds,
1211 208, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 174,
1212 IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
1213 CT_GOODS, 0, CT_INVALID, 0, 5,
1214 MCT_LIVESTOCK_FRUIT, 256, MCT_GRAIN_WHEAT_MAIZE, 256, CT_STEEL, 256,
1217 STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1218 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1219
1220 MI(_tile_table_printing_works, _factory_sounds,
1221 208, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 174,
1222 IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1223 CT_GOODS, 0, CT_INVALID, 0, 5,
1224 CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256,
1226 {},
1227 STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1228 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1229
1230 MI(_tile_table_steel_mill, {},
1231 215, 0xFFFFFFFF, 2, 0, 0, 0, 5, 0, 0, 0, 10,
1232 IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
1233 CT_STEEL, 0, CT_INVALID, 0, 5,
1234 CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256,
1236 {},
1237 STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1238 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1239
1240 MI(_tile_table_farm, _farm_sounds,
1241 250, 0xD9999999, 2, 4, 0, 0, 9, 9, 0, 0, 48,
1242 IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
1244 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1247 STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1248 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1249
1250 MI(_tile_table_copper_mine, {},
1251 205, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 10,
1252 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1253 CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
1254 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1256 {},
1257 STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1258 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1259
1260 MI(_tile_table_oil_well, {},
1261 220, 0x99999999, 0, 5, 3, 0, 4, 5, 5, 0, 152,
1262 IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1263 CT_OIL, 12, CT_INVALID, 0, 5,
1264 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1267 STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1268 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1269
1270 MI(_tile_table_bank, {},
1271 255, 0xA6666666, 7, 0, 0, 0, 0, 0, 0, 0, 15,
1272 IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1277 STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION,
1278 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1279
1280 MI(_tile_table_food_process, {},
1281 206, 0xFFFFFFFF, 0, 2, 2, 0, 0, 3, 4, 0, 55,
1282 IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
1283 CT_FOOD, 0, CT_INVALID, 0, 5,
1286 {},
1287 STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION,
1288 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1289
1290 MI(_tile_table_paper_mill, _sawmill_sounds,
1291 227, 0xFFFFFFFF, 0, 2, 0, 0, 0, 5, 0, 0, 10,
1292 IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
1293 CT_PAPER, 0, CT_INVALID, 0, 5,
1294 CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256,
1296 {},
1297 STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1298 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1299
1300 MI(_tile_table_gold_mine, {},
1301 208, 0x99999999, 0, 3, 0, 0, 0, 4, 0, 0, 194,
1302 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1304 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1306 {},
1307 STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1308 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1309
1310 MI(_tile_table_bank2, {},
1311 151, 0xA6666666, 0, 3, 3, 0, 0, 6, 5, 0, 15,
1312 IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
1313 CT_INVALID, 0, CT_INVALID, 0, 5,
1317 STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION,
1318 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1319
1320 MI(_tile_table_diamond_mine, {},
1321 213, 0x99999999, 0, 0, 3, 0, 0, 0, 4, 0, 184,
1322 IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1324 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1326 {},
1327 STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1328 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1329
1330 MI(_tile_table_iron_mine, {},
1331 220, 0xB3333333, 2, 0, 0, 0, 5, 0, 0, 0, 55,
1332 IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1333 CT_IRON_ORE, 10, CT_INVALID, 0, 5,
1334 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1336 {},
1337 STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1338 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1339
1340 MI(_tile_table_fruit_plantation, {},
1341 225, 0xBFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 86,
1342 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1343 MCT_LIVESTOCK_FRUIT, 10, CT_INVALID, 0, 15,
1344 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1346 {},
1347 STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1348 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1349
1350 MI(_tile_table_rubber_plantation, {},
1351 218, 0xBFFFFFFF, 0, 0, 3, 0, 0, 0, 4, 0, 39,
1352 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1353 CT_RUBBER, 10, CT_INVALID, 0, 15,
1354 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1356 {},
1357 STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED,
1358 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1359
1360 MI(_tile_table_water_supply, {},
1361 199, 0xB3333333, 0, 0, 3, 0, 0, 0, 4, 0, 37,
1362 IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
1363 CT_WATER, 12, CT_INVALID, 0, 5,
1364 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1366 {},
1367 STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1368 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1369
1370 MI(_tile_table_water_tower, {},
1371 115, 0xFFFFFFFF, 0, 0, 4, 0, 0, 0, 8, 0, 208,
1372 IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
1373 CT_INVALID, 0, CT_INVALID, 0, 5,
1374 CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256,
1377 STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION,
1378 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1379
1380 MI(_tile_table_factory2, _factory_sounds,
1381 208, 0xFFFFFFFF, 0, 0, 2, 0, 0, 0, 4, 0, 174,
1382 IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
1383 CT_GOODS, 0, CT_INVALID, 0, 5,
1384 CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
1386 {},
1387 STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1388 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1389
1390 MI(_tile_table_farm2, {},
1391 250, 0xD9999999, 0, 0, 1, 0, 0, 0, 2, 0, 48,
1392 IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
1394 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1397 STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION,
1398 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1399
1400 MI(_tile_table_lumber_mill, {},
1401 135, 0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 194,
1402 IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
1403 CT_WOOD, 0, CT_INVALID, 0, 5,
1404 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1407 STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION,
1408 STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1409
1410 MI(_tile_table_cotton_candy, {},
1411 195, 0xBFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 48,
1412 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1413 CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
1414 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1416 {},
1417 STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED,
1418 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1419
1420 MI(_tile_table_candy_factory, {},
1421 206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174,
1422 IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
1423 CT_CANDY, 0, CT_INVALID, 0, 5,
1424 CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
1426 {},
1427 STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1428 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1429
1430 MI(_tile_table_battery_farm, {},
1431 187, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 4, 39,
1432 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1433 CT_BATTERIES, 11, CT_INVALID, 0, 30,
1434 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1436 {},
1437 STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION,
1438 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM),
1439
1440 MI(_tile_table_cola_wells, {},
1441 193, 0x99999999, 0, 0, 0, 3, 0, 0, 0, 5, 55,
1442 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1443 CT_COLA, 12, CT_INVALID, 0, 5,
1444 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1446 {},
1447 STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1448 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1449
1450 MI(_tile_table_toy_shop, {},
1451 133, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 208,
1452 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1453 CT_INVALID, 0, CT_INVALID, 0, 5,
1454 CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256,
1457 STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION,
1458 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1459
1460 MI(_tile_table_toy_factory, {},
1461 163, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 10,
1462 IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
1463 CT_TOYS, 0, CT_INVALID, 0, 5,
1464 CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256,
1466 {},
1467 STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1468 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1469
1470 MI(_tile_table_plastic_fountain, _plastic_mine_sounds,
1471 192, 0xA6666666, 0, 0, 0, 3, 0, 0, 0, 5, 37,
1472 IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1473 CT_PLASTIC, 14, CT_INVALID, 0, 5,
1474 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1476 {},
1477 STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION,
1478 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1479
1480 MI(_tile_table_fizzy_drink, {},
1481 177, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 4, 184,
1482 IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
1483 CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
1484 CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256,
1486 {},
1487 STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1488 STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1489
1490 MI(_tile_table_bubble_generator, {},
1491 203, 0xB3333333, 0, 0, 0, 3, 0, 0, 0, 5, 152,
1492 IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
1493 CT_BUBBLES, 13, CT_INVALID, 0, 5,
1494 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1496 {},
1497 STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION,
1498 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1499
1500 MI(_tile_table_toffee_quarry, {},
1501 213, 0xCCCCCCCC, 0, 0, 0, 3, 0, 0, 0, 5, 194,
1502 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1503 CT_TOFFEE, 10, CT_INVALID, 0, 5,
1504 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1506 {},
1507 STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION,
1508 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1509
1510 MI(_tile_table_sugar_mine, {},
1511 210, 0xBFFFFFFF, 0, 0, 0, 2, 0, 0, 0, 4, 15,
1512 IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
1513 CT_SUGAR, 11, CT_INVALID, 0, 5,
1514 CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256,
1516 {},
1517 STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION,
1518 STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL),
1519};
1520#undef MI
1521
1535#define MT(ca1, c1, ca2, c2, ca3, c3, sl, a1, a2, a3) { \
1536 {INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO, INVALID_CARGO}, \
1537 {ca1, ca2, ca3}, sl, a1, a2, a3, IndustryTileCallbackMasks{}, AnimationInfo<IndustryAnimationTriggers>{}, IndustryTileSpecialFlags{}, true, SubstituteGRFFileProps(INVALID_INDUSTRYTILE), {}, {c1, c2, c3} \
1538}
1539static const IndustryTileSpec _origin_industry_tile_specs[NEW_INDUSTRYTILEOFFSET] = {
1540 /* Coal Mine */
1548
1549 /* Power Station */
1554
1555 /* Sawmill */
1561
1562 /* Forest Artic, temperate */
1565
1566 /* Oil refinery */
1573
1574 /* Oil Rig */
1580
1581 /* Oil Wells artic, temperate and sub-tropical */
1586
1587 /* Farm tropic, arctic and temperate */
1594
1595 /* Factory temperate */
1600
1601 /* Printing works */
1606
1607 /* Copper ore mine */
1613
1614 /* Steel mill */
1621
1622 /* Bank temperate*/
1625
1626 /* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
1631
1632 /* Paper mill */
1641
1642 /* Gold mine */
1660
1661 /* Bank Sub Arctic */
1664
1665 /* Diamond mine */
1675
1676 /* Iron ore Mine */
1693
1694 /* Fruit plantation */
1696
1697 /* Rubber plantation */
1699
1700 /* Water supply */
1703
1704 /* Water tower */
1706
1707 /* Factory (sub-tropical) */
1708 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1709 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1710 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1711 MT(8, CT_COPPER_ORE, 8, CT_RUBBER, 8, CT_WOOD, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1712
1713 /* Lumber mill */
1718
1719 /* Candyfloss forest */
1722
1723 /* Sweet factory */
1724 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1725 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1726 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1727 MT(8, CT_COTTON_CANDY, 8, CT_TOFFEE, 8, CT_SUGAR, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1728
1729 /* Battery farm */
1732
1733 /* Cola wells */
1735
1736 /* Toy shop */
1741
1742 /* Toy factory */
1743 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1744 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1745 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1746 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1747 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1748 MT(8, CT_BATTERIES, 8, CT_PLASTIC, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1749
1750 /* Plastic Fountain */
1759
1760 /* Fizzy drink factory */
1761 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1762 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1763 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1764 MT(8, CT_BUBBLES, 8, CT_COLA, 0, CT_INVALID, SLOPE_STEEP, INDUSTRYTILE_NOANIM, INDUSTRYTILE_NOANIM, false),
1765
1766 /* Bubble generator */
1771
1772 /* Toffee quarry */
1776
1777 /* Sugar mine */
1786};
1787#undef MT
1788
1789#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:70
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
Definition cargo_type.h:84
@ MCT_LIVESTOCK_FRUIT
Cargo can be livestock or fruit.
Definition cargo_type.h:83
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
Definition cargo_type.h:85
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
Definition cargo_type.h:29
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.
@ Arctic
Landscape with snow levels.
@ Toyland
Landscape with funky industries and vehicles.
@ Tropic
Landscape with distinct rainforests and deserts,.
@ Temperate
Base landscape.
@ SLOPE_E
the east corner of the tile is raised
Definition slope_type.h:51
@ SLOPE_S
the south corner of the tile is raised
Definition slope_type.h:50
@ SLOPE_STEEP
indicates the slope is steep
Definition slope_type.h:53
@ SND_26_FARM_3
36 == 0x24 Industry producing: farm (3): horse
Definition sound_type.h:84
@ SND_03_FACTORY
1 == 0x01 Industry producing: factory: whistle
Definition sound_type.h:49
@ SND_24_FARM_1
34 == 0x22 Industry producing: farm (1): sheep
Definition sound_type.h:82
@ SND_28_SAWMILL
38 == 0x26 Industry producing: sawmill
Definition sound_type.h:86
@ SND_25_FARM_2
35 == 0x23 Industry producing: farm (2): cow
Definition sound_type.h:83
@ SND_33_PLASTIC_MINE
51 == 0x33 Industry producing: plastic fountain
Definition sound_type.h:99
Defines the data structure for constructing industry.
Defines the data structure of each individual tile of an industry.