import java.io.*;
import java.util.*;

public class MergeMap {
	public static void main( String[] args ) {
		try {
			System.out.println( "Opening Output File" );
			PrintWriter output = new PrintWriter( new FileWriter( "world.tiles" ) );

			System.out.println( "Creating space for new Array Lists" );
			ArrayList[][] mapInfo = new ArrayList[ 10 ][ 10 ]; 
			for ( int n = 0; n < 10; n++ ) {
				for ( int o = 0; o < 10; o++ ) {
					mapInfo[ n ][ o ] = new ArrayList();
				}
			} 

			// Loop over the map files
			for ( int i = 0; i < 10; i++ ) {
				for ( int j = 0; j < 10; j++ ) {
					String fileName = "";
					fileName += String.valueOf( i );
					fileName += "-";
					fileName += String.valueOf( j );
					fileName += ".txt";

					System.out.println( "Opening file " + fileName );
					// Read in the lines from each file
					BufferedReader input = new BufferedReader( new FileReader( fileName ) );

					String line = input.readLine();
					while ( line != null ) {
						mapInfo[ i ][ j ].add( line );
						line = input.readLine();
					}

					input.close();
					System.out.println( "Closing file " + fileName );
				}	
			}

			// 48 lines per file
			System.out.println( "Writing out world size" );
			output.print( "160 480\n" );

			System.out.println( "Beginning to write out file" );
			for ( int k = 0; k < 10; k++ ) {
				System.out.println( "Outputting row " + k );
				for ( int l = 0; l < 48; l++ ) {
					for ( int m = 0; m < 10; m++ ) {
						String aLine = ( String ) mapInfo[ k ][ m ].get( l );
						output.print( aLine );
					}
					output.print( "\n" );
				}
			} 

			output.close();	
		} catch ( Exception e ) {
			System.err.println( "Error in map merger!" );
			e.printStackTrace();
		}
	}
}


