Board.Board.getColor C# (CSharp) Method

getColor() private method

private getColor ( int x, int y ) : System.Color
x int
y int
return System.Color
        private Color getColor(int x, int y)
        {
            int[] map = this.pass ? this.nowmap : this.basemap;
            int block = (map == null) ? 0 : map[y * 32 + x];
            if (block == 0)
                return Color.White;
            if (block == 1)
                return Color.Gainsboro;

            double r, g, b;
            Random rand = new Random(block);
            int h = rand.Next(360 + 1);
            int s = 65 - rand.Next(20 + 1);
            int l = 75 - rand.Next(20 + 1);

            double tmp = ((l < 50) ? l : (100 - l)) * (s * 0.01);
            double max = 2.55 * (l + tmp);
            double min = 2.55 * (l - tmp);

            tmp = (max - min) / 60.0;
            if (h < 60)
            {
                r = max;
                g = h * tmp + min;
                b = min;
            }
            else if (h < 120)
            {
                r = (120 - h) * tmp + min;
                g = max;
                b = min;
            }
            else if (h < 180)
            {
                r = min;
                g = max;
                b = (h - 120) * tmp + min;
            }
            else if (h < 240)
            {
                r = min;
                g = (240 - h) * tmp + min;
                b = max;
            }
            else if (h < 300)
            {
                r = (h - 240) * tmp + min;
                g = min;
                b = max;
            }
            else
            {
                r = max;
                g = min;
                b = (360 - h) * tmp + min;
            }

            return Color.FromArgb((int)r, (int)g, (int)b);
        }