public List <KeyValuePair <Item, Color> > TextureToFlowers(Texture2D texture, int size, ColorMatchMethod m) { int count = size * size; Texture2D internalImg = MapGraphicGenerator.Resize(texture, size, size); internalImg = MapGraphicGenerator.FlipTexture(internalImg); var colors = internalImg.GetPixels32(); var toRet = new List <KeyValuePair <Item, Color> >(); for (int i = 0; i < count; ++i) { Color32 currentCol = colors[i]; if (currentCol.a > 50) { var c = ItemColorSolver.GetClosest(currentCol, m); toRet.Add(new KeyValuePair <Item, Color>(c.Key, c.Value)); } else { toRet.Add(new KeyValuePair <Item, Color>(new Item(Item.NONE), new Color())); } } return(toRet); }
void generateAll() { Item[] itemLayer1 = Item.GetArray(field.Take(MapGrid.MapTileCount32x32 * Item.SIZE).ToArray()); Item[] itemLayer2 = Item.GetArray(field.Slice(MapGrid.MapTileCount32x32 * Item.SIZE, MapGrid.MapTileCount32x32 * Item.SIZE).ToArray()); // create templates for pushing bytes back layerTemplate1 = CloneItemArray(itemLayer1); layerTemplate2 = CloneItemArray(itemLayer2); fieldManager = new FieldItemManager(itemLayer1, itemLayer2); terrainLayer = new NHSE.Core.TerrainLayer(TerrainTile.GetArray(terrain), acre_plaza.Slice(0, AcreSizeAll)); buildings = new List <Building>(Building.GetArray(structure)); plazaX = BitConverter.ToUInt32(acre_plaza, AcreSizeAll + 4); plazaY = BitConverter.ToUInt32(acre_plaza, AcreSizeAll + 8); if (graphicGenerator != null) { graphicGenerator.ReleaseAllResources(); } graphicGenerator = new MapGraphicGenerator(fieldManager, terrainLayer, (ushort)plazaX, (ushort)plazaY, buildings.ToArray()); MapImage.texture = graphicGenerator.MapBackgroundImage; MapImage.color = Color.white; fetched = true; updateGrid(lastCursorX, lastCursorY); UnfetchedBlocker.gameObject.SetActive(false); AffectingMode.interactable = true; RefetchItemsButton.interactable = true; WriteButton.interactable = true; SaveButton.interactable = true; }