src/rail_cmd.cpp
changeset 10257 2c37b72eec95
parent 10236 50afe9dd466e
child 10260 c6ec6b3c1b18
--- a/src/rail_cmd.cpp	Sat Oct 18 17:20:31 2008 +0000
+++ b/src/rail_cmd.cpp	Sat Oct 18 17:21:56 2008 +0000
@@ -2014,10 +2014,14 @@
 				image += relocation;
 			}
 
-			if (!(!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)) && HasBit(image, PALETTE_MODIFIER_COLOR)) {
-				pal = _drawtile_track_palette;
+			if (HasBit(image, PALETTE_MODIFIER_TRANSPARENT) || HasBit(image, PALETTE_MODIFIER_COLOR)) {
+				if (dtss->image.pal != 0) {
+					pal = dtss->image.pal;
+				} else {
+					pal = _drawtile_track_palette;
+				}
 			} else {
-				pal = dtss->image.pal;
+				pal = PAL_NONE;
 			}
 
 			if ((byte)dtss->delta_z != 0x80) {
@@ -2029,7 +2033,8 @@
 					!HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS)
 				);
 			} else {
-				AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y);
+				/* For stations and original spritelayouts delta_x and delta_y are signed */
+				AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, !HasBit(image, SPRITE_MODIFIER_OPAQUE) && IsTransparencySet(TO_BUILDINGS));
 			}
 		}
 	}