internal static void PerformActionOnLayout(string FileLocation, Action <JObject> ActionToPerform) { using (FileStream ZipFileStream = new FileStream(FileLocation, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) using (ZipArchive Archive = new ZipArchive(ZipFileStream, ZipArchiveMode.Update)) { JObject LayoutObject; using (StreamReader Reader = new StreamReader(Archive.GetEntry(ArchiveFileLocations.Layout).Open(), System.Text.Encoding.Unicode)) using (JsonTextReader JsonReader = new JsonTextReader(new StringReader(Reader.ReadToEnd()))) { JsonReader.FloatParseHandling = FloatParseHandling.Decimal; LayoutObject = JObject.Load(JsonReader); ActionToPerform(LayoutObject); } Archive.GetEntry(ArchiveFileLocations.Layout).Delete(); System.Text.Encoding UnicodeWithoutBom = new System.Text.UnicodeEncoding(false, false); byte[] LayoutByteArray = UnicodeWithoutBom.GetBytes(LayoutObject.ToString()); using (MemoryStream Stream = new MemoryStream(LayoutByteArray)) using (Stream Writer = Archive.CreateEntry(ArchiveFileLocations.Layout).Open()) Stream.CopyTo(Writer); Archive.GetEntry(ArchiveFileLocations.SecurityBindings)?.Delete(); } }
public void Connect(LayoutObject obj) { if (obj != null) { if (BigBoss.Debug.logging(Logs.LevelGen)) { BigBoss.Debug.w(Logs.LevelGen, "Connecting " + ToString() + " to " + obj.ToString()); } _connectedTo.Add(obj); obj._connectedTo.Add(this); } }