public override void Save(GameXmlWriter writer, Element e) { writer.WriteStartElement("implied"); writer.WriteAttributeString("element", e.Fields[FieldDefinitions.Element]); writer.WriteAttributeString("property", e.Fields[FieldDefinitions.Property]); writer.WriteAttributeString("type", e.Fields[FieldDefinitions.Type]); writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element e) { // only save the delegate definition, not the individual implementations - they are just fields on objects if (!e.MetaFields[MetaFieldDefinitions.DelegateImplementation]) { writer.WriteStartElement("delegate"); writer.WriteAttributeString("name", e.Name); writer.WriteAttributeString("parameters", string.Join(", ", e.Fields[FieldDefinitions.ParamNames].ToArray())); writer.WriteAttributeString("type", e.Fields[FieldDefinitions.ReturnType]); writer.WriteEndElement(); } }
protected void SaveFields(GameXmlWriter writer, Element e) { // reverse Types list when saving as it's a Stack, and we want to // save types in the same order as they were loaded foreach (Element includedType in e.Fields.Types.Reverse()) { if (CanSaveTypeName(writer, includedType.Name, e)) { writer.WriteStartElement("inherit"); writer.WriteAttributeString("name", includedType.Name); writer.WriteEndElement(); } } IEnumerable <string> fieldNames = e.Fields.FieldNames; if (writer.Mode != SaveMode.Editor) { fieldNames = fieldNames.Union(e.Fields.FieldExtensionNames); } foreach (string attribute in fieldNames) { if (CanSaveAttribute(attribute, e)) { object value = e.Fields.Get(attribute); m_fieldSaver.Save(writer, e, attribute, value); } } }
public override void Save(GameXmlWriter writer, Element e) { writer.WriteStartElement("type"); writer.WriteAttributeString("name", e.Name); SaveFields(writer, e); writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element e) { writer.WriteStartElement("template"); writer.WriteAttributeString("name", e.Fields[FieldDefinitions.TemplateName]); writer.WriteString(e.Fields[FieldDefinitions.Text]); writer.WriteEndElement(); }
public override void StartSave(GameXmlWriter writer, Element e) { writer.WriteStartElement("exit"); if (writer.Mode == SaveMode.SavedGame || !e.Fields[FieldDefinitions.Anonymous]) { writer.WriteAttributeString("name", e.Name); } if (!string.IsNullOrEmpty(e.Fields[FieldDefinitions.Alias])) { writer.WriteAttributeString("alias", e.Fields[FieldDefinitions.Alias]); } if (e.Fields[FieldDefinitions.To] != null) { writer.WriteAttributeString("to", e.Fields[FieldDefinitions.To].Name); } ObjectSaver.SaveFields(writer, e); }
public override void Save(GameXmlWriter writer, Element e) { writer.WriteStartElement("function"); writer.WriteAttributeString("name", e.Name); if (e.Fields[FieldDefinitions.ParamNames] != null && e.Fields[FieldDefinitions.ParamNames].Count > 0) { writer.WriteAttributeString("parameters", string.Join(", ", e.Fields[FieldDefinitions.ParamNames].ToArray())); } if (!string.IsNullOrEmpty(e.Fields[FieldDefinitions.ReturnType])) { writer.WriteAttributeString("type", e.Fields[FieldDefinitions.ReturnType]); } if (e.Fields[FieldDefinitions.Script] != null) { writer.WriteString(GameSaver.SaveScript(writer, e.Fields[FieldDefinitions.Script], 0)); } writer.WriteEndElement(); }
public override void StartSave(GameXmlWriter writer, Element e) { writer.WriteStartElement("turnscript"); if (writer.Mode == SaveMode.SavedGame || !e.Fields[FieldDefinitions.Anonymous]) { writer.WriteAttributeString("name", e.Name); } ObjectSaver.SaveFields(writer, e); }
public void Save(GameXmlWriter writer, Element element, string attribute, object value) { writer.WriteStartElement(attribute); if (element == null || !GameSaver.IsImpliedType(element, attribute, "scriptdictionary")) { writer.WriteAttributeString("type", "scriptdictionary"); } QuestDictionary <IScript> dictionary = (QuestDictionary <IScript>)value; foreach (var item in dictionary) { writer.WriteStartElement("item"); writer.WriteAttributeString("key", item.Key); writer.WriteString(GameSaver.SaveScript(writer, item.Value, 0)); writer.WriteEndElement(); } writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element e) { string filename = e.Fields[FieldDefinitions.Src]; if (string.IsNullOrEmpty(filename)) { return; } writer.WriteStartElement("javascript"); writer.WriteAttributeString("src", filename); writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element e) { string filename = e.Fields[FieldDefinitions.Filename]; if (string.IsNullOrEmpty(filename)) { return; } writer.WriteStartElement("include"); writer.WriteAttributeString("ref", filename); writer.WriteEndElement(); }
protected void WriteAttribute(GameXmlWriter writer, Element element, string attribute, string type, string value) { if (!s_regex.IsMatch(attribute)) { // For attribute names with spaces or accented characters, we output // <attr name="my attribute" ... /> writer.WriteStartElement("attr"); writer.WriteAttributeString("name", attribute); } else { // For attribute names without spaces, we output // <myattribute ... /> writer.WriteStartElement(attribute); } if (element == null || !GameSaver.IsImpliedType(element, attribute, type) || value.Length == 0) { writer.WriteAttributeString("type", type); } writer.WriteString(value); writer.WriteEndElement(); }
public void StartSave(GameXmlWriter writer, Element e) { writer.WriteStartElement("walkthrough"); writer.WriteAttributeString("name", e.Name); QuestList <string> steps = e.Fields[FieldDefinitions.Steps]; if (steps != null && steps.Count > 0) { string result = string.Empty; string indent = Utility.GetIndentChars(writer.IndentLevel + 1, writer.IndentChars); foreach (string step in steps) { result += Environment.NewLine + indent + step; } result += Environment.NewLine; writer.WriteStartElement("steps"); writer.WriteAttributeString("type", GameSaver.Version <= WorldModelVersion.v530 ? "list" : "simplestringlist"); writer.WriteString(result); writer.WriteEndElement(); } }
public override void Save(GameXmlWriter writer, Element e) { writer.WriteStartElement("dynamictemplate"); writer.WriteAttributeString("name", e.Name); if (!GameSaver.m_worldModel.EditMode) { writer.WriteString(e.Fields[FieldDefinitions.Function].Save()); } else { writer.WriteString(e.Fields[FieldDefinitions.Text]); } writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element element, string attribute, object value) { writer.WriteStartElement(attribute); if (element == null || !GameSaver.IsImpliedType(element, attribute, "list")) { writer.WriteAttributeString("type", "list"); } QuestList <object> list = (QuestList <object>)value; foreach (var item in list) { FieldSaver.SaveValue(writer, "value", item); } writer.WriteEndElement(); }
public override void StartSave(GameXmlWriter writer, Element e) { if (e.Fields[FieldDefinitions.IsVerb]) { writer.WriteStartElement("verb"); } else { writer.WriteStartElement("command"); } if (writer.Mode == SaveMode.SavedGame || !e.Fields[FieldDefinitions.Anonymous]) { writer.WriteAttributeString("name", e.Name); } ObjectSaver.SaveFields(writer, e); }
public override void Save(GameXmlWriter writer, Element element, string attribute, object value) { writer.WriteStartElement(attribute); if (element == null || !GameSaver.IsImpliedType(element, attribute, TypeName)) { writer.WriteAttributeString("type", TypeName); } var dictionary = (QuestDictionary <T>)value; foreach (var item in dictionary) { writer.WriteStartElement("item"); writer.WriteStartElement("key"); writer.WriteString(item.Key); writer.WriteEndElement(); WriteXml(writer, item.Value); writer.WriteEndElement(); } writer.WriteEndElement(); }
public override void StartSave(GameXmlWriter writer, Element e) { writer.WriteStartElement("game"); writer.WriteAttributeString("name", e.Fields.GetString("gamename")); ObjectSaver.SaveFields(writer, e); }
public override void Save(GameXmlWriter writer, Element e) { string filename = e.Fields[FieldDefinitions.Src]; if (string.IsNullOrEmpty(filename)) return; writer.WriteStartElement("javascript"); writer.WriteAttributeString("src", filename); writer.WriteEndElement(); }
public override void Save(GameXmlWriter writer, Element e) { string filename = e.Fields[FieldDefinitions.Filename]; if (string.IsNullOrEmpty(filename)) return; writer.WriteStartElement("include"); writer.WriteAttributeString("ref", filename); writer.WriteEndElement(); }
public void StartSave(GameXmlWriter writer, Element e) { writer.WriteStartElement("walkthrough"); writer.WriteAttributeString("name", e.Name); QuestList<string> steps = e.Fields[FieldDefinitions.Steps]; if (steps != null && steps.Count > 0) { string result = string.Empty; string indent = Utility.GetIndentChars(writer.IndentLevel + 1, writer.IndentChars); foreach (string step in steps) { result += Environment.NewLine + indent + step; } result += Environment.NewLine; writer.WriteStartElement("steps"); writer.WriteAttributeString("type", GameSaver.Version <= WorldModelVersion.v530 ? "list" : "simplestringlist"); writer.WriteString(result); writer.WriteEndElement(); } }
protected void SaveFields(GameXmlWriter writer, Element e) { // reverse Types list when saving as it's a Stack, and we want to // save types in the same order as they were loaded foreach (Element includedType in e.Fields.Types.Reverse()) { if (CanSaveTypeName(writer, includedType.Name, e)) { writer.WriteStartElement("inherit"); writer.WriteAttributeString("name", includedType.Name); writer.WriteEndElement(); } } IEnumerable<string> fieldNames = e.Fields.FieldNames; if (writer.Mode != SaveMode.Editor) { fieldNames = fieldNames.Union(e.Fields.FieldExtensionNames); } foreach (string attribute in fieldNames) { if (CanSaveAttribute(attribute, e)) { object value = e.Fields.Get(attribute); m_fieldSaver.Save(writer, e, attribute, value); } } }
public string Save(SaveMode mode, bool? includeWalkthrough = null, string html = null) { m_mode = mode; GameXmlWriter.GameXmlWriterOptions options = null; if (includeWalkthrough.HasValue) { options = new GameXmlWriter.GameXmlWriterOptions { IncludeWalkthrough = includeWalkthrough.Value }; } GameXmlWriter writer = new GameXmlWriter(mode, options); UpdateImpliedTypesCache(); string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); writer.WriteComment(string.Format("Saved by Quest {0}", ver)); writer.WriteStartElement("asl"); if (mode == SaveMode.Editor) { m_worldModel.Version = WorldModelVersion.v550; m_worldModel.VersionString = "550"; } writer.WriteAttributeString("version", m_worldModel.VersionString); if (mode == SaveMode.SavedGame) { writer.WriteAttributeString("original", m_worldModel.Filename); m_worldModel.OutputLogger.Save(html); } foreach (ElementType t in Enum.GetValues(typeof(ElementType))) { if (m_elementsSavers.ContainsKey(t)) { // We have an IElementsSaver which saves all elements of a particular type at once m_elementsSavers[t].Save(writer, m_worldModel); } else { // Save the elements individually IElementSaver saver; if (m_elementSavers.TryGetValue(t, out saver)) { if (saver.AutoSave) { foreach (Element e in m_worldModel.Elements.GetElements(t).Where(e => CanSave(e))) { saver.Save(writer, e); } } } else { throw new Exception("ERROR: No ElementSaver for type " + t.ToString()); } } } writer.WriteEndElement(); writer.Close(); return writer.ToString(); }
public string Save(SaveMode mode, bool?includeWalkthrough = null, string html = null) { m_mode = mode; GameXmlWriter.GameXmlWriterOptions options = null; if (includeWalkthrough.HasValue) { options = new GameXmlWriter.GameXmlWriterOptions { IncludeWalkthrough = includeWalkthrough.Value }; } GameXmlWriter writer = new GameXmlWriter(mode, options); UpdateImpliedTypesCache(); string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); writer.WriteComment(string.Format("Saved by Quest {0}", ver)); writer.WriteStartElement("asl"); if (mode == SaveMode.Editor) { m_worldModel.Version = WorldModelVersion.v550; m_worldModel.VersionString = "550"; } writer.WriteAttributeString("version", m_worldModel.VersionString); if (mode == SaveMode.SavedGame) { writer.WriteAttributeString("original", m_worldModel.Filename); m_worldModel.OutputLogger.Save(html); } foreach (ElementType t in Enum.GetValues(typeof(ElementType))) { if (m_elementsSavers.ContainsKey(t)) { // We have an IElementsSaver which saves all elements of a particular type at once m_elementsSavers[t].Save(writer, m_worldModel); } else { // Save the elements individually IElementSaver saver; if (m_elementSavers.TryGetValue(t, out saver)) { if (saver.AutoSave) { foreach (Element e in m_worldModel.Elements.GetElements(t).Where(e => CanSave(e))) { saver.Save(writer, e); } } } else { throw new Exception("ERROR: No ElementSaver for type " + t.ToString()); } } } writer.WriteEndElement(); writer.Close(); return(writer.ToString()); }