mirror of https://github.com/OpenTTD/OpenTTD
(svn r11720) -Codechange: [NewGRF] Add support for bit 30 of station tile layouts; forcing a sprite to always be opaque.
parent
e5e75bd8f8
commit
06d578d07e
|
@ -950,6 +950,10 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
|
||||||
ClrBit(dts->ground_pal, 15);
|
ClrBit(dts->ground_pal, 15);
|
||||||
SetBit(dts->ground_sprite, SPRITE_MODIFIER_USE_OFFSET);
|
SetBit(dts->ground_sprite, SPRITE_MODIFIER_USE_OFFSET);
|
||||||
}
|
}
|
||||||
|
if (HasBit(dts->ground_pal, 14)) {
|
||||||
|
ClrBit(dts->ground_pal, 14);
|
||||||
|
SetBit(dts->ground_sprite, SPRITE_MODIFIER_OPAQUE);
|
||||||
|
}
|
||||||
if (HasBit(dts->ground_sprite, 15)) {
|
if (HasBit(dts->ground_sprite, 15)) {
|
||||||
ClrBit(dts->ground_sprite, 15);
|
ClrBit(dts->ground_sprite, 15);
|
||||||
SetBit(dts->ground_sprite, PALETTE_MODIFIER_COLOR);
|
SetBit(dts->ground_sprite, PALETTE_MODIFIER_COLOR);
|
||||||
|
@ -981,6 +985,10 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
|
||||||
ClrBit(dtss->pal, 15);
|
ClrBit(dtss->pal, 15);
|
||||||
SetBit(dtss->image, SPRITE_MODIFIER_USE_OFFSET);
|
SetBit(dtss->image, SPRITE_MODIFIER_USE_OFFSET);
|
||||||
}
|
}
|
||||||
|
if (HasBit(dtss->pal, 14)) {
|
||||||
|
ClrBit(dtss->pal, 14);
|
||||||
|
SetBit(dtss->image, SPRITE_MODIFIER_OPAQUE);
|
||||||
|
}
|
||||||
|
|
||||||
if (HasBit(dtss->image, 15)) {
|
if (HasBit(dtss->image, 15)) {
|
||||||
ClrBit(dtss->image, 15);
|
ClrBit(dtss->image, 15);
|
||||||
|
|
|
@ -1811,7 +1811,7 @@ default_waypoint:
|
||||||
image += relocation;
|
image += relocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsTransparencySet(TO_BUILDINGS) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
|
if (!(!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
|
||||||
pal = _drawtile_track_palette;
|
pal = _drawtile_track_palette;
|
||||||
} else {
|
} else {
|
||||||
pal = dtss->pal;
|
pal = dtss->pal;
|
||||||
|
@ -1823,7 +1823,7 @@ default_waypoint:
|
||||||
ti->x + dtss->delta_x, ti->y + dtss->delta_y,
|
ti->x + dtss->delta_x, ti->y + dtss->delta_y,
|
||||||
dtss->size_x, dtss->size_y,
|
dtss->size_x, dtss->size_y,
|
||||||
dtss->size_z, ti->z + dtss->delta_z,
|
dtss->size_z, ti->z + dtss->delta_z,
|
||||||
IsTransparencySet(TO_BUILDINGS)
|
!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
|
AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
|
||||||
|
|
|
@ -2160,7 +2160,7 @@ static void DrawTile_Station(TileInfo *ti)
|
||||||
}
|
}
|
||||||
|
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
if (!IsTransparencySet(TO_BUILDINGS) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
|
if (!(!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
|
||||||
pal = palette;
|
pal = palette;
|
||||||
} else {
|
} else {
|
||||||
pal = dtss->pal;
|
pal = dtss->pal;
|
||||||
|
@ -2172,7 +2172,7 @@ static void DrawTile_Station(TileInfo *ti)
|
||||||
ti->x + dtss->delta_x, ti->y + dtss->delta_y,
|
ti->x + dtss->delta_x, ti->y + dtss->delta_y,
|
||||||
dtss->size_x, dtss->size_y,
|
dtss->size_x, dtss->size_y,
|
||||||
dtss->size_z, ti->z + dtss->delta_z,
|
dtss->size_z, ti->z + dtss->delta_z,
|
||||||
IsTransparencySet(TO_BUILDINGS)
|
!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, IsTransparencySet(TO_BUILDINGS));
|
AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, IsTransparencySet(TO_BUILDINGS));
|
||||||
|
|
|
@ -1415,6 +1415,7 @@ enum SpriteSetup {
|
||||||
TRANSPARENT_BIT = 31, ///< toggles transparency in the sprite
|
TRANSPARENT_BIT = 31, ///< toggles transparency in the sprite
|
||||||
RECOLOR_BIT = 30, ///< toggles recoloring in the sprite
|
RECOLOR_BIT = 30, ///< toggles recoloring in the sprite
|
||||||
OFFSET_BIT = 29,
|
OFFSET_BIT = 29,
|
||||||
|
OPAQUE_BIT = 28,
|
||||||
|
|
||||||
PALETTE_WIDTH = 24, ///< number of bits of the sprite containing the recolor palette
|
PALETTE_WIDTH = 24, ///< number of bits of the sprite containing the recolor palette
|
||||||
SPRITE_WIDTH = 24, ///< number of bits for the sprite number
|
SPRITE_WIDTH = 24, ///< number of bits for the sprite number
|
||||||
|
@ -1430,7 +1431,8 @@ enum SpriteSetup {
|
||||||
*/
|
*/
|
||||||
enum Modifiers {
|
enum Modifiers {
|
||||||
SPRITE_MODIFIER_USE_OFFSET = OFFSET_BIT,
|
SPRITE_MODIFIER_USE_OFFSET = OFFSET_BIT,
|
||||||
SPRITE_MODIFIER_OPAQUE = OFFSET_BIT,
|
/// Set when a sprite must not ever be displayed transparently
|
||||||
|
SPRITE_MODIFIER_OPAQUE = OPAQUE_BIT,
|
||||||
///when a sprite is to be displayed transparently, this bit needs to be set.
|
///when a sprite is to be displayed transparently, this bit needs to be set.
|
||||||
PALETTE_MODIFIER_TRANSPARENT = TRANSPARENT_BIT,
|
PALETTE_MODIFIER_TRANSPARENT = TRANSPARENT_BIT,
|
||||||
///this bit is set when a recoloring process is in action
|
///this bit is set when a recoloring process is in action
|
||||||
|
|
Loading…
Reference in New Issue