Changeset - r7234:89807e0412b9
[Not reviewed]
master
0 3 0
rubidium - 17 years ago 2007-07-11 23:10:22
rubidium@openttd.org
(svn r10515) -Codechange: allow getting some more data about the environment of an industry.
3 files changed with 24 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/newgrf_industries.cpp
Show inline comments
 
@@ -165,8 +165,19 @@ uint32 IndustryGetVariable(const Resolve
 

	
 
		case 0x61: return 0; // Get random tile bits at offset param
 

	
 
		case 0x62: // Land info of nearby tiles
 
		case 0x63: break; // Animation stage of nerby tiles
 
		/* Land info of nearby tiles */
 
		case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
 

	
 
		/* Animation stage of nearby tiles */
 
		case 0x63 : {
 
			tile = GetNearbyTile(parameter, tile);
 
			if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == industry) {
 
				return GetIndustryAnimationState(tile);
 
			}
 
			return 0xFFFFFFFF;
 
		}
 

	
 
		/* Distance of nearest industry of given type */
 
		case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, indspec->grf_prop.grffile->grfid), industry); // Distance of nearest industry of given type
 
		/* Get town zone and Manhattan distance of closest town */
 
 		case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
 
@@ -296,12 +307,16 @@ uint32 IndustryLocationGetVariable(const
 
	}
 

	
 
	switch (variable) {
 
		case 0x62: break;// Land info of nearby tiles
 
		case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, object->u.industry_location.spec->grf_prop.grffile->grfid), NULL); // Distance of nearest industry of given type
 
		/* Land info of nearby tiles */
 
		case 0x62: return GetNearbyIndustryTileInformation(parameter, tile, INVALID_INDUSTRY);
 

	
 
		/* Distance of nearest industry of given type */
 
		case 0x64: return GetClosestIndustry(tile, MapNewGRFIndustryType(parameter, object->u.industry_location.spec->grf_prop.grffile->grfid), NULL);
 

	
 
		/* Location where to build the industry */
 
		case 0x80: return tile;
 
		case 0x81: return GB(tile, 8, 8);
 

	
 
		/* Pointer to the town the industry is associated with */
 
		case 0x82: return ClosestTownFromTile(tile, (uint)-1)->index;
 
		case 0x83:
src/newgrf_industries.h
Show inline comments
 
@@ -22,4 +22,6 @@ uint32 IndustryTileGetRandomBits(const R
 
uint32 IndustryTileGetTriggers(const ResolverObject *object);
 
void IndustryTileSetTriggers(const ResolverObject *object, int triggers);
 

	
 
uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index);
 

	
 
#endif /* NEWGRF_INDUSTRIES_H */
src/newgrf_industrytiles.cpp
Show inline comments
 
@@ -30,7 +30,7 @@
 
 * @param index of the industry been queried for
 
 * @return a construction of bits obeying the newgrf format
 
 */
 
static uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
 
uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index)
 
{
 
	byte tile_type;
 
	bool is_same_industry;
 
@@ -87,7 +87,8 @@ static uint32 IndustryTileGetVariable(co
 
		/* Land info of nearby tiles */
 
		case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds == NULL ? (IndustryID)INVALID_INDUSTRY : inds->index);
 

	
 
		case 0x61 : {/* Animation stage of nearby tiles */
 
		/* Animation stage of nearby tiles */
 
		case 0x61 : {
 
			tile = GetNearbyTile(parameter, tile);
 
			if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == inds) {
 
				return GetIndustryAnimationState(tile);
0 comments (0 inline, 0 general)