Ejemplo n.º 1
0
        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();
            }
        }