1076 static void DrawTrackFence_SE(const TileInfo *ti) |
1076 static void DrawTrackFence_SE(const TileInfo *ti) |
1077 { |
1077 { |
1078 uint32 image = 0x515; |
1078 uint32 image = 0x515; |
1079 if (ti->tileh != SLOPE_FLAT) image = (ti->tileh & SLOPE_S) ? 0x519 : 0x51B; |
1079 if (ti->tileh != SLOPE_FLAT) image = (ti->tileh & SLOPE_S) ? 0x519 : 0x51B; |
1080 AddSortableSpriteToDraw(image | _drawtile_track_palette, |
1080 AddSortableSpriteToDraw(image | _drawtile_track_palette, |
1081 ti->x, ti->y + 15, 16, 1, 4, ti->z); |
1081 ti->x, ti->y + TILE_SIZE - 1, 16, 1, 4, ti->z); |
1082 } |
1082 } |
1083 |
1083 |
1084 static void DrawTrackFence_NW_SE(const TileInfo *ti) |
1084 static void DrawTrackFence_NW_SE(const TileInfo *ti) |
1085 { |
1085 { |
1086 DrawTrackFence_NW(ti); |
1086 DrawTrackFence_NW(ti); |
1098 static void DrawTrackFence_SW(const TileInfo *ti) |
1098 static void DrawTrackFence_SW(const TileInfo *ti) |
1099 { |
1099 { |
1100 uint32 image = 0x516; |
1100 uint32 image = 0x516; |
1101 if (ti->tileh != SLOPE_FLAT) image = (ti->tileh & SLOPE_S) ? 0x51A : 0x51C; |
1101 if (ti->tileh != SLOPE_FLAT) image = (ti->tileh & SLOPE_S) ? 0x51A : 0x51C; |
1102 AddSortableSpriteToDraw(image | _drawtile_track_palette, |
1102 AddSortableSpriteToDraw(image | _drawtile_track_palette, |
1103 ti->x + 15, ti->y, 1, 16, 4, ti->z); |
1103 ti->x + TILE_SIZE - 1, ti->y, 1, 16, 4, ti->z); |
1104 } |
1104 } |
1105 |
1105 |
1106 static void DrawTrackFence_NE_SW(const TileInfo *ti) |
1106 static void DrawTrackFence_NE_SW(const TileInfo *ti) |
1107 { |
1107 { |
1108 DrawTrackFence_NE(ti); |
1108 DrawTrackFence_NE(ti); |
1110 } |
1110 } |
1111 |
1111 |
1112 static void DrawTrackFence_NS_1(const TileInfo *ti) |
1112 static void DrawTrackFence_NS_1(const TileInfo *ti) |
1113 { |
1113 { |
1114 int z = ti->z; |
1114 int z = ti->z; |
1115 if (ti->tileh & SLOPE_W) z += 8; |
1115 if (ti->tileh & SLOPE_W) z += TILE_HEIGHT; |
1116 AddSortableSpriteToDraw(0x517 | _drawtile_track_palette, |
1116 AddSortableSpriteToDraw(0x517 | _drawtile_track_palette, |
1117 ti->x + 8, ti->y + 8, 1, 1, 4, z); |
1117 ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); |
1118 } |
1118 } |
1119 |
1119 |
1120 static void DrawTrackFence_NS_2(const TileInfo *ti) |
1120 static void DrawTrackFence_NS_2(const TileInfo *ti) |
1121 { |
1121 { |
1122 int z = ti->z; |
1122 int z = ti->z; |
1123 if (ti->tileh & SLOPE_E) z += 8; |
1123 if (ti->tileh & SLOPE_E) z += TILE_HEIGHT; |
1124 AddSortableSpriteToDraw(0x517 | _drawtile_track_palette, |
1124 AddSortableSpriteToDraw(0x517 | _drawtile_track_palette, |
1125 ti->x + 8, ti->y + 8, 1, 1, 4, z); |
1125 ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); |
1126 } |
1126 } |
1127 |
1127 |
1128 static void DrawTrackFence_WE_1(const TileInfo *ti) |
1128 static void DrawTrackFence_WE_1(const TileInfo *ti) |
1129 { |
1129 { |
1130 int z = ti->z; |
1130 int z = ti->z; |
1131 if (ti->tileh & SLOPE_N) z += 8; |
1131 if (ti->tileh & SLOPE_N) z += TILE_HEIGHT; |
1132 AddSortableSpriteToDraw(0x518 | _drawtile_track_palette, |
1132 AddSortableSpriteToDraw(0x518 | _drawtile_track_palette, |
1133 ti->x + 8, ti->y + 8, 1, 1, 4, z); |
1133 ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); |
1134 } |
1134 } |
1135 |
1135 |
1136 static void DrawTrackFence_WE_2(const TileInfo *ti) |
1136 static void DrawTrackFence_WE_2(const TileInfo *ti) |
1137 { |
1137 { |
1138 int z = ti->z; |
1138 int z = ti->z; |
1139 if (ti->tileh & SLOPE_S) z += 8; |
1139 if (ti->tileh & SLOPE_S) z += TILE_HEIGHT; |
1140 AddSortableSpriteToDraw(0x518 | _drawtile_track_palette, |
1140 AddSortableSpriteToDraw(0x518 | _drawtile_track_palette, |
1141 ti->x + 8, ti->y + 8, 1, 1, 4, z); |
1141 ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, 4, z); |
1142 } |
1142 } |
1143 |
1143 |
1144 static void DetTrackDrawProc_Null(const TileInfo *ti) |
1144 static void DetTrackDrawProc_Null(const TileInfo *ti) |
1145 { |
1145 { |
1146 /* nothing should be here */ |
1146 /* nothing should be here */ |
1701 Slope tileh = ti->tileh; |
1701 Slope tileh = ti->tileh; |
1702 uint z = ti->z; |
1702 uint z = ti->z; |
1703 |
1703 |
1704 if (tileh == SLOPE_FLAT) return z; |
1704 if (tileh == SLOPE_FLAT) return z; |
1705 if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) { |
1705 if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) { |
1706 return z + 8; |
1706 return z + TILE_HEIGHT; |
1707 } else { |
1707 } else { |
1708 uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile)); |
1708 uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile)); |
1709 |
1709 |
1710 if (f != 0) { |
1710 if (f != 0) { |
1711 if (f < 15) return z + 8; // leveled foundation |
1711 if (f < 15) return z + TILE_HEIGHT; // leveled foundation |
1712 tileh = _inclined_tileh[f - 15]; // inclined foundation |
1712 tileh = _inclined_tileh[f - 15]; // inclined foundation |
1713 } |
1713 } |
1714 return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh); |
1714 return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh); |
1715 } |
1715 } |
1716 } |
1716 } |