(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.

pull/155/head
peter1138 17 years ago
parent 0340291888
commit 51d72c11c8

@ -756,6 +756,9 @@
<File
RelativePath=".\..\src\train_gui.cpp">
</File>
<File
RelativePath=".\..\src\transparency_gui.cpp">
</File>
<File
RelativePath=".\..\src\vehicle_gui.cpp">
</File>

@ -784,7 +784,7 @@
>
</File>
<File
RelativePath="..\src\direction.h"
RelativePath=".\..\src\direction.h"
>
</File>
<File
@ -1235,6 +1235,10 @@
RelativePath=".\..\src\train_gui.cpp"
>
</File>
<File
RelativePath=".\..\src\transparency_gui.cpp"
>
</File>
<File
RelativePath=".\..\src\vehicle_gui.cpp"
>

@ -220,6 +220,7 @@ subsidy_gui.cpp
terraform_gui.cpp
town_gui.cpp
train_gui.cpp
transparency_gui.cpp
vehicle_gui.cpp
# Landscape

@ -269,7 +269,14 @@ static void DrawCatenaryRailway(const TileInfo *ti)
continue; /* No neighbour, go looking for a better position */
}
AddSortableSpriteToDraw(pylons_normal[temp], PAL_NONE, x, y, 1, 1, 10,
SpriteID img = pylons_normal[temp];
SpriteID pal = PAL_NONE;
if (_transparent_opt & TO_BUILDINGS) {
SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
}
AddSortableSpriteToDraw(img, pal, x, y, 1, 1, 10,
GetSlopeZ(ti->x + x_pcp_offsets[i], ti->y + y_pcp_offsets[i]));
break; /* We already have drawn a pylon, bail out */
}
@ -278,7 +285,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
}
/* Don't draw a wire under a low bridge */
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !(_display_opt & DO_TRANS_BUILDINGS)) {
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !(_transparent_opt & TO_BUILDINGS)) {
uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
if (height <= TilePixelHeight(ti->tile) + TILE_HEIGHT) return;
@ -307,7 +314,14 @@ static void DrawCatenaryRailway(const TileInfo *ti)
assert(!IsSteepSlope(tileh[TS_HOME]));
sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
AddSortableSpriteToDraw( sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
SpriteID img = sss->image;
SpriteID pal = PAL_NONE;
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
}
AddSortableSpriteToDraw(img, pal, ti->x + sss->x_offset, ti->y + sss->y_offset,
sss->x_size, sss->y_size, sss->z_size, GetSlopeZ(ti->x + min(sss->x_offset, TILE_SIZE - 1), ti->y + min(sss->y_offset, TILE_SIZE - 1)) + sss->z_offset);
}
}
@ -339,7 +353,14 @@ static void DrawCatenaryOnBridge(const TileInfo *ti)
height = GetBridgeHeight(end);
AddSortableSpriteToDraw( sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
SpriteID img = sss->image;
SpriteID pal = PAL_NONE;
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
}
AddSortableSpriteToDraw(img, pal, ti->x + sss->x_offset, ti->y + sss->y_offset,
sss->x_size, sss->y_size, sss->z_size, height + sss->z_offset
);
@ -347,18 +368,26 @@ static void DrawCatenaryOnBridge(const TileInfo *ti)
/* every other tile needs a pylon on the northern end */
if (num % 2) {
if (axis == AXIS_X) {
AddSortableSpriteToDraw(pylons_bridge[0 + HASBIT(tlg, 0)], PAL_NONE, ti->x, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, height);
img = pylons_bridge[0 + HASBIT(tlg, 0)];
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
AddSortableSpriteToDraw(img, pal, ti->x, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, height);
} else {
AddSortableSpriteToDraw(pylons_bridge[2 + HASBIT(tlg, 1)], PAL_NONE, ti->x + 4 + 8 * HASBIT(tlg, 1), ti->y, 1, 1, 10, height);
img = pylons_bridge[2 + HASBIT(tlg, 1)];
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
AddSortableSpriteToDraw(img, pal, ti->x + 4 + 8 * HASBIT(tlg, 1), ti->y, 1, 1, 10, height);
}
}
/* need a pylon on the southern end of the bridge */
if (DistanceMax(ti->tile, start) == length) {
if (axis == AXIS_X) {
AddSortableSpriteToDraw(pylons_bridge[0 + HASBIT(tlg, 0)], PAL_NONE, ti->x + 16, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, height);
img = pylons_bridge[0 + HASBIT(tlg, 0)];
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
AddSortableSpriteToDraw(img, pal, ti->x + 16, ti->y + 4 + 8 * HASBIT(tlg, 0), 1, 1, 10, height);
} else {
AddSortableSpriteToDraw(pylons_bridge[2 + HASBIT(tlg, 1)], PAL_NONE, ti->x + 4 + 8 * HASBIT(tlg, 1), ti->y + 16, 1, 1, 10, height);
img = pylons_bridge[2 + HASBIT(tlg, 1)];
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
AddSortableSpriteToDraw(img, pal, ti->x + 4 + 8 * HASBIT(tlg, 1), ti->y + 16, 1, 1, 10, height);
}
}
}
@ -379,8 +408,15 @@ void DrawCatenary(const TileInfo *ti)
if (IsRailDepot(ti->tile)) {
const SortableSpriteStruct *sss = &CatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)];
SpriteID img = sss->image;
SpriteID pal = PAL_NONE;
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(img, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
}
AddSortableSpriteToDraw(
sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
img, pal, ti->x + sss->x_offset, ti->y + sss->y_offset,
sss->x_size, sss->y_size, sss->z_size,
GetTileMaxZ(ti->tile) + sss->z_offset
);

