Example #1
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                IScript script      = (IScript)value;
                string  savedScript = script.Save(new Context());

                if (savedScript.Trim().Length > 0)
                {
                    // TO DO: Will need to extract variables for parameters to a "useanything" script in the same way

                    if (element.Type == ObjectType.Command)
                    {
                        List <string> variables        = GetCommandPatternVariableNames(element);
                        string        commandVariables = string.Empty;

                        foreach (string variable in variables)
                        {
                            commandVariables += string.Format("var {0} = parameters['{0}'];\n", variable);
                        }

                        savedScript = commandVariables + savedScript;
                        base.WriteAttribute(writer, element, attribute, string.Format("function(parameters) {{ {0} }}", savedScript), isFinal);
                    }
                    else
                    {
                        string parameters = string.Empty;
                        if (attribute.StartsWith("changed"))
                        {
                            parameters = "oldvalue";
                        }
                        base.WriteAttribute(writer, element, attribute, string.Format("function({1}) {{ {0} }}", savedScript, parameters), isFinal);
                    }
                }
            }
Example #2
0
        public string Save()
        {
            int total = m_elements.Count;
            int done  = 0;

            GameWriter writer = new GameWriter();

            foreach (Element e in m_elements.Values)
            {
                if (Progress != null)
                {
                    Progress(this, new ProgressEventArgs {
                        PercentComplete = (int)(((double)done / total) * 100)
                    });
                }

                IElementSaver saver;
                if (m_elementSavers.TryGetValue(e.ElemType, out saver))
                {
                    saver.Save(e, writer);
                }
                else
                {
                    throw new Exception("ERROR: No ElementSaver for type " + e.ElemType.ToString());
                }
                done++;
            }
            return(writer.Save());
        }
Example #3
0
        public void Save(Element e, GameWriter writer)
        {
            string expression = e.Fields[FieldDefinitions.Function].Save(new Context());

            expression = Utility.ReplaceDynamicTemplateVariableNames(expression);
            writer.AddLine(string.Format("dynamicTemplates.{0} = function(params) {{ return {1}; }};", e.Name, expression));
        }
Example #4
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                QuestList <string> list       = (QuestList <string>)value;
                string             saveString = "[" + String.Join(", ", list.Select(s => Utility.EscapeString(s)).ToArray()) + "]";

                base.WriteAttribute(writer, element, attribute, saveString, isFinal);
            }
Example #5
0
        public string Save()
        {
            int total = m_elements.Count;
            int done = 0;

            GameWriter writer = new GameWriter();
            foreach (Element e in m_elements.Values)
            {
                if (Progress != null)
                {
                    Progress(this, new ProgressEventArgs { PercentComplete = (int)(((double)done / total) * 100) });
                }

                IElementSaver saver;
                if (m_elementSavers.TryGetValue(e.ElemType, out saver))
                {
                    saver.Save(e, writer);
                }
                else
                {
                    throw new Exception("ERROR: No ElementSaver for type " + e.ElemType.ToString());
                }
                done++;
            }
            return writer.Save();
        }
Example #6
0
 public void Save(Element e, GameWriter writer)
 {
     if (e.Fields[FieldDefinitions.TemplateName] == "EditorVerbDefaultExpression")
     {
         return;
     }
     writer.AddLine(string.Format("templates.t_{0} = \"{1}\"", e.Fields[FieldDefinitions.TemplateName], e.Fields[FieldDefinitions.Text].Replace("\n", "").Replace("\r", "")));
 }
Example #7
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                string pattern = (string)value;
                GenerateUniqueGroupNames groupNamer = new GenerateUniqueGroupNames();

                pattern = replaceNamedGroups.Replace(pattern, groupNamer.MatchEvaluator);
                base.Save(writer, element, attribute, pattern, isFinal);
            }
Example #8
0
            protected void WriteAttribute(GameWriter writer, Element element, string attribute, string value, bool isFinal)
            {
                if (attribute.Contains(" "))
                {
                    attribute = attribute.Replace(" ", Utility.SpaceReplacementString);
                }

                writer.AddLine(string.Format("\"{0}\": {1}{2}", attribute, value, isFinal ? "" : ","));
            }
Example #9
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                DelegateImplementation impl = (DelegateImplementation)value;

                // TO DO: "function()" will need to include parameter names

                base.WriteAttribute(writer, element, attribute,
                                    string.Format("function() {{ {0} }}", impl.Implementation.Fields[FieldDefinitions.Script].Save(new Context())), isFinal);
            }
