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); }
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(); }
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()); }
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()); }
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); } }
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); }
internal FunctionScope(EmitContext emitContext, CsBuilder csBuilder) : base(emitContext) { CodeBuilder = new CodeBuilder(csBuilder); }