Changeset - r6663:084fc9bc1095
[Not reviewed]
master
0 1 0
rubidium - 17 years ago 2007-05-20 22:43:26
rubidium@openttd.org
(svn r9894) -Fix (r9892): catenary was drawn on road bridges ;)
1 file changed with 14 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -206,17 +206,18 @@ int32 CmdBuildBridge(TileIndex end_tile,
 

	
 
	if (p1 >= MapSize()) return CMD_ERROR;
 

	
 
	/* type of bridge */
 
	if (HASBIT(p2, 15)) {
 
		railtype = INVALID_RAILTYPE; // road bridge
 
		roadtypes = (RoadTypes)GB(p2, 8, 2);
 
		if (roadtypes > ROADTYPES_ALL || roadtypes == ROADTYPES_NONE) return CMD_ERROR;
 
		roadtypes = (RoadTypes)GB(p2, 8, 3);
 
		if (!AreValidRoadTypes(roadtypes)) return CMD_ERROR;
 
	} else {
 
		if (!ValParamRailtype(GB(p2, 8, 8))) return CMD_ERROR;
 
		railtype = (RailType)GB(p2, 8, 8);
 
		roadtypes = ROADTYPES_NONE;
 
	}
 

	
 
	x = TileX(end_tile);
 
	y = TileY(end_tile);
 
	sx = TileX(p1);
 
	sy = TileY(p1);
 
@@ -459,16 +460,15 @@ int32 CmdBuildTunnel(TileIndex start_til
 
	uint start_z;
 
	uint end_z;
 
	int32 cost;
 
	int32 ret;
 

	
 
	_build_tunnel_endtile = 0;
 

	
 
	if (HASBIT(p1, 9)) {
 
	if (!HASBIT(p1, 9)) {
 
		if (!ValParamRailtype(p1)) return CMD_ERROR;
 
	} else if (GB(p1, 0, 4) > ROADTYPES_ALL || GB(p1, 0, 4) == ROADTYPES_NONE) {
 
	} else if (!AreValidRoadTypes((RoadTypes)GB(p1, 0, 3))) {
 
		return CMD_ERROR;
 
	}
 

	
 
	start_tileh = GetTileSlope(start_tile, &start_z);
 

	
 
	switch (start_tileh) {
 
@@ -524,14 +524,14 @@ int32 CmdBuildTunnel(TileIndex start_til
 
		if (GB(p1, 9, 1) == TRANSPORT_RAIL) {
 
			MakeRailTunnel(start_tile, _current_player, direction,                 (RailType)GB(p1, 0, 4));
 
			MakeRailTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4));
 
			UpdateSignalsOnSegment(start_tile, direction);
 
			YapfNotifyTrackLayoutChange(start_tile, AxisToTrack(DiagDirToAxis(direction)));
 
		} else {
 
			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 4));
 
			MakeRoadTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 4));
 
			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 3));
 
			MakeRoadTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3));
 
		}
 
	}
 

	
 
	return cost;
 
}
 

	
 
@@ -884,15 +884,17 @@ static void DrawTile_TunnelBridge(TileIn
 
		}
 

	
 
		if (HasTunnelSnowOrDesert(ti->tile)) image += 32;
 

	
 
		image += GetTunnelDirection(ti->tile) * 2;
 
		DrawGroundSprite(image, PAL_NONE);
 
		if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
 
		if (GetTunnelTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
 
			DrawCatenary(ti);
 
		}
 

	
 
		AddSortableSpriteToDraw(image+1, PAL_NONE, ti->x + TILE_SIZE - 1, ti->y + TILE_SIZE - 1, 1, 1, 8, (byte)ti->z);
 
		AddSortableSpriteToDraw(image + 1, PAL_NONE, ti->x + TILE_SIZE - 1, ti->y + TILE_SIZE - 1, 1, 1, 8, (byte)ti->z);
 
		DrawBridgeMiddle(ti);
 
	} else if (IsBridge(ti->tile)) { // XXX is this necessary?
 
		const PalSpriteID *psid;
 
		int base_offset;
 
		bool ice = HasBridgeSnowOrDesert(ti->tile);
 

	
 
@@ -922,13 +924,15 @@ static void DrawTile_TunnelBridge(TileIn
 
		if (!ice) {
 
			DrawClearLandTile(ti, 3);
 
		} else {
 
			DrawGroundSprite(SPR_FLAT_SNOWY_TILE + _tileh_to_sprite[ti->tileh], PAL_NONE);
 
		}
 

	
 
		if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
 
		if (GetBridgeTransportType(ti->tile) == TRANSPORT_RAIL && GetRailType(ti->tile) == RAILTYPE_ELECTRIC) {
 
			DrawCatenary(ti);
 
		}
 

	
 
		image = psid->sprite;
 

	
 
		/* draw ramp */
 
		if (HASBIT(_transparent_opt, TO_BRIDGES)) {
 
			SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
0 comments (0 inline, 0 general)