OpenTTD
cargo_const.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 
11 #define MK(bt, label, c, e, f, g, h, fr, te, ks1, ks2, ks3, ks4, ks5, l, m, cmult) \
12  {bt, label, c, c, e, cmult, f, {g, h}, fr, te, 0, 0, ks1, ks2, ks3, ks4, ks5, l, m, nullptr, nullptr, 0}
13 
14 static const CargoSpec _default_cargo[] = {
15  MK( 0, 'PASS', 152, 1, 3185, 0, 24, false, TE_PASSENGERS,
16  STR_CARGO_PLURAL_PASSENGERS, STR_CARGO_SINGULAR_PASSENGER, STR_PASSENGERS, STR_QUANTITY_PASSENGERS, STR_ABBREV_PASSENGERS,
17  SPR_CARGO_PASSENGER, CC_PASSENGERS, 0x400),
18 
19  MK( 1, 'COAL', 6, 16, 5916, 7, 255, true, TE_NONE,
20  STR_CARGO_PLURAL_COAL, STR_CARGO_SINGULAR_COAL, STR_TONS, STR_QUANTITY_COAL, STR_ABBREV_COAL,
21  SPR_CARGO_COAL, CC_BULK, 0x100),
22 
23  MK( 2, 'MAIL', 15, 4, 4550, 20, 90, false, TE_MAIL,
24  STR_CARGO_PLURAL_MAIL, STR_CARGO_SINGULAR_MAIL, STR_BAGS, STR_QUANTITY_MAIL, STR_ABBREV_MAIL,
25  SPR_CARGO_MAIL, CC_MAIL, 0x200),
26 
27  /* Oil in temperate and arctic */
28  MK( 3, 'OIL_', 174, 16, 4437, 25, 255, true, TE_NONE,
29  STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL,
30  SPR_CARGO_OIL, CC_LIQUID, 0x100),
31 
32  /* Oil in subtropic */
33  MK( 3, 'OIL_', 174, 16, 4892, 25, 255, true, TE_NONE,
34  STR_CARGO_PLURAL_OIL, STR_CARGO_SINGULAR_OIL, STR_LITERS, STR_QUANTITY_OIL, STR_ABBREV_OIL,
35  SPR_CARGO_OIL, CC_LIQUID, 0x100),
36 
37  MK( 4, 'LVST', 208, 3, 4322, 4, 18, true, TE_NONE,
38  STR_CARGO_PLURAL_LIVESTOCK, STR_CARGO_SINGULAR_LIVESTOCK, STR_ITEMS, STR_QUANTITY_LIVESTOCK, STR_ABBREV_LIVESTOCK,
39  SPR_CARGO_LIVESTOCK, CC_PIECE_GOODS, 0x100),
40 
41  MK( 5, 'GOOD', 194, 8, 6144, 5, 28, true, TE_GOODS,
42  STR_CARGO_PLURAL_GOODS, STR_CARGO_SINGULAR_GOODS, STR_CRATES, STR_QUANTITY_GOODS, STR_ABBREV_GOODS,
43  SPR_CARGO_GOODS, CC_EXPRESS, 0x200),
44 
45  MK( 6, 'GRAI', 191, 16, 4778, 4, 40, true, TE_NONE,
46  STR_CARGO_PLURAL_GRAIN, STR_CARGO_SINGULAR_GRAIN, STR_TONS, STR_QUANTITY_GRAIN, STR_ABBREV_GRAIN,
47  SPR_CARGO_GRAIN, CC_BULK, 0x100),
48 
49  MK( 6, 'WHEA', 191, 16, 4778, 4, 40, true, TE_NONE,
50  STR_CARGO_PLURAL_WHEAT, STR_CARGO_SINGULAR_WHEAT, STR_TONS, STR_QUANTITY_WHEAT, STR_ABBREV_WHEAT,
51  SPR_CARGO_GRAIN, CC_BULK, 0x100),
52 
53  MK( 6, 'MAIZ', 191, 16, 4322, 4, 40, true, TE_NONE,
54  STR_CARGO_PLURAL_MAIZE, STR_CARGO_SINGULAR_MAIZE, STR_TONS, STR_QUANTITY_MAIZE, STR_ABBREV_MAIZE,
55  SPR_CARGO_GRAIN, CC_BULK, 0x100),
56 
57  /* Wood in temperate and arctic */
58  MK( 7, 'WOOD', 84, 16, 5005, 15, 255, true, TE_NONE,
59  STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD,
60  SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100),
61 
62  /* Wood in subtropic */
63  MK( 7, 'WOOD', 84, 16, 7964, 15, 255, true, TE_NONE,
64  STR_CARGO_PLURAL_WOOD, STR_CARGO_SINGULAR_WOOD, STR_TONS, STR_QUANTITY_WOOD, STR_ABBREV_WOOD,
65  SPR_CARGO_WOOD, CC_PIECE_GOODS, 0x100),
66 
67  MK( 8, 'IORE', 184, 16, 5120, 9, 255, true, TE_NONE,
68  STR_CARGO_PLURAL_IRON_ORE, STR_CARGO_SINGULAR_IRON_ORE, STR_TONS, STR_QUANTITY_IRON_ORE, STR_ABBREV_IRON_ORE,
69  SPR_CARGO_IRON_ORE, CC_BULK, 0x100),
70 
71  MK( 9, 'STEL', 10, 16, 5688, 7, 255, true, TE_NONE,
72  STR_CARGO_PLURAL_STEEL, STR_CARGO_SINGULAR_STEEL, STR_TONS, STR_QUANTITY_STEEL, STR_ABBREV_STEEL,
73  SPR_CARGO_STEEL, CC_PIECE_GOODS, 0x100),
74 
75  MK( 10, 'VALU', 202, 2, 7509, 1, 32, true, TE_NONE,
76  STR_CARGO_PLURAL_VALUABLES, STR_CARGO_SINGULAR_VALUABLES, STR_BAGS, STR_QUANTITY_VALUABLES, STR_ABBREV_VALUABLES,
77  SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100),
78 
79  MK( 10, 'GOLD', 202, 8, 5802, 10, 40, true, TE_NONE,
80  STR_CARGO_PLURAL_GOLD, STR_CARGO_SINGULAR_GOLD, STR_BAGS, STR_QUANTITY_GOLD, STR_ABBREV_GOLD,
81  SPR_CARGO_VALUES_GOLD, CC_ARMOURED, 0x100),
82 
83  MK( 10, 'DIAM', 202, 2, 5802, 10, 255, true, TE_NONE,
84  STR_CARGO_PLURAL_DIAMONDS, STR_CARGO_SINGULAR_DIAMOND, STR_BAGS, STR_QUANTITY_DIAMONDS, STR_ABBREV_DIAMONDS,
85  SPR_CARGO_DIAMONDS, CC_ARMOURED, 0x100),
86 
87  MK( 11, 'PAPR', 10, 16, 5461, 7, 60, true, TE_NONE,
88  STR_CARGO_PLURAL_PAPER, STR_CARGO_SINGULAR_PAPER, STR_TONS, STR_QUANTITY_PAPER, STR_ABBREV_PAPER,
89  SPR_CARGO_PAPER, CC_PIECE_GOODS, 0x100),
90 
91  MK( 12, 'FOOD', 48, 16, 5688, 0, 30, true, TE_FOOD,
92  STR_CARGO_PLURAL_FOOD, STR_CARGO_SINGULAR_FOOD, STR_TONS, STR_QUANTITY_FOOD, STR_ABBREV_FOOD,
93  SPR_CARGO_FOOD, CC_EXPRESS | CC_REFRIGERATED, 0x100),
94 
95  MK( 13, 'FRUT', 208, 16, 4209, 0, 15, true, TE_NONE,
96  STR_CARGO_PLURAL_FRUIT, STR_CARGO_SINGULAR_FRUIT, STR_TONS, STR_QUANTITY_FRUIT, STR_ABBREV_FRUIT,
97  SPR_CARGO_FRUIT, CC_BULK | CC_REFRIGERATED, 0x100),
98 
99  MK( 14, 'CORE', 184, 16, 4892, 12, 255, true, TE_NONE,
100  STR_CARGO_PLURAL_COPPER_ORE, STR_CARGO_SINGULAR_COPPER_ORE, STR_TONS, STR_QUANTITY_COPPER_ORE, STR_ABBREV_COPPER_ORE,
101  SPR_CARGO_COPPER_ORE, CC_BULK, 0x100),
102 
103  MK( 15, 'WATR', 10, 16, 4664, 20, 80, true, TE_WATER,
104  STR_CARGO_PLURAL_WATER, STR_CARGO_SINGULAR_WATER, STR_LITERS, STR_QUANTITY_WATER, STR_ABBREV_WATER,
105  SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100),
106 
107  MK( 16, 'RUBR', 6, 16, 4437, 2, 20, true, TE_NONE,
108  STR_CARGO_PLURAL_RUBBER, STR_CARGO_SINGULAR_RUBBER, STR_LITERS, STR_QUANTITY_RUBBER, STR_ABBREV_RUBBER,
109  SPR_CARGO_RUBBER, CC_LIQUID, 0x100),
110 
111  MK( 17, 'SUGR', 6, 16, 4437, 20, 255, true, TE_NONE,
112  STR_CARGO_PLURAL_SUGAR, STR_CARGO_SINGULAR_SUGAR, STR_TONS, STR_QUANTITY_SUGAR, STR_ABBREV_SUGAR,
113  SPR_CARGO_SUGAR, CC_BULK, 0x100),
114 
115  MK( 18, 'TOYS', 174, 2, 5574, 25, 255, true, TE_NONE,
116  STR_CARGO_PLURAL_TOYS, STR_CARGO_SINGULAR_TOY, STR_ITEMS, STR_QUANTITY_TOYS, STR_ABBREV_TOYS,
117  SPR_CARGO_TOYS, CC_PIECE_GOODS, 0x100),
118 
119  MK( 19, 'BATT', 208, 4, 4322, 2, 30, true, TE_NONE,
120  STR_CARGO_PLURAL_BATTERIES, STR_CARGO_SINGULAR_BATTERY, STR_ITEMS, STR_QUANTITY_BATTERIES, STR_ABBREV_BATTERIES,
121  SPR_CARGO_BATTERIES, CC_PIECE_GOODS, 0x100),
122 
123  MK( 20, 'SWET', 194, 5, 6144, 8, 40, true, TE_GOODS,
124  STR_CARGO_PLURAL_CANDY, STR_CARGO_SINGULAR_CANDY, STR_BAGS, STR_QUANTITY_SWEETS, STR_ABBREV_SWEETS,
125  SPR_CARGO_CANDY, CC_EXPRESS, 0x200),
126 
127  MK( 21, 'TOFF', 191, 16, 4778, 14, 60, true, TE_NONE,
128  STR_CARGO_PLURAL_TOFFEE, STR_CARGO_SINGULAR_TOFFEE, STR_TONS, STR_QUANTITY_TOFFEE, STR_ABBREV_TOFFEE,
129  SPR_CARGO_TOFFEE, CC_BULK, 0x100),
130 
131  MK( 22, 'COLA', 84, 16, 4892, 5, 75, true, TE_NONE,
132  STR_CARGO_PLURAL_COLA, STR_CARGO_SINGULAR_COLA, STR_LITERS, STR_QUANTITY_COLA, STR_ABBREV_COLA,
133  SPR_CARGO_WATERCOLA, CC_LIQUID, 0x100),
134 
135  MK( 23, 'CTCD', 184, 16, 5005, 10, 25, true, TE_NONE,
136  STR_CARGO_PLURAL_COTTON_CANDY, STR_CARGO_SINGULAR_COTTON_CANDY, STR_TONS, STR_QUANTITY_CANDYFLOSS, STR_ABBREV_CANDYFLOSS,
137  SPR_CARGO_COTTONCANDY, CC_BULK, 0x100),
138 
139  MK( 24, 'BUBL', 10, 1, 5077, 20, 80, true, TE_NONE,
140  STR_CARGO_PLURAL_BUBBLES, STR_CARGO_SINGULAR_BUBBLE, STR_ITEMS, STR_QUANTITY_BUBBLES, STR_ABBREV_BUBBLES,
141  SPR_CARGO_BUBBLES, CC_PIECE_GOODS, 0x100),
142 
143  MK( 25, 'PLST', 202, 16, 4664, 30, 255, true, TE_NONE,
144  STR_CARGO_PLURAL_PLASTIC, STR_CARGO_SINGULAR_PLASTIC, STR_LITERS, STR_QUANTITY_PLASTIC, STR_ABBREV_PLASTIC,
145  SPR_CARGO_PLASTIC, CC_LIQUID, 0x100),
146 
147  MK( 26, 'FZDR', 48, 2, 6250, 30, 50, true, TE_FOOD,
148  STR_CARGO_PLURAL_FIZZY_DRINKS, STR_CARGO_SINGULAR_FIZZY_DRINK, STR_ITEMS, STR_QUANTITY_FIZZY_DRINKS, STR_ABBREV_FIZZY_DRINKS,
149  SPR_CARGO_FIZZYDRINK, CC_PIECE_GOODS, 0x100),
150 
151  /* Void slot in temperate */
152  MK( 0xFF, 0, 1, 0, 5688, 0, 30, true, TE_NONE,
153  STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING,
154  SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100),
155 
156  /* Void slot in arctic */
157  MK( 0xFF, 0, 184, 0, 5120, 9, 255, true, TE_NONE,
158  STR_CARGO_PLURAL_NOTHING, STR_CARGO_SINGULAR_NOTHING, STR_TONS, STR_QUANTITY_NOTHING, STR_ABBREV_NOTHING,
159  SPR_ASCII_SPACE, CC_NOAVAILABLE, 0x100),
160 
161 };
162 
163 
165 static const CargoLabel _default_climate_cargo[NUM_LANDSCAPE][12] = {
166  { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'GRAI', 'WOOD', 'IORE', 'STEL', 'VALU', 33, },
167  { 'PASS', 'COAL', 'MAIL', 'OIL_', 'LVST', 'GOOD', 'WHEA', 'WOOD', 34, 'PAPR', 'GOLD', 'FOOD', },
168  { 'PASS', 'RUBR', 'MAIL', 4, 'FRUT', 'GOOD', 'MAIZ', 11, 'CORE', 'WATR', 'DIAM', 'FOOD', },
169  { 'PASS', 'SUGR', 'MAIL', 'TOYS', 'BATT', 'SWET', 'TOFF', 'COLA', 'CTCD', 'BUBL', 'PLST', 'FZDR', },
170 };
171 
Specification of a cargo type.
Definition: cargotype.h:55
Piece goods (Livestock, Wood, Steel, Paper)
Definition: cargotype.h:44
Cargo behaves water-like.
Definition: cargotype.h:30
Cargo behaves goods/candy-like.
Definition: cargotype.h:29
Mail.
Definition: cargotype.h:40
Armoured cargo (Valuables, Gold, Diamonds)
Definition: cargotype.h:42
No cargo class has been specified.
Definition: cargotype.h:38
Cargo has no effect.
Definition: cargotype.h:26
Express cargo (Goods, Food, Candy, but also possible for passengers)
Definition: cargotype.h:41
static const CargoLabel _default_climate_cargo[NUM_LANDSCAPE][12]
Table of cargo types available in each climate, by default.
Definition: cargo_const.h:165
Liquids (Oil, Water, Rubber)
Definition: cargotype.h:45
static const CargoSpec _default_cargo[]
Cargo types available by default.
Definition: cargo_const.h:14
Cargo behaves passenger-like.
Definition: cargotype.h:27
Cargo behaves mail-like.
Definition: cargotype.h:28
uint32 CargoLabel
Globally unique label of a cargo type.
Definition: cargotype.h:21
Cargo behaves food/fizzy-drinks-like.
Definition: cargotype.h:31
Bulk cargo (Coal, Grain etc., Ores, Fruit)
Definition: cargotype.h:43
Passengers.
Definition: cargotype.h:39
#define MK(bt, label, c, e, f, g, h, fr, te, ks1, ks2, ks3, ks4, ks5, l, m, cmult)
Construction macro for a CargoSpec structure.
Definition: cargo_const.h:11
Refrigerated cargo (Food, Fruit)
Definition: cargotype.h:46