1
0
Fork 0

(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)
release/0.6
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 { enum {
INVALID_INDUSTRY = 0xFFFF, INVALID_INDUSTRY = 0xFFFF,
INDUTILE_NOAMIN = 0xFF, ///< flag to mark industry tiles as having no animation
}; };
enum IndustryLifeType { enum IndustryLifeType {
@ -83,6 +84,10 @@ struct IndustrySpec {
struct IndustryTileSpec { struct IndustryTileSpec {
CargoID accepts_cargo[3]; ///< Cargo accepted by this tile CargoID accepts_cargo[3]; ///< Cargo accepted by this tile
Slope slopes_refused; ///< slope pattern on which this tile cannot be built 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 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); ind = GetIndustryByTile(ti->tile);
/* Retrieve pointer to the draw industry tile struct */ /* 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 : GetIndustryAnimationState(ti->tile) & 3 :
GetIndustryConstructionStage(ti->tile))]; 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); am = MoveGoodsToStation(i->xy, i->width, i->height, i->produced_cargo[0], cw);
i->last_mo_transported[0] += am; i->last_mo_transported[0] += am;
if (am != 0) { 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); ResetIndustryConstructionStage(tile);
SetIndustryCompleted(tile, true); SetIndustryCompleted(tile, true);
SetIndustryGfx(tile, newgfx); SetIndustryGfx(tile, newgfx);
@ -645,8 +645,8 @@ static void TileLoop_Industry(TileIndex tile)
TransportIndustryGoods(tile); TransportIndustryGoods(tile);
newgfx = _industry_section_animation_next[GetIndustryGfx(tile)]; newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
if (newgfx != 255) { if (newgfx != INDUTILE_NOAMIN) {
ResetIndustryConstructionStage(tile); ResetIndustryConstructionStage(tile);
SetIndustryGfx(tile, newgfx); SetIndustryGfx(tile, newgfx);
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file build_industry.h */
#ifndef BUILD_INDUSTRY_H #ifndef BUILD_INDUSTRY_H
#define BUILD_INDUSTRY_H #define BUILD_INDUSTRY_H
@ -1461,256 +1463,264 @@ static const byte * const _industry_create_table[4] = {
_industry_create_table_3, _industry_create_table_3,
}; };
#define MK(c1, c2, c3, sl) \ /** Writes the properties of a industry tile into the IndustryTileSpec struct.
{{c1, c2, c3}, sl} * @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[] = { static const IndustryTileSpec _industry_tile_specs[] = {
/* Coal Mine */ /* Coal Mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true),
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_INVALID, SLOPE_STEEP), MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Power Station */ /* Power Station */
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), MK(CT_PASSENGERS, CT_INVALID, CT_COAL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Sawmill */ /* Sawmill */
MK(CT_PASSENGERS, 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), MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_WOOD, SLOPE_STEEP), MK(CT_PASSENGERS, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Forest Artic, temperate */ /* Forest Artic, temperate */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 16, false), // Growing forest
/* Oil refinery */ /* Oil refinery */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_OIL, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_OIL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* oil Rig */ /* oil Rig */
MK(CT_INVALID, CT_INVALID, CT_PASSENGERS, 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), MK(CT_INVALID, CT_INVALID, CT_MAIL, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Oil Wells artic, temperate */ /* Oil Wells artic, temperate */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
/* Farm tropic, arctic and temperate */ /* Farm tropic, arctic and temperate */
MK(CT_PASSENGERS, 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), MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Factory temperate */ /* Factory temperate */
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), MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_GRAIN, CT_STEEL, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Printing works */ /* Printing works */
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), MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_PAPER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Copper ore mine */ /* Copper ore mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
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_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), MK(CT_PASSENGERS, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Steel mill */ /* Steel mill */
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), 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), 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), 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), 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), 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*/ /* Bank temperate*/
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_E), MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_E, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_PASSENGERS, CT_INVALID, CT_VALUABLES, SLOPE_S), 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*/ /* 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, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP), MK(CT_MAIZE, CT_INVALID, CT_LIVESTOCK, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Paper mill */ /* Paper mill */
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), MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_WOOD, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Gold mine */ /* Gold mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, true ),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Bank Sub Arctic */ /* Bank Sub Arctic */
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_E), MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_E, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_S), MK(CT_INVALID, CT_INVALID, CT_GOLD, SLOPE_S, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Diamond mine */ /* Diamond mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Iron ore Mine */ /* Iron ore Mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Fruit plantation */ /* 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 */ /* 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 */ /* Water supply */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Water tower */ /* 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) */ /* Factory (sub-tropical) */
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), 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), 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), MK(CT_COPPER_ORE, CT_WOOD, CT_RUBBER, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Lumber mill */ /* Lumber mill */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Candyfloss forest */ /* Candyfloss forest */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 129, false), // Growing candyfloss
/* Sweet factory */ /* Sweet factory */
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), 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), 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), MK(CT_COTTON_CANDY, CT_TOFFEE, CT_SUGAR, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Batter farm */ /* Batter farm */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, 135, false), // Growing batteries
/* Cola wells */ /* 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 */ /* Toy shop */
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), MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_TOYS, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Toy factory */ /* Toy factory */
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), MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_BATTERIES, CT_INVALID, CT_PLASTIC, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Plastic Fountain */ /* Plastic Fountain */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Fizzy drink factory */ /* Fizzy drink factory */
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), MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_BUBBLES, CT_INVALID, CT_COLA, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Bubble generator */ /* Bubble generator */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Toffee quarry */ /* Toffee quarry */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
/* Sugar mine */ /* Sugar mine */
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
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), MK(CT_INVALID, CT_INVALID, CT_INVALID, SLOPE_STEEP, INDUTILE_NOAMIN, INDUTILE_NOAMIN, false),
}; };
#undef MK #undef MK

