rail_cmd.c
changeset 3645 86af43f87885
parent 3638 6e0b43d905d4
child 3657 2be38157182d
equal deleted inserted replaced
3644:45a307767dc1 3645:86af43f87885
  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 }