Show closest town and adv zone when building station

This commit is contained in:
dP
2019-11-04 18:56:01 +03:00
parent b9e442a63a
commit 9774d7dbc5
7 changed files with 26 additions and 0 deletions
+17
View File
@@ -80,6 +80,23 @@ int DrawStationCoverageAreaText(int left, int right, int top, StationCoverageTyp
return DrawStringMultiLine(left, right, top, INT32_MAX, supplies ? STR_STATION_BUILD_SUPPLIES_CARGO : STR_STATION_BUILD_ACCEPTS_CARGO);
}
int DrawStationAuthorityText(int left, int right, int top) {
TileIndex tile = TileVirtXY(_thd.pos.x, _thd.pos.y);
Town *town = ClosestTownFromTile(tile, UINT_MAX);
auto dist = DistanceManhattan(town->xy, tile);
SetDParam(0, town ? town->index : INVALID_TOWN);
if (dist <= 10) {
return DrawStringMultiLine(left, right, top, INT32_MAX, STR_CM_STATION_BUILD_TOWN_SMALL);
} else if (dist <= 15) {
return DrawStringMultiLine(left, right, top, INT32_MAX, STR_CM_STATION_BUILD_TOWN_MEDIUM);
} else if (dist <= 20) {
return DrawStringMultiLine(left, right, top, INT32_MAX, STR_CM_STATION_BUILD_TOWN_LARGE);
} else {
return DrawStringMultiLine(left, right, top, INT32_MAX, STR_CM_STATION_BUILD_TOWN);
}
}
/**
* Find stations adjacent to the current tile highlight area, so that existing coverage
* area can be drawn.