(svn r9929) -Fix [FS#803]: fix several drawing issues.
authorrubidium
Sat, 26 May 2007 07:58:49 +0000
changeset 7193 e0cdd5c824dd
parent 7192 51486fdadd13
child 7194 b9f7550dcf17
(svn r9929) -Fix [FS#803]: fix several drawing issues.
src/road_cmd.cpp
--- a/src/road_cmd.cpp	Sat May 26 07:47:52 2007 +0000
+++ b/src/road_cmd.cpp	Sat May 26 07:58:49 2007 +0000
@@ -226,6 +226,10 @@
 				return CMD_ERROR;
 			}
 
+			/* Don't allow road to be removed from the crossing when there is tram;
+			 * we can't draw the crossing without trambits ;) */
+			if (rt == ROADTYPE_ROAD && HASBIT(GetRoadTypes(tile), ROADTYPE_TRAM)) return CMD_ERROR;
+
 			if (flags & DC_EXEC) {
 				if (rt == ROADTYPE_ROAD) {
 					ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
@@ -405,10 +409,11 @@
 
 			if (flags & DC_EXEC) {
 				YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile)));
-				MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt), p2);
+				/* Always add road to the roadtypes (can't draw without it) */
+				MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2);
 				MarkTileDirtyByTile(tile);
 			}
-			return _price.build_road * 2;
+			return _price.build_road * (rt == ROADTYPE_ROAD ? 2 : 4);
 		}
 
 		case MP_STATION:
@@ -847,7 +852,7 @@
 	}
 
 	AddSortableSpriteToDraw(back,  pal, ti->x, ti->y, 16, 16, 0x20, ti->z);
-	AddSortableSpriteToDraw(front, pal, ti->x, ti->y, 16, 16, 0, ti->z);
+	AddSortableSpriteToDraw(front, pal, ti->x, ti->y, 16, 16, 0x20, ti->z);
 }
 
 /**
@@ -955,6 +960,10 @@
 			}
 
 			DrawGroundSprite(image, pal);
+			if (HASBIT(GetRoadTypes(ti->tile), ROADTYPE_TRAM)) {
+				DrawGroundSprite(SPR_TRAMWAY_OVERLAY + (GetCrossingRoadAxis(ti->tile) ^ 1), pal);
+				DrawTramCatenary(ti, GetCrossingRoadBits(ti->tile));
+			}
 			if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
 			break;
 		}