Changeset - r6092:e08485d6ba23
[Not reviewed]
master
0 4 0
belugas - 17 years ago 2007-02-21 02:22:43
belugas@openttd.org
(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
4 files changed with 260 insertions and 159 deletions:
0 comments (0 inline, 0 general)
src/industry.h
Show inline comments
 
@@ -69,25 +69,31 @@ typedef struct IndustrySpec {
 
	CargoID accepts_cargo[3];
 

	
 
	IndustryLifeType life_type;  ///< This is also known as Industry production flag, in newgrf specs
 

	
 
	byte climate_availability;  ///< Bitmask, giving landscape enums as bit position
 

	
 
	StringID name;
 
	StringID closure_text;
 
	StringID production_up_text;
 
	StringID production_down_text;
 
} IndustrySpec;
 

	
 
typedef struct IndustryTileSpec {
 
	CargoID accepts_cargo[3];
 
	Slope slopes_refused;
 
} IndustryTileSpec;
 

	
 
const IndustrySpec *GetIndustrySpec(IndustryType thistype);
 
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);
 

	
 
DECLARE_OLD_POOL(Industry, Industry, 3, 8000)
 

	
 
/**
 
 * Check if an Industry really exists.
 
 */
 
static inline bool IsValidIndustry(const Industry *industry)
 
{
 
	return industry->xy != 0;
 
}
 

	
 
static inline bool IsValidIndustryID(IndustryID index)
src/industry_cmd.cpp
Show inline comments
 
@@ -78,24 +78,30 @@ IndustryType GetIndustryType(TileIndex t
 
 * Accessor for array _industry_specs.
 
 * This will ensure at once : proper access and
 
 * not allowing modifications of it.
 
 * @param thistype of industry (which is the index in _industry_specs)
 
 * @pre thistype < IT_END
 
 **/
 
const IndustrySpec *GetIndustrySpec(IndustryType thistype)
 
{
 
	assert(thistype < IT_END);
 
	return &_industry_specs[thistype];
 
}
 

	
 
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx)
 
{
 
	assert(gfx < NUM_INDUSTRY_GFXES);
 
	return &_industry_tile_specs[gfx];
 
}
 

	
 
void DestroyIndustry(Industry *i)
 
{
 
	BEGIN_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
 
		if (IsTileType(tile_cur, MP_INDUSTRY)) {
 
			if (GetIndustryIndex(tile_cur) == i->index) {
 
				DoClearSquare(tile_cur);
 
			}
 
		} else if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
 
			DeleteOilRig(tile_cur);
 
		}
 
	END_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
 

	
 