Example #10
0
 public void Save(Element e, GameWriter writer)
 {
     string paramNames = string.Join(", ", e.Fields[FieldDefinitions.ParamNames]);
     paramNames = Utility.ReplaceReservedVariableNames(paramNames);
     writer.AddLine("function " + e.Name.Replace(" ", Utility.SpaceReplacementString) + "(" + paramNames + ")");
     writer.AddLine("{");
     writer.AddLine(e.Fields[FieldDefinitions.Script].Save());
     writer.AddLine("}");
 }
        public void Save(Element e, GameWriter writer)
        {
            string paramNames = string.Join(", ", e.Fields[FieldDefinitions.ParamNames]);

            paramNames = Utility.ReplaceReservedVariableNames(paramNames);
            writer.AddLine("function " + e.Name.Replace(" ", Utility.SpaceReplacementString) + "(" + paramNames + ")");
            writer.AddLine("{");
            var context = new Context();

            context.AddLocalVariable(e.Fields[FieldDefinitions.ParamNames].ToArray());
            writer.AddLine(e.Fields[FieldDefinitions.Script].Save(context));
            writer.AddLine("}");
        }
Example #12
0
        public void Save(Element e, GameWriter writer)
        {
            base.SaveElementFields(e.Name, e, writer);
            string postElementScript = writer.GetPostElementScript(e);

            if (postElementScript.Length > 0)
            {
                writer.AddLine(postElementScript);
            }
            if (allObjectsArray.ContainsKey(e.Type))
            {
                writer.AddLine(string.Format("{0}.push({1});", allObjectsArray[e.Type], e.MetaFields[MetaFieldDefinitions.MappedName]));
            }
            writer.AddLine(string.Format("objectsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
        }
Example #13
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                Element reference = (Element)value;

                if (writer.IsElementWritten(reference))
                {
                    base.WriteAttribute(writer, element, attribute, ((Element)value).MetaFields[MetaFieldDefinitions.MappedName], isFinal);
                }
                else
                {
                    writer.AddPostElementScript(element, string.Format("objectReferences.push([\"{0}\", \"{1}\", \"{2}\"]);",
                                                                       element.MetaFields[MetaFieldDefinitions.MappedName],
                                                                       attribute,
                                                                       reference.MetaFields[MetaFieldDefinitions.MappedName]));
                }
            }
Example #14
0
        public void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
        {
            if (value == null)
            {
                return;
            }
            IFieldSaver saver;

            if (TryGetSaver(element, attribute, value.GetType(), out saver))
            {
                saver.Save(writer, element, attribute, value, isFinal);
            }
            else
            {
                throw new Exception(string.Format("ERROR: No FieldSaver for attribute {0}, type: {1}", attribute, value.GetType().ToString()));
            }
        }
Example #15
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                QuestList <Element> list = (QuestList <Element>)value;

                if (list.Count == 0)
                {
                    // Just write a blank list
                    base.WriteAttribute(writer, element, attribute, "new Array()", isFinal);
                }

                foreach (Element item in list)
                {
                    writer.AddPostElementScript(element, string.Format(
                                                    "objectListReferences.push([\"object_{0}\", \"{1}\", \"object_{2}\"]);",
                                                    element.MetaFields[MetaFieldDefinitions.MappedName],
                                                    attribute,
                                                    item.Name));
                }
            }
Example #16
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                QuestDictionary <Element> dictionary = (QuestDictionary <Element>)value;

                if (dictionary.Dictionary.Count == 0)
                {
                    // Just write a blank dictionary
                    base.WriteAttribute(writer, element, attribute, "new Object()", isFinal);
                }

                foreach (var item in dictionary.Dictionary)
                {
                    writer.AddPostElementScript(element, string.Format(
                                                    "objectDictionaryReferences.push([\"object_{0}\", \"{1}\", \"{2}\", \"object_{3}\"]);",
                                                    element.MetaFields[MetaFieldDefinitions.MappedName],
                                                    attribute,
                                                    item.Key,
                                                    item.Value.MetaFields[MetaFieldDefinitions.MappedName]));
                }
            }
