public bool RemoveAllIslands(Action <string> reportProgress) { bool layersFixed = false; reportProgress?.Invoke("Removing islands from " + islandLayers.Count + " layers...<br>"); PhotonLayer layer = null; foreach (var layerNo in islandLayers) { PhotonFileLayer fileLayer = layers[layerNo]; if (layer == null) { layer = fileLayer.GetLayer(); } else { fileLayer.GetUpdateLayer(layer); } reportProgress?.Invoke("Removing islands from layer " + layerNo); int removed = layer.RemoveIslands(); if (removed == 0) { reportProgress?.Invoke(", but nothing could be done."); } else { reportProgress?.Invoke(", " + removed + " islands removed"); fileLayer.SaveLayer(layer); Calculate(layerNo); if (layerNo < GetLayerCount() - 1) { Calculate(layerNo + 1); } layersFixed = true; } reportProgress?.Invoke("<br>"); } FindIslands(); return(layersFixed); }
public bool FixLayers(Action <string> reportProgress) { bool layersFixed = false; PhotonLayer layer = null; foreach (int layerNo in islandLayers) { reportProgress?.Invoke("Checking layer " + layerNo); // Unpack the layer data to the layer utility class PhotonFileLayer fileLayer = layers[layerNo]; if (layer == null) { layer = fileLayer.GetLayer(); } else { fileLayer.GetUpdateLayer(layer); } int changed = Fixit(reportProgress, layer, fileLayer, 10); if (changed == 0) { reportProgress?.Invoke(", but nothing could be done."); } else { fileLayer.SaveLayer(layer); Calculate(layerNo); if (layerNo < GetLayerCount() - 1) { Calculate(layerNo + 1); } layersFixed = true; } reportProgress?.Invoke("<br>"); } FindIslands(); return(layersFixed); }