public void SaveAndLoad() { AlgorithmPalette p_original = AlgorithmPalette.DefaultPalette( AlgorithmPluginEnumerator.GetAllLoadedAlgorithms()); DungeonGenerator generator = TestHelpers.GetTestDungeonGenerator(); Assert.IsNotNull(p_original); AlgorithmPaletteSerializer serializer = new AlgorithmPaletteSerializer(); string paletteFile = System.IO.Path.GetTempFileName(); serializer.Save(p_original, paletteFile, FileMode.Create); Assert.IsTrue(File.Exists(paletteFile)); AlgorithmPalette p_loaded = serializer.Load(paletteFile); Assert.IsNotNull(p_loaded); Assert.AreEqual(p_original.Keys.Count, p_loaded.Keys.Count); Assert.IsTrue(Enumerable.SequenceEqual(p_original.Keys, p_loaded.Keys)); foreach (var k in p_original.Keys) { Assert.AreEqual(p_original[k].Info, p_loaded[k].Info); Assert.AreEqual(p_original[k].PaletteColor, p_loaded[k].PaletteColor); } File.Delete(paletteFile); }
public AlgorithmPalette Load(string path) { AlgorithmPalette loadedPalette = null; using (Stream fileStr = new FileStream(path, FileMode.Open)) using (Stream memoryStream = new MemoryStream()) { // Un ZIP using (ZipArchive arch = new ZipArchive(fileStr, ZipArchiveMode.Read)) { ZipArchiveEntry paletteEntry = arch.GetEntry("palette"); using (Stream paletteEntryStream = paletteEntry.Open()) { paletteEntryStream.CopyTo(memoryStream); } } memoryStream.Seek(0, SeekOrigin.Begin); // Serialize dungeon to XML DataContractSerializer xml = new DataContractSerializer(typeof(AlgorithmPalette)); var settings = new XmlReaderSettings(); using (var w = XmlReader.Create(memoryStream, settings)) { loadedPalette = xml.ReadObject(w) as AlgorithmPalette; } } return(loadedPalette); }
/// <summary> /// Exports this palette to a color palette loadable by Paint.NET /// </summary> public void ExportForPdn(AlgorithmPalette p, string path, FileMode mode) { using (StreamWriter writer = new StreamWriter(File.Open(Path.GetFullPath(path), mode))) { writer.WriteLine("; paint.net Palette file"); writer.WriteLine("; Generated by Dungen .NET Core"); writer.WriteLine(";"); foreach (var paletteItem in p) { writer.WriteLine(String.Format("; Color for palette item name {0} (type {1})", paletteItem.Key, paletteItem.Value.Info.Type.AssemblyQualifiedName)); writer.WriteLine(String.Format("{0:X}", paletteItem.Value.PaletteColor.ToArgb())); } } }
public void ExportForPdn() { AlgorithmPalette palette = AlgorithmPalette.DefaultPalette( AlgorithmPluginEnumerator.GetAllLoadedAlgorithms()); Assert.IsNotNull(palette); AlgorithmPaletteSerializer serializer = new AlgorithmPaletteSerializer(); string paletteFile = System.IO.Path.GetTempFileName(); serializer.ExportForPdn(palette, paletteFile, FileMode.Create); Assert.IsTrue(File.Exists(paletteFile)); // TODO actually inspect PDN template file }
public void Save(AlgorithmPalette p, string path, FileMode mode) { if (mode == FileMode.Truncate || mode == FileMode.Append) { throw new ArgumentException("Invalid file mode to save a Palette."); } if (null == p) { throw new ArgumentNullException("Must pass a palette"); } if (null == path || string.Empty == path) { throw new ArgumentException("Must pass valid path"); } using (Stream fileStr = new FileStream(path, mode)) using (Stream memoryStream = new MemoryStream()) { // Serialize dungeon to XML DataContractSerializer xml = new DataContractSerializer(typeof(AlgorithmPalette)); var settings = new XmlWriterSettings { #if DEBUG Indent = true, IndentChars = "\t", #endif }; using (var w = XmlWriter.Create(memoryStream, settings)) { xml.WriteObject(w, p); } // ZIP it up memoryStream.Seek(0, SeekOrigin.Begin); using (ZipArchive arch = new ZipArchive(fileStr, ZipArchiveMode.Create)) { ZipArchiveEntry paletteEntry = arch.CreateEntry("palette", CompressionLevel.Fastest); using (Stream paletteEntryStream = paletteEntry.Open()) { memoryStream.CopyTo(paletteEntryStream); } } } }
public static Dictionary <AlgorithmPaletteItem, bool[, ]> ParseMasks(Image maskSource, AlgorithmPalette palette) { Dictionary <AlgorithmPaletteItem, bool[, ]> maskDictionary = new Dictionary <AlgorithmPaletteItem, bool[, ]>(); foreach (var paletteItem in palette.Values) { maskDictionary[paletteItem] = GetMask(maskSource, paletteItem.PaletteColor); } return(maskDictionary); }