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