Don't draw highlights on void tiles

This commit is contained in:
dP
2021-09-28 23:39:28 +03:00
parent cd2da419a5
commit 61abb49a48
3 changed files with 10 additions and 9 deletions

View File

@@ -471,7 +471,6 @@ void DrawTrainDepotSprite(SpriteID palette, const TileInfo *ti, RailType railtyp
void DrawTrainStationSprite(SpriteID palette, const TileInfo *ti, RailType railtype, Axis axis, byte section) {
int32 total_offset = 0;
PaletteID pal = COMPANY_SPRITE_COLOUR(_local_company);
const DrawTileSprites *t = GetStationTileLayout(STATION_RAIL, section + (axis == AXIS_X ? 0 : 1));
const RailtypeInfo *rti = nullptr;
@@ -1028,9 +1027,9 @@ void CalcCBTownLimitBorder(TileHighlight &th, TileIndex tile, SpriteID border_pa
if (in_zone) th.tint_all(ground_pal);
}
TileHighlight GetTileHighlight(const TileInfo *ti) {
TileHighlight GetTileHighlight(const TileInfo *ti, TileType tile_type) {
TileHighlight th;
if (ti->tile == INVALID_TILE) return th;
if (ti->tile == INVALID_TILE || tile_type == MP_VOID) return th;
if (_zoning.outer == CHECKTOWNZONES) {
auto p = GetTownZoneBorder(ti->tile);
auto color = PAL_NONE;
@@ -1133,7 +1132,8 @@ TileHighlight GetTileHighlight(const TileInfo *ti) {
return th;
}
void DrawTileZoning(const TileInfo *ti, const TileHighlight &th) {
void DrawTileZoning(const TileInfo *ti, const TileHighlight &th, TileType tile_type) {
if (ti->tile == INVALID_TILE || tile_type == MP_VOID) return;
for (uint i = 0; i < th.border_count; i++)
DrawBorderSprites(ti, th.border[i], th.border_color[i]);
if (th.sprite) {
@@ -1147,6 +1147,7 @@ void DrawTileZoning(const TileInfo *ti, const TileHighlight &th) {
}
bool DrawTileSelection(const TileInfo *ti, const TileHighlightType &tht) {
if (ti->tile == INVALID_TILE || IsTileType(ti->tile, MP_VOID)) return false;
_thd.cm.Draw(ti);
if (_thd.drawstyle == CM_HT_BLUEPRINT_PLACE) return true;

View File

@@ -75,8 +75,8 @@ DECLARE_ENUM_AS_BIT_SET(ZoningBorder);
bool CanBuild(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd);
bool CanBuild(const CommandContainer &cc);
TileHighlight GetTileHighlight(const TileInfo *ti);
void DrawTileZoning(const TileInfo *ti, const TileHighlight &th);
TileHighlight GetTileHighlight(const TileInfo *ti, TileType tile_type);
void DrawTileZoning(const TileInfo *ti, const TileHighlight &th, TileType tile_type);
bool DrawTileSelection(const TileInfo *ti, const TileHighlightType &tht);
void AllocateZoningMap(uint map_size);

View File

@@ -1312,13 +1312,13 @@ static void ViewportAddLandscape()
_vd.foundation[1] = -1;
_vd.last_foundation_child[0] = nullptr;
_vd.last_foundation_child[1] = nullptr;
_vd.cm_highlight = citymania::GetTileHighlight(&tile_info);
_vd.cm_highlight = citymania::GetTileHighlight(&tile_info, tile_type);
_tile_type_procs[tile_type]->draw_tile_proc(&tile_info);
if (tile_info.tile != INVALID_TILE){
citymania::DrawTileZoning(&tile_info);
citymania::DrawTileZoning(&tile_info, _vd.cm_highlight);
citymania::DrawTileZoning(&tile_info); // old zoning patch
citymania::DrawTileZoning(&tile_info, _vd.cm_highlight, tile_type);
DrawTileSelection(&tile_info);
}
}