Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 10002) +++ src/lang/english.txt (working copy) @@ -1064,7 +1064,8 @@ STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING1} STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING1} STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING1} -STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING1} +STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees: {ORANGE}{STRING1} +STR_CONFIG_PATCHES_INVISIBLE_HOUSES :{LTBLUE}Invisible houses: {ORANGE}{STRING1} STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Land generator: {ORANGE}{STRING1} STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Original Index: src/settings.cpp =================================================================== --- src/settings.cpp (revision 10002) +++ src/settings.cpp (working copy) @@ -1334,6 +1334,7 @@ SDT_VAR(Patches, toolbar_pos, SLE_UINT8, S,MS, 0, 0, 2, 0, STR_CONFIG_PATCHES_TOOLBAR_POS, v_PositionMainToolbar), SDT_VAR(Patches, window_snap_radius, SLE_UINT8, S,D0, 10, 1, 32, 0, STR_CONFIG_PATCHES_SNAP_RADIUS, NULL), SDT_BOOL(Patches, invisible_trees, S, 0, false, STR_CONFIG_PATCHES_INVISIBLE_TREES, RedrawScreen), + SDT_BOOL(Patches, invisible_houses, S, 0, false, STR_CONFIG_PATCHES_INVISIBLE_HOUSES, RedrawScreen), SDT_BOOL(Patches, population_in_label, S, 0, true, STR_CONFIG_PATCHES_POPULATION_IN_LABEL, PopulationInLabelActive), SDT_VAR(Patches, map_x, SLE_UINT8, S, 0, 8, 6, 11, 0, STR_CONFIG_PATCHES_MAP_X, NULL), SDT_VAR(Patches, map_y, SLE_UINT8, S, 0, 8, 6, 11, 0, STR_CONFIG_PATCHES_MAP_Y, NULL), Index: src/settings_gui.cpp =================================================================== --- src/settings_gui.cpp (revision 10002) +++ src/settings_gui.cpp (working copy) @@ -589,6 +589,7 @@ "measure_tooltip", "window_snap_radius", "invisible_trees", + "invisible_houses", "population_in_label", "link_terraform_toolbar", "liveries", Index: src/town_cmd.cpp =================================================================== --- src/town_cmd.cpp (revision 10002) +++ src/town_cmd.cpp (working copy) @@ -161,24 +161,26 @@ /* Add a house on top of the ground? */ image = dcts->building.sprite; - if (image != 0) { - if (HASBIT(_transparent_opt, TO_HOUSES)) { - SETBIT(image, PALETTE_MODIFIER_TRANSPARENT); - pal = PALETTE_TO_TRANSPARENT; - } else { - pal = dcts->building.pal; - } + if (!HASBIT(_transparent_opt, TO_HOUSES) || !_patches.invisible_houses) { + if (image != 0) { + if (HASBIT(_transparent_opt, TO_HOUSES)) { + SETBIT(image, PALETTE_MODIFIER_TRANSPARENT); + pal = PALETTE_TO_TRANSPARENT; + } else { + pal = dcts->building.pal; + } - AddSortableSpriteToDraw(image, pal, - ti->x + dcts->subtile_x, - ti->y + dcts->subtile_y, - dcts->width + 1, - dcts->height + 1, - dcts->dz, - ti->z - ); + AddSortableSpriteToDraw(image, pal, + ti->x + dcts->subtile_x, + ti->y + dcts->subtile_y, + dcts->width + 1, + dcts->height + 1, + dcts->dz, + ti->z + ); - if (HASBIT(_transparent_opt, TO_HOUSES)) return; + if (HASBIT(_transparent_opt, TO_HOUSES)) return; + } } { Index: src/transparency_gui.cpp =================================================================== --- src/transparency_gui.cpp (revision 10002) +++ src/transparency_gui.cpp (working copy) @@ -46,13 +46,29 @@ SetWindowWidgetLoweredState(w, i, HASBIT(_transparent_opt, i - TTW_WIDGET_SIGNS)); } DrawWindowWidgets(w); + + //draw an X over the widget which tells wether the "invisible houses" patch is actived + if (_patches.invisible_houses) { + DrawString(w->widget[TTW_WIDGET_HOUSES].left+1, w->widget[TTW_WIDGET_HOUSES].top+1, STR_00C5, 0); + } break; case WE_CLICK: - if (e->we.click.widget >= TTW_WIDGET_SIGNS) { - Transparent_Click(e->we.click.widget - TTW_WIDGET_SIGNS); - MarkWholeScreenDirty(); + /* check for the CTRL key pressed, if so and we click on a widget which support it, we toggle the invisibility */ + if (_ctrl_pressed) { + switch (e->we.click.widget) { + case TTW_WIDGET_HOUSES: + _patches.invisible_houses ^= 1; + break; + } } + else { + /* else we toggle the transparency */ + if (e->we.click.widget >= TTW_WIDGET_SIGNS) { + Transparent_Click(e->we.click.widget - TTW_WIDGET_SIGNS); + } + } + MarkWholeScreenDirty(); break; } } Index: src/variables.h =================================================================== --- src/variables.h (revision 10002) +++ src/variables.h (working copy) @@ -235,6 +235,8 @@ bool pause_on_newgame; ///< Whether to start new games paused or not. TownLayoutByte town_layout; ///< Select town layout + + bool invisible_houses; ///< Make the transparent part of the houses invisible }; VARDEF Patches _patches;