Пример #1
0
        public static void preReadProvinces(MyTexture image)
        {
            ProvinceNameGenerator nameGenerator = new ProvinceNameGenerator();
            Color currentProvinceColor          = image.GetPixel(0, 0);
            int   provinceCounter = 0;

            for (int j = 0; j < image.getHeight(); j++) // circle by province
            {
                for (int i = 0; i < image.getWidth(); i++)
                {
                    if (currentProvinceColor != image.GetPixel(i, j)
                        //&& !blockedProvinces.Contains(currentProvinceColor)
                        && !isProvinceCreated(currentProvinceColor))
                    {
                        allProvinces.Add(new Province(nameGenerator.generateProvinceName(), provinceCounter, currentProvinceColor, Product.getRandomResource(false)));
                        provinceCounter++;
                    }
                    currentProvinceColor = image.GetPixel(i, j);
                    //game.updateStatus("Reading provinces.. x = " + i + " y = " + j);
                }
            }
        }
Пример #2
0
        ////cut by random
        //seaProvince = FindProvince(mapTexture.getRandomPixel());
        //if (!res.Contains(seaProvince))
        //    res.Add(seaProvince);

        //if (Rand.Get.Next(3) == 1)
        //{
        //    seaProvince = FindProvince(mapTexture.getRandomPixel());
        //    if (!res.Contains(seaProvince))
        //        res.Add(seaProvince);
        //    if (Rand.Get.Next(20) == 1)
        //    {
        //        seaProvince = FindProvince(mapTexture.getRandomPixel());
        //        if (!res.Contains(seaProvince))
        //            res.Add(seaProvince);
        //    }
        //}

        public static void CreateProvinces(MyTexture mapTexture, bool useProvinceColors)
        {
            ProvinceNameGenerator nameGenerator = new ProvinceNameGenerator();

            if (!useProvinceColors)
            {
                var uniqueColors = mapTexture.AllUniqueColors2();
                int counter      = 0;
                int lakechance   = 20;//
                foreach (var item in uniqueColors)
                {
                    if (!item.Value && Rand.Get.Next(lakechance) != 0)
                    {
                        allLandProvinces.Add(new Province(nameGenerator.generateProvinceName(), counter, item.Key, Product.getRandomResource(false)));
                    }
                    //else
                    //    allSeaProvinces.Add(new SeaProvince("", counter, item.Key));
                    counter++;
                }
            }
            else
            { // Victoria 2 format
                var uniqueColors = mapTexture.AllUniqueColors();

                for (int counter = 0; counter < uniqueColors.Count; counter++)
                {
                    var color = uniqueColors[counter];
                    if (!(color.g + color.b >= 200f / 255f + 200f / 255f && color.r < 96f / 255f))
                    {
                        //if (color.g + color.b + color.r > 492f / 255f)

                        allLandProvinces.Add(new Province(nameGenerator.generateProvinceName(), counter, color, Product.getRandomResource(false)));
                    }
                }
            }
        }
Пример #3
0
    void makeMap()
    {
        ProvinceNameGenerator nameGenerator = new ProvinceNameGenerator();

        mapObject = GameObject.Find("MapObject");

        Color currentProvinceColor = mapImage.GetPixel(0, 0);
        Color currentColor, lastColor, lastprovinceColor = mapImage.GetPixel(0, 0); //, stripeColor;
        int   provinceCounter = 0;

        for (int j = 0; j < mapImage.height; j++) // cicle by province
        {
            for (int i = 0; i < mapImage.width; i++)
            {
                currentProvinceColor = mapImage.GetPixel(i, j);
                if ((lastprovinceColor != currentProvinceColor) && !Province.isProvinceCreated(currentProvinceColor))
                { // fill up province's mesh
                    // making mesh from texture
                    int stripeLenght = 0;
                    lastColor = Color.black.setAlphaToZero(); // unexisting color

                    for (int ypos = 0; ypos < mapImage.height; ypos++)
                    {
                        lastColor = Color.black.setAlphaToZero(); // unexisting color
                        for (int xpos = 0; xpos < mapImage.width; xpos++)
                        {
                            currentColor = mapImage.GetPixel(xpos, ypos);
                            if (currentColor == currentProvinceColor)
                            {
                                stripeLenght++;
                            }
                            else //place for trangle making
                            {
                                if (lastColor == currentProvinceColor)
                                {
                                    makePolygonalStripe((xpos - stripeLenght) * cellMuliplier, ypos * cellMuliplier, xpos * cellMuliplier, (ypos + 1) * cellMuliplier,
                                                        (xpos - stripeLenght), ypos, xpos, (ypos + 1)); //should form 2 triangles
                                    //makePolygonalStripe((xpos - stripeLenght), ypos, xpos, (ypos + 1)); //should form 2 triangles
                                    stripeLenght = 0;
                                }
                            }
                            lastColor = currentColor;
                        }
                        if (stripeLenght != 0)
                        {
                            if (lastColor == currentProvinceColor)
                            {
                                makePolygonalStripe((mapImage.width - stripeLenght) * cellMuliplier, ypos * cellMuliplier, (mapImage.width) * cellMuliplier, (ypos + 1) * cellMuliplier,
                                                    (mapImage.width - stripeLenght), ypos, (mapImage.width), (ypos + 1)); //should form 2 triangles
                                //makePolygonalStripe((mapImage.width - stripeLenght), ypos, (mapImage.width), (ypos + 1)); //should form 2 triangles
                                stripeLenght = 0;
                            }
                        }
                        stripeLenght = 0;
                    }
                    //finished all map search for currentProvince
                    makeProvince(provinceCounter, currentProvinceColor, nameGenerator.generateProvinceName());
                    provinceCounter++;
                }
                lastprovinceColor = currentProvinceColor;
            }
        }
    }