static void Main(string[] args) { parameters = new Parameters(args); //print error codes if (parameters.ErrorCode != 0) { switch (parameters.ErrorCode) { case 1: Console.WriteLine("Error: Invalid program arguments."); break; case 2: Console.WriteLine("Error: Row count has to be positive."); break; case 3: Console.WriteLine("Error: Column count has to be positive."); break; case 4: Console.WriteLine("Error: level count has to be positive."); break; case 5: Console.WriteLine("Error: Output image would be too tall: reduce number of rows or tile size."); break; case 6: Console.WriteLine("Error: Output image would be too wide: reduce number of columns or tile size."); break; case 7: Console.WriteLine("Error: Too many subdivision levels: reduce level count or increase tile size."); break; case 8: Console.WriteLine("Error: Invalid palette id specified."); break; } return; } //if -h is given as a program argument if (parameters.DisplayHelp) { PrintHelp(); return; } //actual program starts here random = new Random(parameters.Seed); tileset = new Tileset(parameters.TileSize, parameters.DivisionLevels, Palette.PaletteList[parameters.PaletteID]); int canvasWidth = (parameters.ColumnCount) * parameters.TileSize; int canvasHeight = (parameters.RowCount) * parameters.TileSize; if (!parameters.Borderless) { canvasWidth += parameters.TileSize; canvasHeight += parameters.TileSize; } double[,] noise = null; //block matrix for the tiles Tile[,] tileMatrix; if (parameters.Perlin) { noise = NoiseMap.GenerateNoiseMap(random, canvasWidth / 10, canvasHeight / 10, 2d, 1d, 3); tileMatrix = CreatePerlinTileMatrix(noise); } else { tileMatrix = CreatePseudorandomTileMatrix(); } GenerateImage(canvasWidth, canvasHeight, tileMatrix); //debug if (parameters.Debug) { if (parameters.Perlin) { GenerateNoiseImage(noise); } tileset.GenerateDebugImage(); } }