# HG changeset patch # User rubidium # Date 2007-05-26 07:58:49 # Node ID f1b39d102e5e525c52b2d5254522a25fd7457ab5 # Parent d17d3335cbea5b388c12a9a22e30fe4cdac1632d (svn r9929) -Fix [FS#803]: fix several drawing issues. diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -226,6 +226,10 @@ int32 CmdRemoveRoad(TileIndex tile, uint 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 @@ int32 CmdBuildRoad(TileIndex tile, uint3 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 @@ void DrawTramCatenary(TileInfo *ti, Road } 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 @@ static void DrawTile_Road(TileInfo *ti) } 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; }