View File

@ -1,5 +1,7 @@
/* $Id$ */ /* $Id$ */
/** @file industry_land.h */
struct DrawIndustrySpec1Struct { struct DrawIndustrySpec1Struct {
byte x; byte x;
byte image_1; 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), 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] = { static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
{ 8, 4, 0, 0}, { 8, 4, 0, 0},
{ 6, 0, 1, 0}, { 6, 0, 1, 0},
@ -817,14 +820,17 @@ static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
{ 10, 4, 0, 4}, { 10, 4, 0, 4},
}; };
/* this is ONLY used for Sugar Mine*/
static const byte _drawtile_proc1_x[5] = { static const byte _drawtile_proc1_x[5] = {
22, 17, 14, 10, 8 22, 17, 14, 10, 8
}; };
/* this is ONLY used for Sugar Mine*/
static const byte _drawtile_proc1_y[5] = { static const byte _drawtile_proc1_y[5] = {
73, 70, 69, 66, 41 73, 70, 69, 66, 41
}; };
/* this is ONLY used for Toy Factory*/
static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = { static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
{255, 255, 0}, {255, 255, 0},
{ 0, 255, 0}, { 0, 255, 0},
@ -878,6 +884,7 @@ static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
{255, 255, 0}, {255, 255, 0},
}; };
/* this is ONLY used for Toffee Quarry*/
static const byte _industry_anim_offs[] = { static const byte _industry_anim_offs[] = {
255, 0, 0, 0, 2, 4, 6, 8, 10, 9, 255, 0, 0, 0, 2, 4, 6, 8, 10, 9,
7, 5, 3, 1, 255, 0, 0, 0, 2, 4, 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 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[] = { static const byte _industry_anim_offs_2[] = {
68, 69, 71, 74, 77, 80, 83, 85, 86, 86, 68, 69, 71, 74, 77, 80, 83, 85, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 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, 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_x[] = {11, 11, 14, 13, 18, 15};
static const byte _coal_plant_sparks_y[] = {23, 11, 6, 3, 1, 0}; 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,
};