mirror of https://github.com/OpenTTD/OpenTTD
(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.
parent
abf88b687c
commit
a2cec54c9d
|
@ -756,6 +756,9 @@
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\train_gui.cpp">
|
RelativePath=".\..\src\train_gui.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\..\src\transparency_gui.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\vehicle_gui.cpp">
|
RelativePath=".\..\src\vehicle_gui.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|
|
@ -784,7 +784,7 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\src\direction.h"
|
RelativePath=".\..\src\direction.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
|
@ -1235,6 +1235,10 @@
|
||||||
RelativePath=".\..\src\train_gui.cpp"
|
RelativePath=".\..\src\train_gui.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\..\src\transparency_gui.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\..\src\vehicle_gui.cpp"
|
RelativePath=".\..\src\vehicle_gui.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -220,6 +220,7 @@ subsidy_gui.cpp
|
||||||
terraform_gui.cpp
|
terraform_gui.cpp
|
||||||
town_gui.cpp
|
town_gui.cpp
|
||||||
train_gui.cpp
|
train_gui.cpp
|
||||||
|
transparency_gui.cpp
|
||||||
vehicle_gui.cpp
|
vehicle_gui.cpp
|
||||||
|
|
||||||
# Landscape
|
# Landscape
|
||||||
|
|
|
@ -269,7 +269,14 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||||
continue; /* No neighbour, go looking for a better position */
|
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]));
|
GetSlopeZ(ti->x + x_pcp_offsets[i], ti->y + y_pcp_offsets[i]));
|
||||||
break; /* We already have drawn a pylon, bail out */
|
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 */
|
/* 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));
|
uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
|
||||||
|
|
||||||
if (height <= TilePixelHeight(ti->tile) + TILE_HEIGHT) return;
|
if (height <= TilePixelHeight(ti->tile) + TILE_HEIGHT) return;
|
||||||
|
@ -307,7 +314,14 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||||
assert(!IsSteepSlope(tileh[TS_HOME]));
|
assert(!IsSteepSlope(tileh[TS_HOME]));
|
||||||
sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
|
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);
|
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);
|
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
|
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 */
|
/* every other tile needs a pylon on the northern end */
|
||||||
if (num % 2) {
|
if (num % 2) {
|
||||||
if (axis == AXIS_X) {
|
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 {
|
} 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 */
|
/* need a pylon on the southern end of the bridge */
|
||||||
if (DistanceMax(ti->tile, start) == length) {
|
if (DistanceMax(ti->tile, start) == length) {
|
||||||
if (axis == AXIS_X) {
|
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 {
|
} 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)) {
|
if (IsRailDepot(ti->tile)) {
|
||||||
const SortableSpriteStruct *sss = &CatenarySpriteData_Depot[GetRailDepotDirection(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(
|
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,
|
sss->x_size, sss->y_size, sss->z_size,
|
||||||
GetTileMaxZ(ti->tile) + sss->z_offset
|
GetTileMaxZ(ti->tile) + sss->z_offset
|
||||||
);
|
);
|
||||||
|
|
|
@ -259,7 +259,7 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||||
/* Add industry on top of the ground? */
|
/* Add industry on top of the ground? */
|
||||||
image = dits->building.sprite;
|
image = dits->building.sprite;
|
||||||
if (image != 0) {
|
if (image != 0) {
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_INDUSTRIES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -274,7 +274,7 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||||
dits->dz,
|
dits->dz,
|
||||||
z);
|
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_02DE_MAP_OF_WORLD :Map of world
|
||||||
STR_EXTRA_VIEW_PORT :Extra viewport
|
STR_EXTRA_VIEW_PORT :Extra viewport
|
||||||
STR_SIGN_LIST :Sign list
|
STR_SIGN_LIST :Sign list
|
||||||
|
STR_TRANSPARENCY_OPTIONS :Transparency options
|
||||||
STR_02DF_TOWN_DIRECTORY :Town directory
|
STR_02DF_TOWN_DIRECTORY :Town directory
|
||||||
STR_TOWN_POPULATION :{BLACK}World population: {COMMA}
|
STR_TOWN_POPULATION :{BLACK}World population: {COMMA}
|
||||||
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {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_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_ON_TOWN_ROAD :{WHITE}...this is a town owned road
|
||||||
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...road facing in the wrong direction
|
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 "settings.h"
|
||||||
#include "date.h"
|
#include "date.h"
|
||||||
#include "vehicle_gui.h"
|
#include "vehicle_gui.h"
|
||||||
|
#include "transparency_gui.h"
|
||||||
#include "newgrf_config.h"
|
#include "newgrf_config.h"
|
||||||
|
|
||||||
#include "network/network_data.h"
|
#include "network/network_data.h"
|
||||||
|
@ -160,8 +161,8 @@ static void MenuClickSettings(int index)
|
||||||
case 8: _display_opt ^= DO_WAYPOINTS; break;
|
case 8: _display_opt ^= DO_WAYPOINTS; break;
|
||||||
case 9: _display_opt ^= DO_FULL_ANIMATION; break;
|
case 9: _display_opt ^= DO_FULL_ANIMATION; break;
|
||||||
case 10: _display_opt ^= DO_FULL_DETAIL; break;
|
case 10: _display_opt ^= DO_FULL_DETAIL; break;
|
||||||
case 11: _display_opt ^= DO_TRANS_BUILDINGS; break;
|
case 11: TOGGLEBIT(_transparent_opt, TO_BUILDINGS); break;
|
||||||
case 12: _display_opt ^= DO_TRANS_SIGNS; break;
|
case 12: TOGGLEBIT(_transparent_opt, TO_SIGNS); break;
|
||||||
}
|
}
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
}
|
}
|
||||||
|
@ -192,6 +193,7 @@ static void MenuClickMap(int index)
|
||||||
case 0: ShowSmallMap(); break;
|
case 0: ShowSmallMap(); break;
|
||||||
case 1: ShowExtraViewPortWindow(); break;
|
case 1: ShowExtraViewPortWindow(); break;
|
||||||
case 2: ShowSignList(); break;
|
case 2: ShowSignList(); break;
|
||||||
|
case 3: ShowTransparencyToolbar(); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +208,8 @@ static void MenuClickScenMap(int index)
|
||||||
case 0: ShowSmallMap(); break;
|
case 0: ShowSmallMap(); break;
|
||||||
case 1: ShowExtraViewPortWindow(); break;
|
case 1: ShowExtraViewPortWindow(); break;
|
||||||
case 2: ShowSignList(); 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)
|
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)
|
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_WAYPOINTS) SETBIT(x, 8);
|
||||||
if (_display_opt & DO_FULL_ANIMATION) SETBIT(x, 9);
|
if (_display_opt & DO_FULL_ANIMATION) SETBIT(x, 9);
|
||||||
if (_display_opt & DO_FULL_DETAIL) SETBIT(x, 10);
|
if (_display_opt & DO_FULL_DETAIL) SETBIT(x, 10);
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) SETBIT(x, 11);
|
if (HASBIT(_transparent_opt, TO_BUILDINGS)) SETBIT(x, 11);
|
||||||
if (_display_opt & DO_TRANS_SIGNS) SETBIT(x, 12);
|
if (HASBIT(_transparent_opt, TO_SIGNS)) SETBIT(x, 12);
|
||||||
WP(w,menu_d).checked_items = x;
|
WP(w,menu_d).checked_items = x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1001,7 +1004,7 @@ static void ToolbarScenDateForward(Window *w)
|
||||||
static void ToolbarScenMapTownDir(Window *w)
|
static void ToolbarScenMapTownDir(Window *w)
|
||||||
{
|
{
|
||||||
/* Scenario editor button, *hack*hack* use different button to activate */
|
/* 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)
|
static void ToolbarScenZoomIn(Window *w)
|
||||||
|
@ -2330,11 +2333,34 @@ static void MainWindowWndProc(Window *w, WindowEvent *e)
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 'X':
|
case '1' | WKC_CTRL:
|
||||||
_display_opt ^= DO_TRANS_BUILDINGS;
|
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();
|
MarkWholeScreenDirty();
|
||||||
break;
|
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
|
#ifdef ENABLE_NETWORK
|
||||||
case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all
|
case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all
|
||||||
if (_networking) {
|
if (_networking) {
|
||||||
|
|
|
@ -406,7 +406,7 @@ void DrawTileLayout(const TileInfo *ti, const SpriteGroup *group, byte stage, Ho
|
||||||
image = dtss->image + stage;
|
image = dtss->image + stage;
|
||||||
pal = dtss->pal;
|
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);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
} 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,
|
DrawStringMultiCenter(215, ni->display_mode == NM_NORMAL ? 76 : 56,
|
||||||
ni->string_id, w->width - 4);
|
ni->string_id, w->width - 4);
|
||||||
} else {
|
} else {
|
||||||
byte bk = _display_opt;
|
/* Back up transparency options to draw news view */
|
||||||
_display_opt &= ~DO_TRANS_BUILDINGS;
|
byte to_backup = _transparent_opt;
|
||||||
|
_transparent_opt = 0;
|
||||||
DrawWindowViewport(w);
|
DrawWindowViewport(w);
|
||||||
_display_opt = bk;
|
_transparent_opt = to_backup;
|
||||||
|
|
||||||
/* Shade the viewport into gray, or color*/
|
/* Shade the viewport into gray, or color*/
|
||||||
vp = w->viewport;
|
vp = w->viewport;
|
||||||
|
|
|
@ -303,7 +303,10 @@ static void LoadIntroGame()
|
||||||
char filename[256];
|
char filename[256];
|
||||||
|
|
||||||
_game_mode = GM_MENU;
|
_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;
|
_opt_ptr = &_opt_newgame;
|
||||||
ResetGRFConfig(false);
|
ResetGRFConfig(false);
|
||||||
|
|
||||||
|
|
|
@ -175,10 +175,18 @@ enum {
|
||||||
DO_SHOW_STATION_NAMES = 1 << 1,
|
DO_SHOW_STATION_NAMES = 1 << 1,
|
||||||
DO_SHOW_SIGNS = 1 << 2,
|
DO_SHOW_SIGNS = 1 << 2,
|
||||||
DO_FULL_ANIMATION = 1 << 3,
|
DO_FULL_ANIMATION = 1 << 3,
|
||||||
DO_TRANS_BUILDINGS = 1 << 4,
|
|
||||||
DO_FULL_DETAIL = 1 << 5,
|
DO_FULL_DETAIL = 1 << 5,
|
||||||
DO_WAYPOINTS = 1 << 6,
|
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 */
|
/* Landscape types */
|
||||||
|
@ -461,6 +469,7 @@ enum WindowClass {
|
||||||
WC_GENERATE_LANDSCAPE,
|
WC_GENERATE_LANDSCAPE,
|
||||||
WC_GENERATE_PROGRESS_WINDOW,
|
WC_GENERATE_PROGRESS_WINDOW,
|
||||||
WC_CONFIRM_POPUP_QUERY,
|
WC_CONFIRM_POPUP_QUERY,
|
||||||
|
WC_TRANSPARENCY_TOOLBAR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1373,7 +1373,7 @@ default_waypoint:
|
||||||
image += relocation;
|
image += relocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
||||||
|
|
|
@ -765,7 +765,7 @@ static void DrawTile_Road(TileInfo *ti)
|
||||||
SpriteID image = dtss->image;
|
SpriteID image = dtss->image;
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
|
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
||||||
|
|
|
@ -1205,7 +1205,7 @@ static const SettingDescGlobVarList _win32_settings[] = {
|
||||||
#endif /* WIN32 */
|
#endif /* WIN32 */
|
||||||
|
|
||||||
static const SettingDescGlobVarList _misc_settings[] = {
|
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("news_ticker_sound", S, 0, _news_ticker_sound, true, STR_NULL, NULL),
|
||||||
SDTG_BOOL("fullscreen", S, 0, _fullscreen, false, 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),
|
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;
|
SpriteID pal;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else if (HASBIT(image, PALETTE_MODIFIER_COLOR)) {
|
} 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? */
|
/* Add a house on top of the ground? */
|
||||||
image = dcts->building.sprite;
|
image = dcts->building.sprite;
|
||||||
if (image != 0) {
|
if (image != 0) {
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_HOUSES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -167,7 +167,7 @@ static void DrawTile_Town(TileInfo *ti)
|
||||||
ti->z
|
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();
|
StartSpriteCombine();
|
||||||
|
|
||||||
if (!(_display_opt & DO_TRANS_BUILDINGS) || !_patches.invisible_trees) {
|
if (!HASBIT(_transparent_opt, TO_TREES) || !_patches.invisible_trees) {
|
||||||
TreeListEnt te[4];
|
TreeListEnt te[4];
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
|
@ -377,7 +377,7 @@ static void DrawTile_Trees(TileInfo *ti)
|
||||||
do {
|
do {
|
||||||
SpriteID image = s[0].sprite + (--i == 0 ? GetTreeGrowth(ti->tile) : 3);
|
SpriteID image = s[0].sprite + (--i == 0 ? GetTreeGrowth(ti->tile) : 3);
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_TREES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -795,7 +795,7 @@ static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis
|
||||||
{ 2, 4, 8, 1, 2, 16, 9, 0 }
|
{ 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);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -920,7 +920,7 @@ static void DrawTile_TunnelBridge(TileInfo *ti)
|
||||||
image = psid->sprite;
|
image = psid->sprite;
|
||||||
|
|
||||||
/* draw ramp */
|
/* draw ramp */
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1012,7 +1012,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
|
||||||
z = GetBridgeHeight(rampsouth) - 3;
|
z = GetBridgeHeight(rampsouth) - 3;
|
||||||
|
|
||||||
image = psid->sprite;
|
image = psid->sprite;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1027,7 +1027,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
|
||||||
|
|
||||||
psid++;
|
psid++;
|
||||||
image = psid->sprite;
|
image = psid->sprite;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1050,7 +1050,7 @@ void DrawBridgeMiddle(const TileInfo* ti)
|
||||||
/* draw poles below for small bridges */
|
/* draw poles below for small bridges */
|
||||||
if (psid->sprite != 0) {
|
if (psid->sprite != 0) {
|
||||||
image = psid->sprite;
|
image = psid->sprite;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BRIDGES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -125,7 +125,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
|
||||||
dtus = &_draw_tile_unmovable_data[GetUnmovableType(ti->tile)];
|
dtus = &_draw_tile_unmovable_data[GetUnmovableType(ti->tile)];
|
||||||
|
|
||||||
image = dtus->image;
|
image = dtus->image;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -143,7 +143,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
|
||||||
DrawGroundSprite(SPR_CONCRETE_GROUND, PAL_NONE);
|
DrawGroundSprite(SPR_CONCRETE_GROUND, PAL_NONE);
|
||||||
|
|
||||||
image = SPR_STATUE_COMPANY;
|
image = SPR_STATUE_COMPANY;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -179,7 +179,7 @@ static void DrawTile_Unmovable(TileInfo *ti)
|
||||||
|
|
||||||
foreach_draw_tile_seq(dtss, t->seq) {
|
foreach_draw_tile_seq(dtss, t->seq) {
|
||||||
image = dtss->image;
|
image = dtss->image;
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_STRUCTURES)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -282,6 +282,7 @@ VARDEF bool _do_autosave;
|
||||||
VARDEF int _autosave_ctr;
|
VARDEF int _autosave_ctr;
|
||||||
|
|
||||||
VARDEF byte _display_opt;
|
VARDEF byte _display_opt;
|
||||||
|
VARDEF byte _transparent_opt;
|
||||||
VARDEF int _caret_timer;
|
VARDEF int _caret_timer;
|
||||||
VARDEF uint32 _news_display_opt;
|
VARDEF uint32 _news_display_opt;
|
||||||
VARDEF bool _news_ticker_sound;
|
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,
|
/* Draw the rectangle if 'tranparent station signs' is off,
|
||||||
* or if we are drawing a general text sign (STR_2806) */
|
* 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(
|
DrawFrameRect(
|
||||||
x, y, x + w, bottom, ss->color,
|
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]);
|
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,
|
/* if we didn't draw a rectangle, or if transparant building is on,
|
||||||
* draw the text in the color the rectangle would have */
|
* draw the text in the color the rectangle would have */
|
||||||
if ((
|
if ((
|
||||||
(_display_opt & DO_TRANS_BUILDINGS) ||
|
HASBIT(_transparent_opt, TO_BUILDINGS) ||
|
||||||
(_display_opt & DO_TRANS_SIGNS && ss->string != STR_2806)
|
(HASBIT(_transparent_opt, TO_SIGNS) && ss->string != STR_2806)
|
||||||
) && ss->width != 0) {
|
) && ss->width != 0) {
|
||||||
/* Real colors need the IS_PALETTE_COLOR flag
|
/* Real colors need the IS_PALETTE_COLOR flag
|
||||||
* otherwise colors from _string_colormap are assumed. */
|
* 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 image = wdts->image + base;
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
|
|
||||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
if (HASBIT(_transparent_opt, TO_BUILDINGS)) {
|
||||||
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
|
||||||
pal = PALETTE_TO_TRANSPARENT;
|
pal = PALETTE_TO_TRANSPARENT;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue