public void GetTerrains(BitmapDto model)
        {
            var heightMap = new Bitmap(model.Path);

            TerrainHelper.SetTerrains(BitmapToPixelArray(heightMap));

            var terrainHelper = new TerrainHelper();

            var terrains = terrainHelper.GetAllTerrains()
                           .Select(t => new TerrainDto()
            {
                Type             = t.GetType().Name,
                UpperHeightBound = t.UpperBound
            });

            Clients.All.OnGetTerrainsResponse(terrains);
        }
        static void GetTerrains(BitmapDto model)
        {
            var url   = ConfigurationManager.AppSettings["SettlementSimulationUrl"];
            var conn  = new HubConnection(url);
            var proxy = conn.CreateHubProxy("notificationHub");

            try
            {
                conn.Start().Wait();
                proxy.On <TerrainDto[]>("OnGetTerrainsResponse", response =>
                {
                    Console.WriteLine("\nAll terrains:");
                    response.ToList().ForEach(Console.WriteLine);
                });
                proxy.Invoke("GetTerrains", model);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        static void Main()
        {
            var heightMap = new BitmapDto()
            {
                Path = @"C:\Users\adams\Desktop\SS.Data\hm5.png"
            };

            GetSupportedBuildings();
            Thread.Sleep(500);
            GetSupportedRoads();
            Thread.Sleep(500);
            GetTerrains(heightMap);
            Thread.Sleep(1500);

            RunSimulation(new RunSimulationRequest()
            {
                MaxIterations  = 600,
                BreakpointStep = 1,
                HeightMap      = heightMap
            });

            Console.WriteLine("\n\tRunning simulation...");
            Console.ReadLine();
        }