@@ -268,34 +274,34 @@ static void DrawTile_Industry(TileInfo *
 
static uint GetSlopeZ_Industry(TileIndex tile, uint x, uint y)
 
{
 
	return GetTileMaxZ(tile);
 
}
 

	
 
static Slope GetSlopeTileh_Industry(TileIndex tile, Slope tileh)
 
{
 
	return SLOPE_FLAT;
 
}
 

	
 
static void GetAcceptedCargo_Industry(TileIndex tile, AcceptedCargo ac)
 
{
 
	IndustryGfx gfx = GetIndustryGfx(tile);
 
	const IndustryTileSpec *itspec = GetIndustryTileSpec(GetIndustryGfx(tile));
 
	CargoID a;
 

	
 
	a = _industry_section_accepts_1[gfx];
 
	if (a != CT_INVALID) ac[a] = (a == 0) ? 1 : 8;
 
	a = itspec->accepts_cargo[0];
 
	if (a != CT_INVALID) ac[a] = (a == CT_PASSENGERS) ? 1 : 8;
 

	
 
	a = _industry_section_accepts_2[gfx];
 
	a = itspec->accepts_cargo[1];
 
	if (a != CT_INVALID) ac[a] = 8;
 

	
 
	a = _industry_section_accepts_3[gfx];
 
	a = itspec->accepts_cargo[2];
 
	if (a != CT_INVALID) ac[a] = 8;
 
}
 

	
 
static void GetTileDesc_Industry(TileIndex tile, TileDesc *td)
 
{
 
	const Industry *i = GetIndustryByTile(tile);
 

	
 
	td->owner = i->owner;
 
	td->str = GetIndustrySpec(i->type)->name;
 
	if (!IsIndustryCompleted(tile)) {
 
		SetDParamX(td->dparam, 0, td->str);
 
		td->str = STR_2058_UNDER_CONSTRUCTION;
 
@@ -1146,25 +1152,25 @@ static bool CheckIfIndustryTilesAreFree(
 

	
 
				if (IsClearWaterTile(cur_tile)) return false;
 

	
 
				tileh = GetTileSlope(cur_tile, NULL);
 
				if (IsSteepSlope(tileh)) return false;
 

	
 
				if (_patches.land_generator != LG_TERRAGENESIS || !_generating_world) {
 
					/* It is almost impossible to have a fully flat land in TG, so what we
 
					 *  do is that we check if we can make the land flat later on. See
 
					 *  CheckIfCanLevelIndustryPlatform(). */
 
					if (tileh != SLOPE_FLAT) {
 
						Slope t;
 
						byte bits = _industry_section_bits[it->gfx];
 
						byte bits = GetIndustryTileSpec(it->gfx)->slopes_refused;
 

	
 
						if (bits & 0x10) return false;
 

	
 
						t = ComplementSlope(tileh);
 

	
 
						if (bits & 1 && (t & SLOPE_NW)) return false;
 
						if (bits & 2 && (t & SLOPE_NE)) return false;
 
						if (bits & 4 && (t & SLOPE_SW)) return false;
 
						if (bits & 8 && (t & SLOPE_SE)) return false;
 
					}
 
				}
 

	
src/table/build_industry.h
Show inline comments
 
/* $Id$ */
 

	
 

	
 
#ifndef BUILD_INDUSTRY_H
 
#define BUILD_INDUSTRY_H
 

	
 
#define MK(x,y, m) {{x, y}, m}
 

	
 
#define MKEND {{-0x80, 0}, 0}
 

	
 
static const IndustryTileTable _tile_table_coal_mine_0[] = {
 
	MK(1,1, 0),
 
	MK(1,2, 2),
 
	MK(0,0, 5),
 
	MK(1,0, 6),
 
	MK(2,0, 3),
 
	MK(2,2, 3),
 
@@ -1451,150 +1452,266 @@ static const byte _industry_create_table
 
	5, 35,
 
	4, 36,
 
	0
 
};
 

	
 
static const byte * const _industry_create_table[4] = {
 
	_industry_create_table_0,
 
	_industry_create_table_1,
 
	_industry_create_table_2,
 
	_industry_create_table_3,
 
};
 

	
 

	
 
#define PAS CT_PASSENGERS
 
#define MK(c1, c2, c3, sl) \
 
	{{c1, c2, c3}, sl}
 

	
 
#define COL CT_COAL
 
#define RUB CT_RUBBER
 
#define SUG CT_SUGAR
 
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 MAL CT_MAIL
 
	/* 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 OIL CT_OIL
 
#define TOY CT_TOYS
 

	
 
#define LIV CT_LIVESTOCK // Fruit too
 
#define BAT CT_BATTERIES
 
	/* 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 GRA CT_GRAIN
 
#define WHT CT_WHEAT // Maize too
 
#define TOF CT_TOFFEE
 
	/* Forest Artic, temperate */
 
	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 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 IRN CT_IRON_ORE
 
#define COP CT_COPPER_ORE
 
#define CCY CT_COTTON_CANDY
 
	/* 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 STL CT_STEEL
 
#define PAP CT_PAPER
 
#define WAT CT_WATER
 
#define BBL CT_BUBBLES
 
	/* 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),
 

	
 
	/* 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 VAL CT_VALUABLES
 
#define GLD CT_GOLD // Diamonds too
 
#define PLC CT_PLASTIC
 
	/* 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),
 

	
 
	/* 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),
 

	
 
	/* 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),
 

	
 
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
 
};
 
	/* 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),
 

	
 
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
 
};
 
	/* 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),
 

	
 
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
 
};
 
	/* 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),
 

	
 
#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
 
	/* 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
 

	
 
#endif  /* BUILD_INDUSTRY_H */
src/table/industry_land.h
Show inline comments
 
@@ -952,52 +952,24 @@ N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   130, N,   N,   N,   N,   N,   136,  // <- chopping candyfloss and reaping batteries
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,   N,
 
N,   N,   N,   N,   N,   N,   N,
 
};
 

	
 
#undef N
 

	
 
/**
 
 * The indices into this table are the ones as described by
 
 * the enum with GFX_*s in industry_map.h.
 
 */
 
static const byte _industry_section_bits[NUM_INDUSTRY_GFXES] = {
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16,  4,  2, 16, 16, 16, 16, // <- temperate bank
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16,  4,  2, 16, 16, 16, 16, 16, // <- sub-arctic/sub-tropical bank
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16, 16,
 
	16, 16, 16, 16, 16, 16, 16,
 
};
 

	
 
/**
 
 * When true, the tile has to be drawn using the animation
 
 * state instead of the construction state.
 
 * The indices into this table are the ones as described by
 
 * the enum with GFX_*s in industry_map.h.
 
 */
 
static const bool _industry_section_draw_animation_state[NUM_INDUSTRY_GFXES] = {
 
	false, true,  false, false, false, false, false, false, // <- animated wheel tower of coal mine
 
	false, false, false, false, false, false, false, false,
 
	false, false, false, false, false, false, false, false,
 
	false, false, false, false, false, false, true,  true,  // <- animated oil well
0 comments (0 inline, 0 general)