(svn r9162) -Codechange: Cleanup of industry_cmd (Step-8). Gather tile animation data into IndustryTileSpec array

Added a few documentation on remaining animation arrays (mostly ToyLand ones)
This commit is contained in:
belugas 2007-03-14 02:52:50 +00:00
parent 4177215b41
commit 65ce0e36db
4 changed files with 207 additions and 278 deletions

View File

@ -12,6 +12,7 @@ typedef uint8 IndustryType;
enum {
INVALID_INDUSTRY = 0xFFFF,
INDUTILE_NOAMIN = 0xFF, ///< flag to mark industry tiles as having no animation
};
enum IndustryLifeType {
@ -83,6 +84,10 @@ struct IndustrySpec {
struct IndustryTileSpec {
CargoID accepts_cargo[3]; ///< Cargo accepted by this tile
Slope slopes_refused; ///< slope pattern on which this tile cannot be built
byte anim_production; ///< Animation frame to start when goods are produced
byte anim_next; ///< Next frame in an animation
bool anim_state; ///< When true, the tile has to be drawn using the animation
///< state instead of the construction state
};
const IndustrySpec *GetIndustrySpec(IndustryType thistype); ///< Array of industries default data

View File

@ -233,7 +233,7 @@ static void DrawTile_Industry(TileInfo *ti)
ind = GetIndustryByTile(ti->tile);
/* Retrieve pointer to the draw industry tile struct */
dits = &_industry_draw_tile_data[gfx << 2 | (_industry_section_draw_animation_state[gfx] ?
dits = &_industry_draw_tile_data[gfx << 2 | (GetIndustryTileSpec(gfx)->anim_state ?
GetIndustryAnimationState(ti->tile) & 3 :
GetIndustryConstructionStage(ti->tile))];
@ -357,9 +357,9 @@ static void TransportIndustryGoods(TileIndex tile)
am = MoveGoodsToStation(i->xy, i->width, i->height, i->produced_cargo[0], cw);
i->last_mo_transported[0] += am;
if (am != 0) {
uint newgfx = _industry_produce_section[GetIndustryGfx(tile)];
uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
if (newgfx != 0xFF) {
if (newgfx != INDUTILE_NOAMIN) {
ResetIndustryConstructionStage(tile);
SetIndustryCompleted(tile, true);
SetIndustryGfx(tile, newgfx);
@ -645,8 +645,8 @@ static void TileLoop_Industry(TileIndex tile)
TransportIndustryGoods(tile);
newgfx = _industry_section_animation_next[GetIndustryGfx(tile)];
if (newgfx != 255) {
newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
if (newgfx != INDUTILE_NOAMIN) {
ResetIndustryConstructionStage(tile);
SetIndustryGfx(tile, newgfx);
MarkTileDirtyByTile(tile);

View File

@ -1,5 +1,7 @@
/* $Id$ */
/** @file build_industry.h */
#ifndef BUILD_INDUSTRY_H
#define BUILD_INDUSTRY_H
@ -1461,256 +1463,264 @@ static const byte * const _industry_create_table[4] = {
_industry_create_table_3,
};
#define MK(c1, c2, c3, sl) \
{{c1, c2, c3}, sl}
/** Writes the properties of a industry tile into the IndustryTileSpec struct.
* @param c1 first type of cargo accepted for this tile
* @param c2 second cargo
* @param c3 and third cargo. Those three are in an array
* @param s1 slope refused upon choosing a place to build
* @param a1 animation frame on production
* @param a2 next frame of animation
* @param a3 chosses between animation of construction state
*/
#define MK(c1, c2, c3, sl, a1, a2, a3) {{c1, c2, c3}, sl, a1, a2, a3}
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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_COAL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Forest 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, 17, INDUTILE_NOAMIN, false), // Chopping forest
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 16, false), // Growing forest
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_OIL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_PASSENGERS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_MAIL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
/* 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),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_IRON_ORE, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Bank temperate*/
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_E),
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_S),
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_E, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_S, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Bank Sub Arctic */
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_E),
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_S),
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_E, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_S, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Fruit plantation */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Rubber plantation */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Water supply */
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, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Water tower */
MK(CT_INVALID, CT_INVALID, CT_WATER, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_WATER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Candyfloss forest */
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, 130, INDUTILE_NOAMIN, false), // Chopping candyfloss
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 129, false), // Growing candyfloss
/* 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),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Batter farm */
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, 136, INDUTILE_NOAMIN, false), // Reaping batteries
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 135, false), // Growing batteries
/* Cola wells */
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* 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),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
};
#undef MK