@ -259,7 +259,7 @@ static void DrawTile_Industry(TileInfo *ti)
/* Add industry on top of the ground? */
image = dits->building.sprite;
if (image != 0) {
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_INDUSTRIES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -274,7 +274,7 @@ static void DrawTile_Industry(TileInfo *ti)
dits->dz,
z);
if (_display_opt & DO_TRANS_BUILDINGS) return;
if (HASBIT(_transparent_opt, TO_INDUSTRIES)) return;
}
{

@ -802,6 +802,7 @@ STR_02DD_SUBSIDIES :Subsidies
STR_02DE_MAP_OF_WORLD :Map of world
STR_EXTRA_VIEW_PORT :Extra viewport
STR_SIGN_LIST :Sign list
STR_TRANSPARENCY_OPTIONS :Transparency options
STR_02DF_TOWN_DIRECTORY :Town directory
STR_TOWN_POPULATION :{BLACK}World population: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA}
@ -3154,3 +3155,12 @@ STR_DATE_LONG :{STRING} {STRIN
STR_FEEDER_CARGO_VALUE :{BLACK}Transfer Credits: {LTBLUE}{CURRENCY}
STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...this is a town owned road
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...road facing in the wrong direction
STR_TRANSPARENCY_TOOLB :{WHITE}Transparency Options
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Toggle transparency for station signs
STR_TRANSPARENT_TREES_DESC :{BLACK}Toggle transparency for trees
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Toggle transparency for houses
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Toggle transparency for industries
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Toggle transparency for buildables like stations, depots, waypoints and catenary
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Toggle transparency for bridges
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Toggle transparency for structures like lighthouses and antennas, maybe in future for eyecandy

@ -37,6 +37,7 @@
#include "settings.h"
#include "date.h"
#include "vehicle_gui.h"
#include "transparency_gui.h"
#include "newgrf_config.h"
#include "network/network_data.h"
@ -160,8 +161,8 @@ static void MenuClickSettings(int index)
case 8: _display_opt ^= DO_WAYPOINTS; break;
case 9: _display_opt ^= DO_FULL_ANIMATION; break;
case 10: _display_opt ^= DO_FULL_DETAIL; break;
case 11: _display_opt ^= DO_TRANS_BUILDINGS; break;
case 12: _display_opt ^= DO_TRANS_SIGNS; break;
case 11: TOGGLEBIT(_transparent_opt, TO_BUILDINGS); break;
case 12: TOGGLEBIT(_transparent_opt, TO_SIGNS); break;
}
MarkWholeScreenDirty();
}
@ -192,6 +193,7 @@ static void MenuClickMap(int index)
case 0: ShowSmallMap(); break;
case 1: ShowExtraViewPortWindow(); break;
case 2: ShowSignList(); break;
case 3: ShowTransparencyToolbar(); break;
}
}
@ -206,7 +208,8 @@ static void MenuClickScenMap(int index)
case 0: ShowSmallMap(); break;
case 1: ShowExtraViewPortWindow(); break;
case 2: ShowSignList(); break;
case 3: ShowTownDirectory(); break;
case 3: ShowTransparencyToolbar(); break;
case 4: ShowTownDirectory(); break;
}
}
@ -762,7 +765,7 @@ static void ToolbarSaveClick(Window *w)
static void ToolbarMapClick(Window *w)
{
PopupMainToolbMenu(w, 4, STR_02DE_MAP_OF_WORLD, 3, 0);
PopupMainToolbMenu(w, 4, STR_02DE_MAP_OF_WORLD, 4, 0);
}
static void ToolbarTownClick(Window *w)
@ -961,8 +964,8 @@ static void ToolbarOptionsClick(Window *w)
if (_display_opt & DO_WAYPOINTS) SETBIT(x, 8);
if (_display_opt & DO_FULL_ANIMATION) SETBIT(x, 9);
if (_display_opt & DO_FULL_DETAIL) SETBIT(x, 10);
if (_display_opt & DO_TRANS_BUILDINGS) SETBIT(x, 11);
if (_display_opt & DO_TRANS_SIGNS) SETBIT(x, 12);
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(x, 11);
if (HASBIT(_transparent_opt, TO_SIGNS)) SETBIT(x, 12);
WP(w,menu_d).checked_items = x;
}
@ -1001,7 +1004,7 @@ static void ToolbarScenDateForward(Window *w)
static void ToolbarScenMapTownDir(Window *w)
{
/* Scenario editor button, *hack*hack* use different button to activate */
PopupMainToolbMenu(w, 8 | (17 << 8), STR_02DE_MAP_OF_WORLD, 4, 0);
PopupMainToolbMenu(w, 8 | (17 << 8), STR_02DE_MAP_OF_WORLD, 5, 0);
}
static void ToolbarScenZoomIn(Window *w)
@ -2330,11 +2333,34 @@ static void MainWindowWndProc(Window *w, WindowEvent *e)
break;
#endif
case 'X':
_display_opt ^= DO_TRANS_BUILDINGS;
case '1' | WKC_CTRL:
case '2' | WKC_CTRL:
case '3' | WKC_CTRL:
case '4' | WKC_CTRL:
case '5' | WKC_CTRL:
case '6' | WKC_CTRL:
case '7' | WKC_CTRL:
/* Transparency toggle hot keys */
TOGGLEBIT(_transparent_opt, e->we.keypress.key - '1');
MarkWholeScreenDirty();
break;
case 'X' | WKC_CTRL:
ShowTransparencyToolbar();
break;
case 'X': {
static byte trans_opt = ~0;
if (_transparent_opt == 0) {
_transparent_opt = trans_opt;
} else {
trans_opt = _transparent_opt;
_transparent_opt = 0;
}
MarkWholeScreenDirty();
break;
}
#ifdef ENABLE_NETWORK
case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all
if (_networking) {

@ -406,7 +406,7 @@ void DrawTileLayout(const TileInfo *ti, const SpriteGroup *group, byte stage, Ho
image = dtss->image + stage;
pal = dtss->pal;
if (!HASBIT(image, SPRITE_MODIFIER_OPAQUE) && ((_display_opt & DO_TRANS_BUILDINGS))) {
if (!HASBIT(image, SPRITE_MODIFIER_OPAQUE) && HASBIT(_transparent_opt, TO_HOUSES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {

@ -128,10 +128,11 @@ static void NewsWindowProc(Window *w, WindowEvent *e)
DrawStringMultiCenter(215, ni->display_mode == NM_NORMAL ? 76 : 56,
ni->string_id, w->width - 4);
} else {
byte bk = _display_opt;
_display_opt &= ~DO_TRANS_BUILDINGS;
/* Back up transparency options to draw news view */
byte to_backup = _transparent_opt;
_transparent_opt = 0;
DrawWindowViewport(w);
_display_opt = bk;
_transparent_opt = to_backup;
/* Shade the viewport into gray, or color*/
vp = w->viewport;

@ -303,7 +303,10 @@ static void LoadIntroGame()
char filename[256];
_game_mode = GM_MENU;
CLRBITS(_display_opt, DO_TRANS_BUILDINGS); // don't make buildings transparent in intro
/* Clear transparency options */
_transparent_opt = 0;
_opt_ptr = &_opt_newgame;
ResetGRFConfig(false);

@ -175,10 +175,18 @@ enum {
DO_SHOW_STATION_NAMES = 1 << 1,
DO_SHOW_SIGNS = 1 << 2,
DO_FULL_ANIMATION = 1 << 3,
DO_TRANS_BUILDINGS = 1 << 4,
DO_FULL_DETAIL = 1 << 5,
DO_WAYPOINTS = 1 << 6,
DO_TRANS_SIGNS = 1 << 7,
};
enum {
TO_SIGNS,
TO_TREES,
TO_HOUSES,
TO_INDUSTRIES,
TO_BUILDINGS,
TO_BRIDGES,
TO_STRUCTURES,
};
/* Landscape types */
@ -461,6 +469,7 @@ enum WindowClass {
WC_GENERATE_LANDSCAPE,
WC_GENERATE_PROGRESS_WINDOW,
WC_CONFIRM_POPUP_QUERY,
WC_TRANSPARENCY_TOOLBAR,
};

@ -1373,7 +1373,7 @@ default_waypoint:
image += relocation;
}
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {

@ -765,7 +765,7 @@ static void DrawTile_Road(TileInfo *ti)
SpriteID image = dtss->image;
SpriteID pal;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {

@ -1205,7 +1205,7 @@ static const SettingDescGlobVarList _win32_settings[] = {
#endif /* WIN32 */
static const SettingDescGlobVarList _misc_settings[] = {
SDTG_MMANY("display_opt", SLE_UINT8, S, 0, _display_opt, (DO_SHOW_TOWN_NAMES|DO_SHOW_STATION_NAMES|DO_SHOW_SIGNS|DO_FULL_ANIMATION|DO_FULL_DETAIL|DO_TRANS_BUILDINGS|DO_WAYPOINTS), "SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|TRANS_BUILDINGS|FULL_DETAIL|WAYPOINTS", STR_NULL, NULL),
SDTG_MMANY("display_opt", SLE_UINT8, S, 0, _display_opt, (DO_SHOW_TOWN_NAMES|DO_SHOW_STATION_NAMES|DO_SHOW_SIGNS|DO_FULL_ANIMATION|DO_FULL_DETAIL|DO_WAYPOINTS), "SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS", STR_NULL, NULL),
SDTG_BOOL("news_ticker_sound", S, 0, _news_ticker_sound, true, STR_NULL, NULL),
SDTG_BOOL("fullscreen", S, 0, _fullscreen, false, STR_NULL, NULL),
SDTG_STR("videodriver", SLE_STRB,C|S,0, _ini_videodriver, NULL, STR_NULL, NULL),

@ -1959,7 +1959,7 @@ static void DrawTile_Station(TileInfo *ti)
}
SpriteID pal;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {

@ -151,7 +151,7 @@ static void DrawTile_Town(TileInfo *ti)
/* Add a house on top of the ground? */
image = dcts->building.sprite;
if (image != 0) {
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_HOUSES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -167,7 +167,7 @@ static void DrawTile_Town(TileInfo *ti)
ti->z
);
if (_display_opt & DO_TRANS_BUILDINGS) return;
if (HASBIT(_transparent_opt, TO_HOUSES)) return;
}
{

@ -0,0 +1,68 @@
/* $Id$ */
#include "stdafx.h"
#include "openttd.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "functions.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "sound.h"
#include "variables.h"
static void Transparent_Click(byte widget)
{
TOGGLEBIT(_transparent_opt, widget);
SndPlayFx(SND_15_BEEP);
}
static void TransparencyToolbWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
case WE_PAINT:
for (uint i = 0; i < 7; i++) {
SetWindowWidgetLoweredState(w, i + 3, HASBIT(_transparent_opt, i));
}
DrawWindowWidgets(w);
break;
case WE_CLICK:
if (e->we.click.widget >= 3) {
Transparent_Click(e->we.click.widget - 3);
MarkWholeScreenDirty();
}
break;
}
}
static const Widget _transparency_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 162, 0, 13, STR_TRANSPARENCY_TOOLB, STR_018C_WINDOW_TITLE_DRAG_THIS},
{WWT_STICKYBOX, RESIZE_NONE, 7, 163, 174, 0, 13, STR_NULL, STR_STICKY_BUTTON},
/* transparency widgets: transparent signs, trees, houses, industries, player's buildings */
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_PLACE_SIGN, STR_TRANSPARENT_SIGNS_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_PLANTTREES, STR_TRANSPARENT_TREES_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_TOWN, STR_TRANSPARENT_HOUSES_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_INDUSTRY, STR_TRANSPARENT_INDUSTRIES_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_COMPANY_LIST, STR_TRANSPARENT_BUILDINGS_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 152, 14, 35, SPR_IMG_BRIDGE, STR_TRANSPARENT_BRIDGES_DESC},
{ WWT_IMGBTN, RESIZE_NONE, 7, 153, 174, 14, 35, SPR_IMG_TRANSMITTER, STR_TRANSPARENT_STRUCTURES_DESC},
{ WIDGETS_END},
};
static const WindowDesc _transparency_desc = {
WDP_ALIGN_TBR, 58+36, 175, 36,
WC_TRANSPARENCY_TOOLBAR, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_transparency_widgets,
TransparencyToolbWndProc
};
void ShowTransparencyToolbar(void)
{
AllocateWindowDescFront(&_transparency_desc, 0);
}

@ -368,7 +368,7 @@ static void DrawTile_Trees(TileInfo *ti)
StartSpriteCombine();
if (!(_display_opt & DO_TRANS_BUILDINGS) || !_patches.invisible_trees) {
if (!HASBIT(_transparent_opt, TO_TREES) || !_patches.invisible_trees) {
TreeListEnt te[4];
uint i;
@ -377,7 +377,7 @@ static void DrawTile_Trees(TileInfo *ti)
do {
SpriteID image = s[0].sprite + (--i == 0 ? GetTreeGrowth(ti->tile) : 3);
SpriteID pal;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_TREES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {

@ -795,7 +795,7 @@ static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis
{ 2, 4, 8, 1, 2, 16, 9, 0 }
};
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -920,7 +920,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
image = psid->sprite;
/* draw ramp */
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -1012,7 +1012,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
z = GetBridgeHeight(rampsouth) - 3;
image = psid->sprite;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -1027,7 +1027,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
psid++;
image = psid->sprite;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -1050,7 +1050,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
/* draw poles below for small bridges */
if (psid->sprite != 0) {
image = psid->sprite;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {

@ -125,7 +125,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
dtus = &_draw_tile_unmovable_data[GetUnmovableType(ti->tile)];
image = dtus->image;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -143,7 +143,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
DrawGroundSprite(SPR_CONCRETE_GROUND, PAL_NONE);
image = SPR_STATUE_COMPANY;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {
@ -179,7 +179,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
foreach_draw_tile_seq(dtss, t->seq) {
image = dtss->image;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {

@ -282,6 +282,7 @@ VARDEF bool _do_autosave;
VARDEF int _autosave_ctr;
VARDEF byte _display_opt;
VARDEF byte _transparent_opt;
VARDEF int _caret_timer;
VARDEF uint32 _news_display_opt;
VARDEF bool _news_ticker_sound;

@ -1193,11 +1193,12 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDraw *ss
/* Draw the rectangle if 'tranparent station signs' is off,
* or if we are drawing a general text sign (STR_2806) */
if (!(_display_opt & DO_TRANS_SIGNS) || ss->string == STR_2806)
if (!HASBIT(_transparent_opt, TO_SIGNS) || ss->string == STR_2806) {
DrawFrameRect(
x, y, x + w, bottom, ss->color,
(_display_opt & DO_TRANS_BUILDINGS) ? FR_TRANSPARENT : FR_NONE
HASBIT(_transparent_opt, TO_SIGNS) ? FR_TRANSPARENT : FR_NONE
);
}
}
SetDParam(0, ss->params[0]);
@ -1205,8 +1206,8 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDraw *ss
/* if we didn't draw a rectangle, or if transparant building is on,
* draw the text in the color the rectangle would have */
if ((
(_display_opt & DO_TRANS_BUILDINGS) ||
(_display_opt & DO_TRANS_SIGNS && ss->string != STR_2806)
HASBIT(_transparent_opt, TO_BUILDINGS) ||
(HASBIT(_transparent_opt, TO_SIGNS) && ss->string != STR_2806)
) && ss->width != 0) {
/* Real colors need the IS_PALETTE_COLOR flag
* otherwise colors from _string_colormap are assumed. */

@ -421,7 +421,7 @@ static void DrawWaterStuff(const TileInfo *ti, const WaterDrawTileStruct *wdts,
SpriteID image = wdts->image + base;
SpriteID pal;
if (_display_opt & DO_TRANS_BUILDINGS) {
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
pal = PALETTE_TO_TRANSPARENT;
} else {

Loading…
Cancel
Save