1
0
Fork 0

(svn r4584) CodeChange : Cleanup of industry_cmd (Step-3).

Renaming GetIndustrySpecification to GetIndustrySpec. Looks better.
Removing the _industry_prod_up/down/close_strings
in favor of IndustrySpec.closure/production_up/down_text;
A few reformatting along the way.
Work of tfc_team
release/0.5
belugas 2006-04-26 21:10:01 +00:00
parent 2f01c7d990
commit 6a31b30a20
2 changed files with 292 additions and 207 deletions

View File

@ -89,126 +89,6 @@ static const IndustryType _industry_close_mode[IT_END] = {
/* SUGAR_MINE */ INDUSTRYLIFE_PRODUCTION /* SUGAR_MINE */ INDUSTRYLIFE_PRODUCTION
}; };
static const StringID _industry_prod_up_strings[IT_END] = {
STR_4836_NEW_COAL_SEAM_FOUND_AT,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4837_NEW_OIL_RESERVES_FOUND,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4835_INCREASES_PRODUCTION,
STR_4837_NEW_OIL_RESERVES_FOUND,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4835_INCREASES_PRODUCTION,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4835_INCREASES_PRODUCTION,
STR_4838_IMPROVED_FARMING_METHODS,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
STR_4835_INCREASES_PRODUCTION,
};
static const StringID _industry_prod_down_strings[IT_END] = {
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_483A_INSECT_INFESTATION_CAUSES,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
STR_4839_PRODUCTION_DOWN_BY_50,
};
static const StringID _industry_close_strings[IT_END] = {
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4834_LACK_OF_NEARBY_TREES_CAUSES,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE
};
/** /**
* Retrieve the type for this industry. Although it is accessed by a tile, * Retrieve the type for this industry. Although it is accessed by a tile,
* it will return the general type of industry, and not the sprite index * it will return the general type of industry, and not the sprite index
@ -239,10 +119,10 @@ IndustryType GetIndustryType(TileIndex tile)
* Accessor for array _industry_specs. * Accessor for array _industry_specs.
* This will ensure at once : proper access and * This will ensure at once : proper access and
* not allowing modifications of it. * not allowing modifications of it.
* @param thistype of industry (which is the index in _industry_spec) * @param thistype of industry (which is the index in _industry_specs)
* @pre thistype < IT_END * @pre thistype < IT_END
**/ **/
static const IndustrySpec *GetIndustrySpecification(IndustryType thistype) static const IndustrySpec *GetIndustrySpec(IndustryType thistype)
{ {
assert(thistype < IT_END); assert(thistype < IT_END);
return &_industry_specs[thistype]; return &_industry_specs[thistype];
@ -447,11 +327,11 @@ static int32 ClearTile_Industry(TileIndex tile, byte flags)
static void TransportIndustryGoods(TileIndex tile) static void TransportIndustryGoods(TileIndex tile)
{ {
Industry *i = GetIndustryByTile(tile); Industry *i = GetIndustryByTile(tile);
const IndustrySpec *spec = GetIndustrySpecification(i->type); const IndustrySpec *indspec = GetIndustrySpec(i->type);
uint cw, am; uint cw, am;
cw = min(i->cargo_waiting[0], 255); cw = min(i->cargo_waiting[0], 255);
if (cw > spec->minimal_cargo/* && i->produced_cargo[0] != 0xFF*/) { if (cw > indspec->minimal_cargo/* && i->produced_cargo[0] != 0xFF*/) {
i->cargo_waiting[0] -= cw; i->cargo_waiting[0] -= cw;
/* fluctuating economy? */ /* fluctuating economy? */
@ -474,7 +354,7 @@ static void TransportIndustryGoods(TileIndex tile)
} }
cw = min(i->cargo_waiting[1], 255); cw = min(i->cargo_waiting[1], 255);
if (cw > spec->minimal_cargo) { if (cw > indspec->minimal_cargo) {
i->cargo_waiting[1] -= cw; i->cargo_waiting[1] -= cw;
if (_economy.fluct <= 0) cw = (cw + 1) / 2; if (_economy.fluct <= 0) cw = (cw + 1) / 2;
@ -1352,19 +1232,19 @@ do_clear:
static bool CheckIfTooCloseToIndustry(TileIndex tile, int type) static bool CheckIfTooCloseToIndustry(TileIndex tile, int type)
{ {
const IndustrySpec *spec = GetIndustrySpecification(type); const IndustrySpec *indspec = GetIndustrySpec(type);
const Industry *i; const Industry *i;
// accepting industries won't be close, not even with patch // accepting industries won't be close, not even with patch
if (_patches.same_industry_close && spec->accepts_cargo[0] == CT_INVALID) if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID)
return true; return true;
FOR_ALL_INDUSTRIES(i) { FOR_ALL_INDUSTRIES(i) {
// check if an industry that accepts the same goods is nearby // check if an industry that accepts the same goods is nearby
if (i->xy != 0 && if (i->xy != 0 &&
DistanceMax(tile, i->xy) <= 14 && DistanceMax(tile, i->xy) <= 14 &&
spec->accepts_cargo[0] != CT_INVALID && indspec->accepts_cargo[0] != CT_INVALID &&
spec->accepts_cargo[0] == i->accepts_cargo[0] && ( indspec->accepts_cargo[0] == i->accepts_cargo[0] && (
_game_mode != GM_EDITOR || _game_mode != GM_EDITOR ||
!_patches.same_industry_close || !_patches.same_industry_close ||
!_patches.multiple_industry_per_town !_patches.multiple_industry_per_town
@ -1375,7 +1255,7 @@ static bool CheckIfTooCloseToIndustry(TileIndex tile, int type)
// check "not close to" field. // check "not close to" field.
if (i->xy != 0 && if (i->xy != 0 &&
(i->type == spec->conflicting[0] || i->type == spec->conflicting[1] || i->type == spec->conflicting[2]) && (i->type == indspec->conflicting[0] || i->type == indspec->conflicting[1] || i->type == indspec->conflicting[2]) &&
DistanceMax(tile, i->xy) <= 14) { DistanceMax(tile, i->xy) <= 14) {
_error_message = STR_INDUSTRY_TOO_CLOSE; _error_message = STR_INDUSTRY_TOO_CLOSE;
return false; return false;
@ -1407,7 +1287,7 @@ static Industry *AllocateIndustry(void)
static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, const Town *t, byte owner) static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, const Town *t, byte owner)
{ {
const IndustrySpec *spec = GetIndustrySpecification(type); const IndustrySpec *indspec = GetIndustrySpec(type);
uint32 r; uint32 r;
int j; int j;
@ -1415,13 +1295,13 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
i->width = i->height = 0; i->width = i->height = 0;
i->type = type; i->type = type;
i->produced_cargo[0] = spec->produced_cargo[0]; i->produced_cargo[0] = indspec->produced_cargo[0];
i->produced_cargo[1] = spec->produced_cargo[1]; i->produced_cargo[1] = indspec->produced_cargo[1];
i->accepts_cargo[0] = spec->accepts_cargo[0]; i->accepts_cargo[0] = indspec->accepts_cargo[0];
i->accepts_cargo[1] = spec->accepts_cargo[1]; i->accepts_cargo[1] = indspec->accepts_cargo[1];
i->accepts_cargo[2] = spec->accepts_cargo[2]; i->accepts_cargo[2] = indspec->accepts_cargo[2];
i->production_rate[0] = spec->production_rate[0]; i->production_rate[0] = indspec->production_rate[0];
i->production_rate[1] = spec->production_rate[1]; i->production_rate[1] = indspec->production_rate[1];
if (_patches.smooth_economy) { if (_patches.smooth_economy) {
i->production_rate[0] = min((RandomRange(256) + 128) * i->production_rate[0] >> 8 , 255); i->production_rate[0] = min((RandomRange(256) + 128) * i->production_rate[0] >> 8 , 255);
@ -1500,7 +1380,7 @@ int32 CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
int num; int num;
const IndustryTileTable * const *itt; const IndustryTileTable * const *itt;
const IndustryTileTable *it; const IndustryTileTable *it;
const IndustrySpec *spec; const IndustrySpec *indspec;
SET_EXPENSES_TYPE(EXPENSES_OTHER); SET_EXPENSES_TYPE(EXPENSES_OTHER);
@ -1521,25 +1401,25 @@ int32 CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (!found) return CMD_ERROR; if (!found) return CMD_ERROR;
} }
spec = GetIndustrySpecification(p1); indspec = GetIndustrySpec(p1);
/* If the patch for raw-material industries is not on, you cannot build raw-material industries. /* If the patch for raw-material industries is not on, you cannot build raw-material industries.
* Raw material industries are industries that do not accept cargo (at least for now) * Raw material industries are industries that do not accept cargo (at least for now)
* Exclude the lumber mill (only "raw" industry that can be built) */ * Exclude the lumber mill (only "raw" industry that can be built) */
if (!_patches.build_rawmaterial_ind && if (!_patches.build_rawmaterial_ind &&
spec->accepts_cargo[0] == CT_INVALID && indspec->accepts_cargo[0] == CT_INVALID &&
spec->accepts_cargo[1] == CT_INVALID && indspec->accepts_cargo[1] == CT_INVALID &&
spec->accepts_cargo[2] == CT_INVALID && indspec->accepts_cargo[2] == CT_INVALID &&
p1 != IT_LUMBER_MILL) { p1 != IT_LUMBER_MILL) {
return CMD_ERROR; return CMD_ERROR;
} }
if (!_check_new_industry_procs[spec->check_proc](tile, p1)) return CMD_ERROR; if (!_check_new_industry_procs[indspec->check_proc](tile, p1)) return CMD_ERROR;
t = CheckMultipleIndustryInTown(tile, p1); t = CheckMultipleIndustryInTown(tile, p1);
if (t == NULL) return CMD_ERROR; if (t == NULL) return CMD_ERROR;
num = spec->num_table; num = indspec->num_table;
itt = spec->table; itt = indspec->table;
do { do {
if (--num < 0) return_cmd_error(STR_0239_SITE_UNSUITABLE); if (--num < 0) return_cmd_error(STR_0239_SITE_UNSUITABLE);
@ -1563,19 +1443,19 @@ Industry *CreateNewIndustry(TileIndex tile, IndustryType type)
const IndustryTileTable *it; const IndustryTileTable *it;
Industry *i; Industry *i;
const IndustrySpec *spec; const IndustrySpec *indspec;
if (!CheckSuitableIndustryPos(tile)) return NULL; if (!CheckSuitableIndustryPos(tile)) return NULL;
spec = GetIndustrySpecification(type); indspec = GetIndustrySpec(type);
if (!_check_new_industry_procs[spec->check_proc](tile, type)) return NULL; if (!_check_new_industry_procs[indspec->check_proc](tile, type)) return NULL;
t = CheckMultipleIndustryInTown(tile, type); t = CheckMultipleIndustryInTown(tile, type);
if (t == NULL) return NULL; if (t == NULL) return NULL;
/* pick a random layout */ /* pick a random layout */
it = spec->table[RandomRange(spec->num_table)]; it = indspec->table[RandomRange(indspec->num_table)];
if (!CheckIfIndustryTilesAreFree(tile, it, type, t)) return NULL; if (!CheckIfIndustryTilesAreFree(tile, it, type, t)) return NULL;
if (!CheckIfTooCloseToIndustry(tile, type)) return NULL; if (!CheckIfTooCloseToIndustry(tile, type)) return NULL;
@ -1589,13 +1469,14 @@ Industry *CreateNewIndustry(TileIndex tile, IndustryType type)
} }
static const byte _numof_industry_table[4][12] = { static const byte _numof_industry_table[4][12] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // difficulty settings for number of industries
{0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, //none
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5}, //low
{0, 2, 3, 4, 6, 7, 8, 9, 10, 10, 10}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, //normal
{0, 2, 3, 4, 6, 7, 8, 9, 10, 10, 10}, //high
}; };
static void PlaceInitialIndustry(byte type, int amount) static void PlaceInitialIndustry(IndustryType type, int amount)
{ {
int num = _numof_industry_table[_opt.diff.number_industries][amount]; int num = _numof_industry_table[_opt.diff.number_industries][amount];
@ -1638,6 +1519,7 @@ static void ExtChangeIndustryProduction(Industry *i)
{ {
bool closeit = true; bool closeit = true;
int j; int j;
const IndustrySpec *indspec = GetIndustrySpec(i->type);
switch (_industry_close_mode[i->type]) { switch (_industry_close_mode[i->type]) {
case INDUSTRYLIFE_NOT_CLOSABLE: case INDUSTRYLIFE_NOT_CLOSABLE:
@ -1669,7 +1551,7 @@ static void ExtChangeIndustryProduction(Industry *i)
percent = new * 100 / old - 100; percent = new * 100 / old - 100;
i->production_rate[j] = new; i->production_rate[j] = new;
if (new >= GetIndustrySpecification(i->type)->production_rate[j] / 4) if (new >= indspec->production_rate[j] / 4)
closeit = false; closeit = false;
mag = abs(percent); mag = abs(percent);
@ -1692,7 +1574,7 @@ static void ExtChangeIndustryProduction(Industry *i)
i->prod_level = 0; i->prod_level = 0;
SetDParam(0, i->index); SetDParam(0, i->index);
AddNewsItem( AddNewsItem(
_industry_close_strings[i->type], indspec->closure_text,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0), NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0),
i->xy + TileDiffXY(1, 1), 0 i->xy + TileDiffXY(1, 1), 0
); );
@ -1784,6 +1666,7 @@ static void ChangeIndustryProduction(Industry *i)
bool only_decrease = false; bool only_decrease = false;
StringID str = STR_NULL; StringID str = STR_NULL;
int type = i->type; int type = i->type;
const IndustrySpec *indspec = GetIndustrySpec(type);
switch (_industry_close_mode[type]) { switch (_industry_close_mode[type]) {
case INDUSTRYLIFE_NOT_CLOSABLE: case INDUSTRYLIFE_NOT_CLOSABLE:
@ -1813,19 +1696,19 @@ static void ChangeIndustryProduction(Industry *i)
b = 0xFF; b = 0xFF;
i->production_rate[1] = b; i->production_rate[1] = b;
str = _industry_prod_up_strings[type]; str = indspec->production_up_text;
} }
} else { } else {
/* Decrease production */ /* Decrease production */
if (i->prod_level == 4) { if (i->prod_level == 4) {
i->prod_level = 0; i->prod_level = 0;
str = _industry_close_strings[type]; str = indspec->closure_text;
} else { } else {
i->prod_level >>= 1; i->prod_level >>= 1;
i->production_rate[0] = (i->production_rate[0] + 1) >> 1; i->production_rate[0] = (i->production_rate[0] + 1) >> 1;
i->production_rate[1] = (i->production_rate[1] + 1) >> 1; i->production_rate[1] = (i->production_rate[1] + 1) >> 1;
str = _industry_prod_down_strings[type]; str = indspec->production_down_text;
} }
} }
} }
@ -1835,7 +1718,7 @@ static void ChangeIndustryProduction(Industry *i)
/* maybe close */ /* maybe close */
if ( (byte)(_cur_year - i->last_prod_year) >= 5 && CHANCE16(1,2)) { if ( (byte)(_cur_year - i->last_prod_year) >= 5 && CHANCE16(1,2)) {
i->prod_level = 0; i->prod_level = 0;
str = _industry_close_strings[type]; str = indspec->closure_text;
} }
break; break;
} }

View File

@ -7,14 +7,25 @@ typedef struct IndustryTileTable {
} IndustryTileTable; } IndustryTileTable;
typedef struct IndustrySpec { typedef struct IndustrySpec {
/** Tables with the 'layout' of different composition of GFXes */
const IndustryTileTable *const *table; const IndustryTileTable *const *table;
/** Number of elements in the table */
byte num_table; byte num_table;
/** Industries this industry cannot be close to */
IndustryType conflicting[3]; IndustryType conflicting[3];
/** index to a procedure to check for conflicting circumstances */
byte check_proc;
CargoID produced_cargo[2]; CargoID produced_cargo[2];
byte production_rate[2]; byte production_rate[2];
CargoID accepts_cargo[3]; /** The minimum amount of cargo transported to the stations; if the
* waiting cargo is less than this number, no cargo is moved to it*/
byte minimal_cargo; byte minimal_cargo;
byte check_proc; CargoID accepts_cargo[3];
StringID closure_text;
StringID production_up_text;
StringID production_down_text;
} IndustrySpec; } IndustrySpec;
#define MK(x,y, m) {{x, y}, m} #define MK(x,y, m) {{x, y}, m}
@ -1094,47 +1105,238 @@ typedef enum CheckProcs {
CHECK_END, CHECK_END,
} CheckProc; } CheckProc;
#define MK(tbl, a,b,c, p1,p2, r1,r2, a1,a2,a3, m1, proc) {tbl,lengthof(tbl),{a,b,c},{p1,p2},{r1,r2},{a1,a2,a3},m1,proc} #define MK(tbl, c1, c2, c3, proc, p1, r1, p2, r2, m, a1, a2, a3, s1, s2, s3) \
{tbl, lengthof(tbl), {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m, \
{a1, a2, a3}, s1, s2, s3}
static const IndustrySpec _industry_specs[] = { static const IndustrySpec _industry_specs[] = {
/* name not close to produce prodrate accepts min checkproc */ /* Format:
MK(_tile_table_coal_mine, 1,255,255, 1,255, 15, 0, 255,255,255, 5, CHECK_NOTHING), tile table
MK(_tile_table_power_station, 0,255,255, 255,255, 0, 0, 1,255,255, 5, CHECK_NOTHING), cannot be close to these industries (3 times) check proc
MK(_tile_table_sawmill, 3,255,255, 5,255, 0, 0, 7,255,255, 5, CHECK_NOTHING), (produced cargo + rate) (twice) minimum cargo moved to station
MK(_tile_table_forest, 2, 14,255, 7,255, 13, 0, 255,255,255, 30, CHECK_FOREST), 3 accepted cargo
MK(_tile_table_oil_refinery, 5,255,255, 5,255, 0, 0, 3,255,255, 5, CHECK_OIL), messages : Closure production up production down */
MK(_tile_table_oil_rig, 4,255,255, 3, 0, 15, 2, 255,255,255, 5, CHECK_OIL), MK(_tile_table_coal_mine,
MK(_tile_table_factory, 9, 8,255, 5,255, 0, 0, 4, 6, 9, 5, CHECK_NOTHING), IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
MK(_tile_table_printing_works, 14,255,255, 5,255, 0, 0, 9,255,255, 5, CHECK_NOTHING), CT_COAL, 15, CT_INVALID, 0, 5,
MK(_tile_table_steel_mill, 18, 6,255, 9,255, 0, 0, 8,255,255, 5, CHECK_NOTHING), CT_INVALID, CT_INVALID, CT_INVALID,
MK(_tile_table_farm, 6, 13,255, 6, 4, 10,10, 255,255,255, 5, CHECK_FARM), STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4836_NEW_COAL_SEAM_FOUND_AT, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_copper_mine, 23,255,255, 8,255, 10, 0, 255,255,255, 5, CHECK_NOTHING),
MK(_tile_table_oil_well, 4,255,255, 3,255, 12, 0, 255,255,255, 5, CHECK_NOTHING), MK(_tile_table_power_station,
MK(_tile_table_bank, 12,255,255, 10,255, 6, 0, 10,255,255, 2, CHECK_NOTHING), IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
MK(_tile_table_food_process, 9, 19, 24, 11,255, 0, 0, 4, 6,255, 5, CHECK_NOTHING), CT_INVALID, 0, CT_INVALID, 0, 5,
MK(_tile_table_paper_mill, 3, 7,255, 9,255, 0, 0, 7,255,255, 5, CHECK_NOTHING), CT_COAL, CT_INVALID, CT_INVALID,
MK(_tile_table_gold_mine, 16,255,255, 10,255, 7, 0, 255,255,255, 5, CHECK_NOTHING), STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_bank2, 15, 17,255, 255,255, 0, 0, 10,255,255, 5, CHECK_NOTHING),
MK(_tile_table_diamond_mine, 16,255,255, 10,255, 7, 0, 255,255,255, 5, CHECK_NOTHING), MK(_tile_table_sawmill,
MK(_tile_table_iron_mine, 8,255,255, 8,255, 10, 0, 255,255,255, 5, CHECK_NOTHING), IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
MK(_tile_table_fruit_plantation, 13,255,255, 4,255, 10, 0, 255,255,255, 15, CHECK_PLANTATION), CT_GOODS, 0, CT_INVALID, 0, 5,
MK(_tile_table_rubber_plantation,23,255,255, 1,255, 10, 0, 255,255,255, 15, CHECK_PLANTATION), CT_WOOD, CT_INVALID, CT_INVALID,
MK(_tile_table_water_supply, 22,255,255, 9,255, 12, 0, 255,255,255, 5, CHECK_WATER), STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_water_tower, 21,255,255, 255,255, 0, 0, 9,255,255, 5, CHECK_WATER),
MK(_tile_table_factory2, 10, 20, 25, 5,255, 0, 0, 1, 8, 7, 5, CHECK_PLANTATION), MK(_tile_table_forest,
MK(_tile_table_farm2, 13,255,255, 6,255, 11, 0, 255,255,255, 5, CHECK_PLANTATION), IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
MK(_tile_table_lumber_mill, 23,255,255, 7,255, 0, 0, 255,255,255, 5, CHECK_LUMBERMILL), CT_WOOD, 13, CT_INVALID, 0, 30,
MK(_tile_table_cotton_candy, 27,255,255, 8,255, 13, 0, 255,255,255, 30, CHECK_NOTHING), CT_INVALID, CT_INVALID, CT_INVALID,
MK(_tile_table_candy_factory, 26, 35, 36, 5,255, 0, 0, 1, 6, 8, 5, CHECK_NOTHING), STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_battery_farm, 31,255,255, 4,255, 11, 0, 255,255,255, 30, CHECK_NOTHING),
MK(_tile_table_cola_wells, 33,255,255, 7,255, 12, 0, 255,255,255, 5, CHECK_NOTHING), MK(_tile_table_oil_refinery,
MK(_tile_table_toy_shop, 31,255,255, 255,255, 0, 0, 3,255,255, 5, CHECK_NOTHING), IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_OIL,
MK(_tile_table_toy_factory, 30, 28, 32, 3,255, 0, 0, 10, 4,255, 5, CHECK_NOTHING), CT_GOODS, 0, CT_INVALID, 0, 5,
MK(_tile_table_plastic_fountain, 31,255,255, 10,255, 14, 0, 255,255,255, 5, CHECK_NOTHING), CT_OIL, CT_INVALID, CT_INVALID,
MK(_tile_table_fizzy_drink, 29, 34,255, 11,255, 0, 0, 7, 9,255, 5, CHECK_NOTHING), STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_bubble_generator, 33,255,255, 9,255, 13, 0, 255,255,255, 5, CHECK_BUBBLEGEN),
MK(_tile_table_toffee_quarry, 27,255,255, 6,255, 10, 0, 255,255,255, 5, CHECK_NOTHING), MK(_tile_table_oil_rig,
MK(_tile_table_sugar_mine, 27,255,255, 1,255, 11, 0, 255,255,255, 5, CHECK_NOTHING), IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL,
CT_OIL, 15, CT_PASSENGERS, 2, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_factory,
IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_LIVESTOCK, CT_GRAIN, CT_STEEL,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_printing_works,
IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_PAPER, CT_INVALID, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_steel_mill,
IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
CT_STEEL, 0, CT_INVALID, 0, 5,
CT_IRON_ORE, CT_INVALID, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_farm,
IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
CT_GRAIN, 10, CT_LIVESTOCK, 10, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_copper_mine,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_oil_well,
IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_OIL, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_bank,
IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_VALUABLES, 6, CT_INVALID, 0, 5,
CT_VALUABLES, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_food_process,
IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
CT_FOOD, 0, CT_INVALID, 0, 5,
CT_FRUIT, CT_MAIZE, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_paper_mill,
IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
CT_PAPER, 0, CT_INVALID, 0, 5,
CT_WOOD, CT_INVALID, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_gold_mine,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOLD, 7, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_bank2,
IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_GOLD, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_diamond_mine,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_DIAMONDS, 7, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_iron_mine,
IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_IRON_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_fruit_plantation,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_FRUIT, 10, CT_INVALID, 0, 15,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_rubber_plantation,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_RUBBER, 10, CT_INVALID, 0, 15,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_water_supply,
IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_WATER, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_water_tower,
IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_WATER, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_factory2,
IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_RUBBER, CT_COPPER_ORE, CT_WOOD,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_farm2,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_MAIZE, 11, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_lumber_mill,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
CT_WOOD, 0, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4834_LACK_OF_NEARBY_TREES_CAUSES, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_cotton_candy,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_candy_factory,
IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
CT_CANDY, 0, CT_INVALID, 0, 5,
CT_SUGAR, CT_TOFFEE, CT_COTTON_CANDY,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_battery_farm,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_BATTERIES, 11, CT_INVALID, 0, 30,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MK(_tile_table_cola_wells,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COLA, 12, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_toy_shop,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_TOYS, CT_INVALID, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_toy_factory,
IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
CT_TOYS, 0, CT_INVALID, 0, 5,
CT_PLASTIC, CT_BATTERIES, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_plastic_fountain,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_PLASTIC, 14, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_fizzy_drink,
IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
CT_COLA, CT_BUBBLES, CT_INVALID,
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_bubble_generator,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
CT_BUBBLES, 13, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_toffee_quarry,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_TOFFEE, 10, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MK(_tile_table_sugar_mine,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_SUGAR, 11, CT_INVALID, 0, 5,
CT_INVALID, CT_INVALID, CT_INVALID,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
}; };
#undef MK #undef MK