Exemple #1
0
    private static CsBuilder ParseXml(string path, string csExportDir, string templateFile)
    {
        CsBuilder csBuilder = new CsBuilder();
        var       xmlDoc    = new XmlDocument();

        xmlDoc.Load(path);
        var rootNode = xmlDoc.SelectSingleNode("root");

        csBuilder.m_ClassName = Path.GetFileNameWithoutExtension(path);
        csBuilder.m_DataCount = rootNode.SelectSingleNode("Items").ChildNodes.Count;

        var nodeList = rootNode.SelectSingleNode("Props").ChildNodes;

        foreach (var childNode in nodeList)
        {
            var childElement  = (XmlElement)childNode;
            var fieldName     = childElement.InnerText;
            var hasPrimaryKey = IsPrimaryKey(ref fieldName);
            var type          = GetFieldType(ref fieldName);
            if (hasPrimaryKey)
            {
                csBuilder.m_PrimaryKeyType = type;
                csBuilder.m_PrimaryKey     = string.Format("m_DataMap.Add(data.{0}, this);", fieldName);
            }
            csBuilder.m_FieldNameList.Add(fieldName);
            csBuilder.m_FieldTypeList.Add(type);

            csBuilder.m_Properties = GetProperties(csBuilder);
            csBuilder.m_Fields     = GetFields(csBuilder);
            SaveCs(csBuilder, csExportDir, templateFile);
        }

        return(csBuilder);
    }
Exemple #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            var csBuilder = new CsBuilder();

            csBuilder.Create(this.SelectedLists, textNamespace.Text, textProjectFolder.Text, textContextName.Text);
            Cursor.Current = Cursors.Default;
            MessageBox.Show("Model's Created - You will now need to include them into your project");
            this.Close();
        }
Exemple #3
0
    private static string GetProperties(CsBuilder csBuilder)
    {
        string format = "\t\tpublic {0} {1} ";
        string suffix = "{ get; private set; }\n";
        var    result = new StringBuilder();

        for (int i = 0; i < csBuilder.m_FieldNameList.Count; i++)
        {
            result.Append(string.Format(format, csBuilder.m_FieldTypeList[i], csBuilder.m_FieldNameList[i]));
            result.Append(suffix);
        }
        return(result.ToString());
    }
Exemple #4
0
    private static string GetFields(CsBuilder csBuilder)
    {
        string format = "\t\t\t\tcase \"{0}\": \n\t\t\t\t\t\tthis.{1} = value;\n\t\t\t\t\t\tbreak;\n";
        var    result = new StringBuilder();

        List <FieldInfo> fieldsList = new List <FieldInfo>();

        for (int i = 0; i < csBuilder.m_FieldNameList.Count; i++)
        {
            FieldInfo fi = new FieldInfo();
            fi.fieldName = csBuilder.m_FieldNameList[i];
            fi.fieldType = csBuilder.m_FieldTypeList[i];
            fieldsList.Add(fi);
        }

        fieldsList.Sort((delegate(FieldInfo info, FieldInfo fieldInfo)
        {
            return(info.fieldType.CompareTo(fieldInfo.fieldType));
        }));

        Dictionary <string, bool> typeMap = new Dictionary <string, bool>();

        for (int i = 0; i < fieldsList.Count; i++)
        {
            if (!typeMap.ContainsKey(fieldsList[i].fieldType))
            {
                result.Append(TypeFunctionHeadMap[fieldsList[i].fieldType]);
                result.Append("\t\t{\n");
                result.Append("\t\t\tswitch (fieldName)\n");
                result.Append("\t\t\t{\n");
                typeMap.Add(fieldsList[i].fieldType, true);
            }

            result.Append(string.Format(format, fieldsList[i].fieldName, fieldsList[i].fieldName));

            if ((i + 1 >= fieldsList.Count) || (fieldsList[i].fieldType != fieldsList[i + 1].fieldType))
            {
                result.Append("\t\t\t\tdefault:\n");
                result.Append("\t\t\t\t\tDebug.LogError(string.Format(\"The data load error, The field does not exist, Field name: {0}, Value name : {1}\", fieldName,value));\n");
                result.Append("\t\t\t\t\tbreak;\n");
                result.Append("\t\t\t}\n");
                result.Append("\t\t}");
                if (!(i + 1 >= fieldsList.Count))
                {
                    result.Append("\n\n");
                }
            }
        }
        return(result.ToString());
    }
