File diff r26193:4bc7915a2156 → r26194:f7347205838e
src/tunnelbridge_cmd.cpp
Show inline comments
 
@@ -263,22 +263,26 @@ CommandCost CmdBuildBridge(DoCommandFlag
 

	
 
	RailType railtype = INVALID_RAILTYPE;
 
	RoadType roadtype = INVALID_ROADTYPE;
 
	ExpensesType expensestype = EXPENSES_CONSTRUCTION;
 

	
 
	if (!IsValidTile(tile_start)) return_cmd_error(STR_ERROR_BRIDGE_THROUGH_MAP_BORDER);
 

	
 
	/* type of bridge */
 
	switch (transport_type) {
 
		case TRANSPORT_ROAD:
 
			expensestype = EXPENSES_T_ROAD_CON;
 
			roadtype = (RoadType)road_rail_type;
 
			if (!ValParamRoadType(roadtype)) return CMD_ERROR;
 
			break;
 

	
 
		case TRANSPORT_RAIL:
 
			expensestype = EXPENSES_T_TRAIN_CON;
 
			railtype = (RailType)road_rail_type;
 
			if (!ValParamRailtype(railtype)) return CMD_ERROR;
 
			break;
 

	
 
		case TRANSPORT_WATER:
 
			expensestype = EXPENSES_T_SHIP_CON;
 
			break;
 

	
 
		default:
 
@@ -336,7 +340,7 @@ CommandCost CmdBuildBridge(DoCommandFlag
 
	if (transport_type == TRANSPORT_WATER && (tileh_start == SLOPE_FLAT || tileh_end == SLOPE_FLAT)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
 
	if (z_start != z_end) return_cmd_error(STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT);
 

	
 
	CommandCost cost(EXPENSES_CONSTRUCTION);
 
	CommandCost cost(expensestype);
 
	Owner owner;
 
	bool is_new_owner;
 
	RoadType road_rt = INVALID_ROADTYPE;
 
@@ -414,6 +418,7 @@ CommandCost CmdBuildBridge(DoCommandFlag
 
		CommandCost ret = Command<CMD_LANDSCAPE_CLEAR>::Do(flags, tile_start);
 
		if (ret.Failed()) return ret;
 
		cost = ret;
 
		cost.expense_type = expensestype;
 

	
 
		if (terraform_cost_north.Failed() || (terraform_cost_north.GetCost() != 0 && !allow_on_slopes)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
 
		cost.AddCost(terraform_cost_north);
 
@@ -627,14 +632,17 @@ CommandCost CmdBuildTunnel(DoCommandFlag
 

	
 
	RailType railtype = INVALID_RAILTYPE;
 
	RoadType roadtype = INVALID_ROADTYPE;
 
	ExpensesType expensestype = EXPENSES_CONSTRUCTION;
 
	_build_tunnel_endtile = 0;
 
	switch (transport_type) {
 
		case TRANSPORT_RAIL:
 
			expensestype = EXPENSES_T_TRAIN_CON;
 
			railtype = (RailType)road_rail_type;
 
			if (!ValParamRailtype(railtype)) return CMD_ERROR;
 
			break;
 

	
 
		case TRANSPORT_ROAD:
 
			expensestype = EXPENSES_T_ROAD_CON;
 
			roadtype = (RoadType)road_rail_type;
 
			if (!ValParamRoadType(roadtype)) return CMD_ERROR;
 
			break;
 
@@ -687,7 +695,7 @@ CommandCost CmdBuildTunnel(DoCommandFlag
 
	/* Number of tiles at which the cost increase coefficient per tile is halved */
 
	int tiles_bump = 25;
 

	
 
	CommandCost cost(EXPENSES_CONSTRUCTION);
 
	CommandCost cost(expensestype);
 
	Slope end_tileh;
 
	for (;;) {
 
		end_tile += delta;
 
@@ -913,8 +921,7 @@ static CommandCost DoClearTunnel(TileInd
 
			DoClearSquare(endtile);
 
		}
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost);
 
	return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost);
 
}
 

	
 

	
 
@@ -1013,7 +1020,7 @@ static CommandCost DoClearBridge(TileInd
 
		}
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost);
 
	return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost);
 
}
 

	
 
/**