protected void Save(bool chooseName) { if (fileName == null) { chooseName = true; } if (level == null) { return; } if (chooseName) { fileChooser.Title = "Select file to save Level"; fileChooser.Action = Gtk.FileChooserAction.Save; fileChooser.SetCurrentFolder(Settings.Instance.LastDirectoryName); fileChooser.Filter = fileChooser.Filters[(level.isWorldmap)?2:1]; int result = fileChooser.Run(); fileChooser.Hide(); if (result != (int)Gtk.ResponseType.Ok) { return; } Settings.Instance.LastDirectoryName = fileChooser.CurrentFolder; Settings.Instance.addToRecentDocuments(fileChooser.Filename); Settings.Instance.Save(); UpdateRecentDocuments(); fileName = fileChooser.Filename; } QACheck.ReplaceDeprecatedTiles(level); try { serializer.Write(fileName, level); } catch (Exception e) { ErrorDialog.Exception("Couldn't save level", e); } UndoManager.MarkAsSaved(); UpdateTitlebar(); }
public void CustomLispWrite(Writer Writer) { if (SortObjectTags) { var attributes = new List <Tuple <Type, SupertuxObjectAttribute> >(); foreach (Type type in GetType().Assembly.GetTypes()) { var attr = (SupertuxObjectAttribute)Attribute.GetCustomAttribute(type, typeof(SupertuxObjectAttribute)); if (attr != null) { attributes.Add(Tuple.Create(type, attr)); } } attributes.Sort((lhs, rhs) => lhs.Item2.Name.CompareTo(rhs.Item2.Name)); foreach (var attr in attributes) { LispSerializer serializer = new LispSerializer(attr.Item1); foreach (var obj in GetObjects(attr.Item1)) { serializer.Write(Writer, attr.Item2.Name, obj); } } } else { foreach (object obj in GetObjects()) { Type type = obj.GetType(); SupertuxObjectAttribute objectAttribute = (SupertuxObjectAttribute) Attribute.GetCustomAttribute(type, typeof(SupertuxObjectAttribute)); if (objectAttribute == null) { continue; } string name = objectAttribute.Name; LispSerializer serializer = new LispSerializer(type); serializer.Write(Writer, name, obj); } } }
public static void ResaveLevel(string inFileName, string outFileName) { Console.WriteLine($"Datadir: {Settings.Instance.SupertuxData}"); LispSerializer serializer = new LispSerializer(typeof(Level)); Console.WriteLine($"loading {inFileName}"); Level level = (Level)serializer.Read(inFileName); if (level.Version < 2) { throw new Exception("Couldn't load level: Old Level Format not supported\n" + "Supertux-Editor does not support Supertux-0.1.x levels"); } else { Console.WriteLine($"saving {outFileName}"); serializer.Write(outFileName, level); } }
public void CustomLispWrite(Writer Writer) { Type[] types = this.GetType().Assembly.GetTypes(); Array.Sort(types, CompareTypeNames); foreach (Type type in types) { SupertuxObjectAttribute objectAttribute = (SupertuxObjectAttribute) Attribute.GetCustomAttribute(type, typeof(SupertuxObjectAttribute)); if (objectAttribute == null) { continue; } string name = objectAttribute.Name; LispSerializer serializer = new LispSerializer(type); foreach (object Object in GetObjects(type)) { serializer.Write(Writer, name, Object); } } }