Example #17
0
        protected void SaveElementFields(string name, Element e, GameWriter writer)
        {
            string mappedName = e.MetaFields[MetaFieldDefinitions.MappedName];

            writer.AddLine(mappedName + " = {");
            e.Fields.Set("_js_name", mappedName);
            e.Fields.Set("_types", new QuestList<string>(e.Fields.TypeNames));

            int count = 0;
            int length = e.Fields.FieldNames.Count();

            foreach (string field in e.Fields.FieldNames)
            {
                count++;
                object value = ConvertField(e, field, e.Fields.Get(field));
                fieldSaver.Save(writer, e, field, value, count == length);
            }

            writer.AddLine("};");
            writer.AddLine(string.Format("elementsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
            writer.MarkElementWritten(e);
        }
Example #18
0
        protected void SaveElementFields(string name, Element e, GameWriter writer)
        {
            string mappedName = e.MetaFields[MetaFieldDefinitions.MappedName];

            writer.AddLine(mappedName + " = {");
            e.Fields.Set("_js_name", mappedName);
            e.Fields.Set("_types", new QuestList <string>(e.Fields.TypeNames));

            int count  = 0;
            int length = e.Fields.FieldNames.Count();

            foreach (string field in e.Fields.FieldNames)
            {
                count++;
                object value = ConvertField(e, field, e.Fields.Get(field));
                fieldSaver.Save(writer, e, field, value, count == length);
            }

            writer.AddLine("};");
            writer.AddLine(string.Format("elementsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
            writer.MarkElementWritten(e);
        }
Example #19
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                QuestDictionary <T> dictionary = (QuestDictionary <T>)value;

                string result = "{";

                if (dictionary.Dictionary.Count > 0)
                {
                    int count = 0;
                    foreach (var item in dictionary.Dictionary)
                    {
                        count++;
                        result += string.Format("\"{0}\": {1}{2} ", item.Key, ValueSaver(item.Value), count == dictionary.Dictionary.Count ? "" : ",");
                    }
                }
                else
                {
                    result += string.Format("\"{0}\": {1} ", "__dummyKey", ValueSaver(default(T)));
                }

                result += "}";
                base.WriteAttribute(writer, element, attribute, result, isFinal);
            }
Example #20
0
 public void Save(Element e, GameWriter writer)
 {
     base.SaveElementFields(e.Name, e, writer);
     string postElementScript = writer.GetPostElementScript(e);
     if (postElementScript.Length > 0) writer.AddLine(postElementScript);
     if (allObjectsArray.ContainsKey(e.Type))
     {
         writer.AddLine(string.Format("{0}.push({1});", allObjectsArray[e.Type], e.MetaFields[MetaFieldDefinitions.MappedName]));
     }
     writer.AddLine(string.Format("objectsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
 }
 public void Save(Element e, GameWriter writer)
 {
     base.SaveElementFields(e.Name, e, writer);
 }
Example #22
0
 public void Save(Element e, GameWriter writer)
 {
     // Do nothing, .js files will be picked up from the resources folder and embedded in game.js automatically
 }
Example #23
0
 public void Save(Element e, GameWriter writer)
 {
     base.SaveElementFields(e.Name, e, writer);
     writer.AddLine(string.Format("allTimers.push({0});", e.MetaFields[MetaFieldDefinitions.MappedName]));
     writer.AddLine(string.Format("objectsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
 }
Example #24
0
 public void Save(Element e, GameWriter writer)
 {
     // Do nothing, .js files will be picked up from the resources folder and embedded in game.js automatically
 }
Example #25
0
 public void Save(Element e, GameWriter writer)
 {
     // Delegate definitions don't need saving in Javascript
 }
Example #26
0
 public void Save(Element e, GameWriter writer)
 {
     base.SaveElementFields(e.Name, e, writer);
 }
Example #27
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                double number = (double)value;

                base.WriteAttribute(writer, element, attribute, number.ToString(), isFinal);
            }
Example #28
0
 public abstract void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal);
Example #29
0
 public void Save(Element e, GameWriter writer)
 {
     string expression = e.Fields[FieldDefinitions.Function].Save();
     expression = Utility.ReplaceDynamicTemplateVariableNames(expression);
     writer.AddLine(string.Format("dynamicTemplates.{0} = function(params) {{ return {1}; }};", e.Name, expression));
 }
Example #30
0
 public void Save(Element e, GameWriter writer)
 {
     // Delegate definitions don't need saving in Javascript
 }
Example #31
0
 public void Save(Element e, GameWriter writer)
 {
     base.SaveElementFields(e.Name, e, writer);
     writer.AddLine(string.Format("allTimers.push({0});", e.MetaFields[MetaFieldDefinitions.MappedName]));
     writer.AddLine(string.Format("objectsNameMap[\"{0}\"] = {1};", e.Name, e.MetaFields[MetaFieldDefinitions.MappedName]));
 }
Example #32
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                bool boolVal = (bool)value;

                base.WriteAttribute(writer, element, attribute, boolVal ? "true" : "false", isFinal);
            }
Example #33
0
 public void Save(Element e, GameWriter writer)
 {
     if (e.Fields[FieldDefinitions.TemplateName] == "EditorVerbDefaultExpression") return;
     writer.AddLine(string.Format("templates.t_{0} = \"{1}\"", e.Fields[FieldDefinitions.TemplateName], e.Fields[FieldDefinitions.Text].Replace("\n", "").Replace("\r", "")));
 }
Example #34
0
            public override void Save(GameWriter writer, Element element, string attribute, object value, bool isFinal)
            {
                string strValue = (string)value;

                base.WriteAttribute(writer, element, attribute, Utility.EscapeString(strValue), isFinal);
            }