Exemple #1
0
 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();
 }
Exemple #2
0
 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();
     }
 }
Exemple #3
0
 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();
     }
 }
Exemple #4
0
            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);
                    }
                }
            }
Exemple #5
0
 public override void Save(GameXmlWriter writer, Element e)
 {
     writer.WriteStartElement("type");
     writer.WriteAttributeString("name", e.Name);
     SaveFields(writer, e);
     writer.WriteEndElement();
 }
Exemple #6
0
 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();
 }
Exemple #7
0
 public override void Save(GameXmlWriter writer, Element e)
 {
     writer.WriteStartElement("type");
     writer.WriteAttributeString("name", e.Name);
     SaveFields(writer, e);
     writer.WriteEndElement();
 }
Exemple #8
0
 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);
 }
Exemple #9
0
 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();
 }
Exemple #10
0
 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);
 }
Exemple #11
0
 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();
 }
Exemple #12
0
            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();
            }
Exemple #13
0
            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();
            }
Exemple #14
0
            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();
            }
Exemple #15
0
 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();
 }
Exemple #16
0
            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();
                }
            }
Exemple #17
0
            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();
            }
Exemple #18
0
            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();
            }
Exemple #19
0
 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);
 }
Exemple #20
0
            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();
            }
Exemple #21
0
 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);
 }
Exemple #22
0
 public override void StartSave(GameXmlWriter writer, Element e)
 {
     writer.WriteStartElement("game");
     writer.WriteAttributeString("name", e.Fields.GetString("gamename"));
     ObjectSaver.SaveFields(writer, e);
 }
Exemple #23
0
 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();
 }
Exemple #24
0
 public override void StartSave(GameXmlWriter writer, Element e)
 {
     writer.WriteStartElement("game");
     writer.WriteAttributeString("name", e.Fields.GetString("gamename"));
     ObjectSaver.SaveFields(writer, e);
 }
Exemple #25
0
 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();
 }
Exemple #26
0
 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();
 }
Exemple #27
0
            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();
                }
            }
Exemple #28
0
            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);
                    }
                }
            }
Exemple #29
0
            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();
            }
Exemple #30
0
        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();
        }
Exemple #31
0
 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);
 }
Exemple #32
0
 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();
 }
Exemple #33
0
 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);
 }
Exemple #34
0
        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());
        }