mirror of https://github.com/OpenTTD/OpenTTD.git
Fix: [NewGRF] industry variable 66 and object variable 46 clamped the squared-euclidian distance to 16 bit, when they should not.
This commit is contained in:
parent
84aa17cea6
commit
2cf5df2a50
|
@ -286,11 +286,11 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout
|
||||||
TileIndex tile = GetNearbyTile(parameter, this->tile, true);
|
TileIndex tile = GetNearbyTile(parameter, this->tile, true);
|
||||||
return GetTownRadiusGroup(this->industry->town, tile) << 16 | std::min(DistanceManhattan(tile, this->industry->town->xy), 0xFFFFu);
|
return GetTownRadiusGroup(this->industry->town, tile) << 16 | std::min(DistanceManhattan(tile, this->industry->town->xy), 0xFFFFu);
|
||||||
}
|
}
|
||||||
/* Get square of Euclidian distance of closes town */
|
/* Get square of Euclidian distance of closest town */
|
||||||
case 0x66: {
|
case 0x66: {
|
||||||
if (this->tile == INVALID_TILE) break;
|
if (this->tile == INVALID_TILE) break;
|
||||||
TileIndex tile = GetNearbyTile(parameter, this->tile, true);
|
TileIndex tile = GetNearbyTile(parameter, this->tile, true);
|
||||||
return GetTownRadiusGroup(this->industry->town, tile) << 16 | std::min(DistanceSquare(tile, this->industry->town->xy), 0xFFFFu);
|
return DistanceSquare(tile, this->industry->town->xy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Count of industry, distance of closest instance
|
/* Count of industry, distance of closest instance
|
||||||
|
|
|
@ -303,8 +303,8 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid,
|
||||||
/* Get town zone and Manhattan distance of closest town */
|
/* Get town zone and Manhattan distance of closest town */
|
||||||
case 0x45: return GetTownRadiusGroup(t, this->tile) << 16 | std::min(DistanceManhattan(this->tile, t->xy), 0xFFFFu);
|
case 0x45: return GetTownRadiusGroup(t, this->tile) << 16 | std::min(DistanceManhattan(this->tile, t->xy), 0xFFFFu);
|
||||||
|
|
||||||
/* Get square of Euclidian distance of closes town */
|
/* Get square of Euclidian distance of closest town */
|
||||||
case 0x46: return GetTownRadiusGroup(t, this->tile) << 16 | std::min(DistanceSquare(this->tile, t->xy), 0xFFFFu);
|
case 0x46: return DistanceSquare(this->tile, t->xy);
|
||||||
|
|
||||||
/* Object colour */
|
/* Object colour */
|
||||||
case 0x47: return this->obj->colour;
|
case 0x47: return this->obj->colour;
|
||||||
|
|
Loading…
Reference in New Issue