(svn r8827) -Codechange: Cleanup of industry_cmd (Step-6). Implementation of IndustryTileSPec, the alter ego of IndustrySpec.

It offers identification of the different industry tiles in a more distinct manner, as well as regrouping scattered pieces of data across the sources.  More to come
This commit is contained in:
belugas
2007-02-21 02:22:43 +00:00
parent ef2daa5060
commit 771932d889
4 changed files with 260 additions and 159 deletions

View File

@@ -1,6 +1,7 @@
/* $Id$ */
#ifndef BUILD_INDUSTRY_H
#define BUILD_INDUSTRY_H
#define MK(x,y, m) {{x, y}, m}
@@ -1460,141 +1461,257 @@ static const byte * const _industry_create_table[4] = {
_industry_create_table_3,
};
#define MK(c1, c2, c3, sl) \
{{c1, c2, c3}, sl}
#define PAS CT_PASSENGERS
static const IndustryTileSpec _industry_tile_specs[] = {
/* Coal Mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define COL CT_COAL
#define RUB CT_RUBBER
#define SUG CT_SUGAR
/* Power Station */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_COAL, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define MAL CT_MAIL
/* Sawmill */
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define OIL CT_OIL
#define TOY CT_TOYS
/* Forest Artic, temperate */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define LIV CT_LIVESTOCK // Fruit too
#define BAT CT_BATTERIES
/* Oil refinery */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_OIL, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define GRA CT_GRAIN
#define WHT CT_WHEAT // Maize too
#define TOF CT_TOFFEE
/* oil Rig */
MK(CT_INVALID, CT_INVALID, CT_PASSENGERS, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_MAIL, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define WOD CT_WOOD
#define CLA CT_COLA
/* Oil Wells artic, temperate */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define IRN CT_IRON_ORE
#define COP CT_COPPER_ORE
#define CCY CT_COTTON_CANDY
/* Farm tropic, arctic and temperate */
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
#define STL CT_STEEL
#define PAP CT_PAPER
#define WAT CT_WATER
#define BBL CT_BUBBLES
/* Factory temperate */
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP),
#define VAL CT_VALUABLES
#define GLD CT_GOLD // Diamonds too
#define PLC CT_PLASTIC
/* Printing works */
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP),
#define INV CT_INVALID
/* Copper ore mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP),
static const CargoID _industry_section_accepts_1[] = {
INV, INV, INV, PAS, INV, INV, INV, INV,
PAS, INV, INV, PAS, PAS, PAS, INV, INV,
INV, INV, INV, INV, INV, INV, INV, PAS,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, PAS, PAS, INV, INV, INV, INV, GRA,
GRA, GRA, GRA, INV, INV, INV, INV, INV,
INV, INV, PAS, PAS, PAS, PAS, PAS, PAS,
PAS, PAS, PAS, PAS, WHT, WHT, WHT, WHT,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, COP, COP, COP, COP, INV, INV, INV,
INV, INV, INV, CCY, CCY, CCY, CCY, INV,
INV, INV, INV, INV, INV, INV, BAT, BAT,
BAT, BAT, BAT, BAT, INV, INV, INV, INV,
INV, INV, INV, INV, BBL, BBL, BBL, BBL,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV
/* Steel mill */
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP),
/* Bank temperate*/
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_E),
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_S),
/* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP),
/* Paper mill */
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP),
/* Gold mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Bank Sub Arctic */
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_E),
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_S),
/* Diamond mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Iron ore Mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Fruit plantation */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Rubber plantation */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Water supply */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Water tower */
MK(CT_INVALID, CT_INVALID, CT_WATER, SLOPE_STEEP),
/* Factory (sub-tropical) */
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP),
/* Lumber mill */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Candyfloss forest */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Sweet factory */
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP),
/* Batter farm */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Cola wells */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Toy shop */
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP),
/* Toy factory */
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP),
/* Plastic Fountain */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Fizzy drink factory */
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP),
/* Bubble generator */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Toffee quarry */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
/* Sugar mine */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
};
#undef MK
static const CargoID _industry_section_accepts_2[] = {
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, STL,
STL, STL, STL, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, WOD, WOD, WOD, WOD, INV, INV, INV,
INV, INV, INV, TOF, TOF, TOF, TOF, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV
};
static const CargoID _industry_section_accepts_3[] = {
INV, INV, INV, INV, INV, INV, INV, INV,
COL, INV, INV, INV, INV, WOD, INV, INV,
INV, INV, INV, INV, OIL, INV, INV, INV,
PAS, MAL, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, LIV,
LIV, LIV, LIV, PAP, PAP, PAP, PAP, INV,
INV, INV, INV, INV, IRN, IRN, IRN, IRN,
IRN, IRN, VAL, VAL, LIV, LIV, LIV, LIV,
WOD, WOD, WOD, WOD, WOD, WOD, WOD, WOD,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, GLD, GLD, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV, INV,
WAT, RUB, RUB, RUB, RUB, INV, INV, INV,
INV, INV, INV, SUG, SUG, SUG, SUG, INV,
INV, INV, TOY, TOY, TOY, TOY, PLC, PLC,
PLC, PLC, PLC, PLC, INV, INV, INV, INV,
INV, INV, INV, INV, CLA, CLA, CLA, CLA,
INV, INV, INV, INV, INV, INV, INV, INV,
INV, INV, INV, INV, INV, INV, INV
};
#undef PAS
#undef COL
#undef RUB
#undef SUG
#undef MAL
#undef OIL
#undef TOY
#undef LIV
#undef BAT
#undef GRA
#undef WHT
#undef TOF
#undef WOD
#undef CLA
#undef IRN
#undef COP
#undef CCY
#undef STL
#undef PAP
#undef WAT
#undef BBL
#undef VAL
#undef GLD
#undef PLC
#undef INV
#endif /* BUILD_INDUSTRY_H */