Exemple #5
0
    private static void ParseXml(string path, string xmlBinExportDir)
    {
        try
        {
            var complieXml = new CompileXml();
            var xmlDoc     = new XmlDocument();
            xmlDoc.Load(path);
            var rootNode = xmlDoc.SelectSingleNode("root");

            var nodeList = rootNode.SelectSingleNode("Props").ChildNodes;
            foreach (var childNode in nodeList)
            {
                var childElement = (XmlElement)childNode;
                var fieldName    = childElement.InnerText;

                CsBuilder.IsPrimaryKey(ref fieldName);
                var fieldType = CsBuilder.GetFieldType(ref fieldName);

                complieXml.m_FieldNameList.Add(fieldName);
                complieXml.m_FieldNameBufferToIndexMap.Add(fieldName, complieXml.m_FieldNameBufferToIndexMap.Count);
                complieXml.m_FieldTypeList.Add(TypeMap[fieldType]);
            }

            complieXml.m_FieldNameBufferSzie = GetStringBufferSize(complieXml.m_FieldNameList);
            complieXml.m_FieldCount          = (short)complieXml.m_FieldTypeList.Count;

            string name = Path.GetFileNameWithoutExtension(path);

            FileStream fs = File.Create(xmlBinExportDir + "/" + name + ".xml");

            complieXml.WriteHead(fs);

            GetStringBuffer(complieXml, rootNode);
            complieXml.WriteStringBuffer(fs);

            WriteItems(fs, complieXml, rootNode);

            fs.Flush();
            fs.Close();
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }
    }
Exemple #6
0
    private static void SaveCs(CsBuilder csBuilder, string csExportDir, string templateFile)
    {
        var        codeTemplate = File.ReadAllText(templateFile, Encoding.UTF8);
        FileStream fs           = File.Create(csExportDir + "/" + csBuilder.m_ClassName + ".cs");

        codeTemplate = codeTemplate.Replace("$$ClassName$$", csBuilder.m_ClassName);
        codeTemplate = codeTemplate.Replace("$$PrimaryKeyType$$", csBuilder.m_PrimaryKeyType);
        codeTemplate = codeTemplate.Replace("$$DataCount$$", csBuilder.m_DataCount + "");
        codeTemplate = codeTemplate.Replace("$$properties$$", csBuilder.m_Properties);
        codeTemplate = codeTemplate.Replace("$$fields$$", csBuilder.m_Fields);
        codeTemplate = codeTemplate.Replace("$$primaryKeyOp$$", csBuilder.m_PrimaryKey);

        var bytes = Encoding.UTF8.GetBytes(codeTemplate);

        fs.Write(bytes, 0, bytes.Length);
        fs.Flush();
        fs.Close();
    }
    private void SavePriorityConfig()
    {
        m_ProcessResults.Add("###<color=#ffffff>保存数据优先级配置</color>");
        m_ProcessResults.Add(m_Window.PriorityConfig.SavePriorityConfig(m_Window.SettingUI.XmlExportDirectory));
        m_ProcessResults.Add("###<color=#22b454>=======================保存数据优先级配置成功=======================</color>");

        try
        {
            m_ProcessResults.Add("###<color=#ffffff>写入数据优先级配置</color>");
            m_ProcessResults.Add(m_SaveGameDataConfig.ExportConfig());
            m_ProcessResults.Add("###<color=#22b454>=======================写入数据优先级配置成功=======================</color>");
        }
        catch (Exception e)
        {
            Debug.LogError(e);
        }

        CompileXml.ComplieXmlFile(m_Window.SettingUI.XmlExportDirectory, m_Window.SettingUI.XmlBinExportDirectory);
        CsBuilder.CreateCsCode(m_Window.SettingUI.XmlExportDirectory, m_Window.SettingUI.CsExportDirectory, m_CodeTemplateFilePath);
    }
Exemple #8
0
 internal FunctionScope(EmitContext emitContext, CsBuilder csBuilder)
     : base(emitContext)
 {
     CodeBuilder = new CodeBuilder(csBuilder);
 }