Changeset - r7000:2cb5bda647b1
[Not reviewed]
master
0 3 0
belugas - 17 years ago 2007-06-21 17:09:10
belugas@openttd.org
(svn r10256) -Add: Addition of IndustryTileOverrideManager
3 files changed with 35 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/newgrf_commons.cpp
Show inline comments
 
@@ -220,6 +220,29 @@ void IndustryOverrideManager::SetEntityS
 
	_industry_specs[ind_id].enabled = true;
 
}
 

	
 
void IndustryTileOverrideManager::SetEntitySpec(const IndustryTileSpec *its)
 
{
 
	IndustryGfx indt_id = this->AddEntityID(its->grf_prop.local_id, its->grf_prop.grffile->grfid, its->grf_prop.subst_id);
 

	
 
	if (indt_id == invalid_ID) {
 
		grfmsg(1, "IndustryTile.SetEntitySpec: Too many industry tiles allocated. Ignoring.");
 
		return;
 
	}
 

	
 
	memcpy(&_industry_tile_specs[indt_id], its, sizeof(*its));
 

	
 
	/* Now add the overrides. */
 
	for (int i = 0; i < max_offset; i++) {
 
		IndustryTileSpec *overridden_its = &_industry_tile_specs[i];
 

	
 
		if (entity_overrides[i] != its->grf_prop.local_id) continue;
 

	
 
		overridden_its->grf_prop.override = indt_id;
 
		overridden_its->enabled = false;
 
		entity_overrides[i] = invalid_ID;
 
	}
 
}
 

	
 
/** Function used by houses (and soon industries) to get information
 
 * on type of "terrain" the tile it is queries sits on.
 
 * @param tile TileIndex of the tile been queried
src/newgrf_commons.h
Show inline comments
 
@@ -76,8 +76,19 @@ class IndustryOverrideManager : public O
 
		void SetEntitySpec(const IndustrySpec *inds);
 
};
 

	
 

	
 
struct IndustryTileSpec;
 
class IndustryTileOverrideManager : public OverrideManagerBase
 
{
 
	public:
 
		IndustryTileOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
 
				OverrideManagerBase(offset, maximum, invalid) {};
 
		void SetEntitySpec(const IndustryTileSpec *indts);
 
};
 

	
 
extern HouseOverrideManager _house_mngr;
 
extern IndustryOverrideManager _industry_mngr;
 
extern IndustryTileOverrideManager _industile_mngr;
 

	
 
uint32 GetTerrainType(TileIndex tile);
 
TileIndex GetNearbyTile(byte parameter, TileIndex tile);
src/newgrf_industries.cpp
Show inline comments
 
@@ -19,6 +19,7 @@
 
 * to those used by the game, the IDs used for overriding old industries must be
 
 * translated when the idustry spec is set. */
 
IndustryOverrideManager _industry_mngr(NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE);
 
IndustryTileOverrideManager _industile_mngr(NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRYTILES, INVALID_INDUSTRYTILE);
 

	
 
/**
 
 * Finds the distance for the closest tile with water/land given a tile
0 comments (0 inline, 0 general)