View File

@ -1,5 +1,7 @@
/* $Id$ */
/** @file industry_land.h */
struct DrawIndustrySpec1Struct {
byte x;
byte image_1;
@ -718,6 +720,7 @@ static const DrawBuildingsTileStruct _industry_draw_tile_data[NUM_INDUSTRY_GFXES
M( 0xf8d, PAL_NONE, 0x12a5 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE, 0, 0, 16, 16, 50, 1),
};
/* this is ONLY used for Sugar Mine*/
static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
{ 8, 4, 0, 0},
{ 6, 0, 1, 0},
@ -817,14 +820,17 @@ static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
{ 10, 4, 0, 4},
};
/* this is ONLY used for Sugar Mine*/
static const byte _drawtile_proc1_x[5] = {
22, 17, 14, 10, 8
};
/* this is ONLY used for Sugar Mine*/
static const byte _drawtile_proc1_y[5] = {
73, 70, 69, 66, 41
};
/* this is ONLY used for Toy Factory*/
static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
{255, 255, 0},
{ 0, 255, 0},
@ -878,6 +884,7 @@ static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
{255, 255, 0},
};
/* this is ONLY used for Toffee Quarry*/
static const byte _industry_anim_offs[] = {
255, 0, 0, 0, 2, 4, 6, 8, 10, 9,
7, 5, 3, 1, 255, 0, 0, 0, 2, 4,
@ -888,6 +895,7 @@ static const byte _industry_anim_offs[] = {
2, 4, 6, 8, 10, 9, 7, 5, 3, 1
};
/* this is ONLY used for the Bubble Generator*/
static const byte _industry_anim_offs_2[] = {
68, 69, 71, 74, 77, 80, 83, 85, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
@ -895,100 +903,6 @@ static const byte _industry_anim_offs_2[] = {
77, 76, 75, 74, 73, 72, 71, 70, 69, 68,
};
/* those are ONLY used for Power Station*/
static const byte _coal_plant_sparks_x[] = {11, 11, 14, 13, 18, 15};
static const byte _coal_plant_sparks_y[] = {23, 11, 6, 3, 1, 0};
#define N 255
/**
* Next frame in an animation
* 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_animation_next[NUM_INDUSTRY_GFXES] = {
N, N, N, N, N, N, N, N,
N, N, N, N, N, N, N, N,
N, 16, N, N, N, N, N, N, // <- growing forest
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, 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, 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, 129, N, N, N, N, N, // <- growing candyfloss
135, N, N, N, N, N, N, N, // <- 'growing' 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,
};
/**
* Animation to start when goods is produced
* The indices into this table are the ones as described by
* the enum with GFX_*s in industry_map.h.
*/
static const byte _industry_produce_section[NUM_INDUSTRY_GFXES] = {
N, N, N, N, N, N, N, N,
N, N, N, N, N, N, N, N,
17, N, N, N, N, N, N, N, // <- chopping forest
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, 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, 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, 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
/**
* 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
true, false, false, false, false, false, false, false, // <- animated oil well
false, false, false, false, false, false, false, false,
true, false, false, false, false, false, false, false, // <- animated wheel tower of copper mine
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
true, false, false, false, false, false, false, false, // <- animated wheel tower of gold mine
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false,
};