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); } } }
////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))); } } } }
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; } } }