mirror of https://github.com/OpenTTD/OpenTTD
(svn r10515) -Codechange: allow getting some more data about the environment of an industry.
parent
57268fa7e3
commit
5f7f99e381
|
@ -165,8 +165,19 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
|
||||||
|
|
||||||
case 0x61: return 0; // Get random tile bits at offset param
|
case 0x61: return 0; // Get random tile bits at offset param
|
||||||
|
|
||||||
case 0x62: // Land info of nearby tiles
|
/* Land info of nearby tiles */
|
||||||
case 0x63: break; // Animation stage of nerby 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
|
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 */
|
/* Get town zone and Manhattan distance of closest town */
|
||||||
case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
|
case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
|
||||||
|
@ -296,12 +307,16 @@ uint32 IndustryLocationGetVariable(const ResolverObject *object, byte variable,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (variable) {
|
switch (variable) {
|
||||||
case 0x62: break;// Land info of nearby tiles
|
/* 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
|
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 */
|
/* Location where to build the industry */
|
||||||
case 0x80: return tile;
|
case 0x80: return tile;
|
||||||
case 0x81: return GB(tile, 8, 8);
|
case 0x81: return GB(tile, 8, 8);
|
||||||
|
|
||||||
/* Pointer to the town the industry is associated with */
|
/* Pointer to the town the industry is associated with */
|
||||||
case 0x82: return ClosestTownFromTile(tile, (uint)-1)->index;
|
case 0x82: return ClosestTownFromTile(tile, (uint)-1)->index;
|
||||||
case 0x83:
|
case 0x83:
|
||||||
|
|
|
@ -22,4 +22,6 @@ uint32 IndustryTileGetRandomBits(const ResolverObject *object);
|
||||||
uint32 IndustryTileGetTriggers(const ResolverObject *object);
|
uint32 IndustryTileGetTriggers(const ResolverObject *object);
|
||||||
void IndustryTileSetTriggers(const ResolverObject *object, int triggers);
|
void IndustryTileSetTriggers(const ResolverObject *object, int triggers);
|
||||||
|
|
||||||
|
uint32 GetNearbyIndustryTileInformation(byte parameter, TileIndex tile, IndustryID index);
|
||||||
|
|
||||||
#endif /* NEWGRF_INDUSTRIES_H */
|
#endif /* NEWGRF_INDUSTRIES_H */
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
* @param index of the industry been queried for
|
* @param index of the industry been queried for
|
||||||
* @return a construction of bits obeying the newgrf format
|
* @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;
|
byte tile_type;
|
||||||
bool is_same_industry;
|
bool is_same_industry;
|
||||||
|
@ -87,7 +87,8 @@ static uint32 IndustryTileGetVariable(const ResolverObject *object, byte variabl
|
||||||
/* Land info of nearby tiles */
|
/* Land info of nearby tiles */
|
||||||
case 0x60 : return GetNearbyIndustryTileInformation(parameter, tile, inds == NULL ? (IndustryID)INVALID_INDUSTRY : inds->index);
|
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);
|
tile = GetNearbyTile(parameter, tile);
|
||||||
if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == inds) {
|
if (IsTileType(tile, MP_INDUSTRY) && GetIndustryByTile(tile) == inds) {
|
||||||
return GetIndustryAnimationState(tile);
|
return GetIndustryAnimationState(tile);
|
||||||
|
|
Loading…
Reference in New Issue