Changeset - r7205:514f02620507
[Not reviewed]
master
0 2 0
rubidium - 17 years ago 2007-07-08 19:54:51
rubidium@openttd.org
(svn r10483) -Codechange: add support for callbacks to manipulate the building chance of farm fields and chopping chance for lumber mills.
2 files changed with 18 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -929,11 +929,6 @@ void PlantRandomFarmField(const Industry
 
	if (tile != INVALID_TILE) PlantFarmField(tile, i->index);
 
}
 

	
 
static void MaybePlantFarmField(const Industry *i)
 
{
 
	if (CHANCE16(1, 8)) PlantRandomFarmField(i);
 
}
 

	
 
/**
 
 * Search callback function for ChopLumberMillTrees
 
 * @param tile to test
 
@@ -998,10 +993,23 @@ static void ProduceIndustryGoods(Industr
 
		i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + i->production_rate[0]);
 
		i->produced_cargo_waiting[1] = min(0xffff, i->produced_cargo_waiting[1] + i->production_rate[1]);
 

	
 
		if (indbehav & INDUSTRYBEH_PLANT_FIELDS) {
 
			MaybePlantFarmField(i);
 
		} else if ((indbehav & INDUSTRYBEH_CUT_TREES) && (i->counter & 0x1FF) == 0) {
 
			ChopLumberMillTrees(i);
 
		if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
 
			bool plant;
 
			if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
 
				plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
 
			} else {
 
				plant = CHANCE16(1, 8);
 
			}
 

	
 
			if (plant) PlantRandomFarmField(i);
 
		}
 
		if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
 
			bool cut = ((i->counter & 0x1FF) == 0);
 
			if (HASBIT(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
 
				cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
 
			}
 

	
 
			if (cut) ChopLumberMillTrees(i);
 
		}
 
	}
 
}
src/newgrf_callbacks.h
Show inline comments
 
@@ -153,7 +153,7 @@ enum CallbackID {
 
	CBID_INDUSTRY_WINDOW_MORE_TEXT  = 0x3A,
 

	
 
	/* Called to determine industry special effects */
 
	CBID_INDUSTRY_SPECIAL_EFFECT    = 0x3B, // not yet implemented
 
	CBID_INDUSTRY_SPECIAL_EFFECT    = 0x3B,
 

	
 
	/* Called to determine if industry can alter the ground below industry tile */
 
	CBID_INDUSTRY_AUTOSLOPE         = 0x3C, // not yet implemented
0 comments (0 inline, 0 general)