12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- namespace etoy
- {
- class RuleCenterField
- {
- public string name;
- public string type;
- public int len = int.MinValue;
- }
- class JsonTableGenerater : IGenerater
- {
- private readonly JsonWriter _writer;
- private Dictionary<string, RuleCenterField> _fieldMap;
- private void TableRowsGenerate(Table table)
- {
- var fieldInfos = table.FieldInfos;
- for (int i = 0, len = fieldInfos.Length; i < len; i++)
- {
- var field = fieldInfos[i];
- if (!field.IsServerField) continue;
- var fieldData = new RuleCenterField();
- fieldData.name = field.FieldName;
- fieldData.type = RuleCenterUtil.ToRuleCenterType(field.FieldType, field.IsRepeated);
- _fieldMap.Add(field.FieldName, fieldData);
- }
- _writer.OnRows(table.Rows, _fieldMap);
- }
- private void TableGenerate(Table table)
- {
- _fieldMap.Clear();
- _writer.Bracket().Indent().NewLine();
- {
- _writer.AppendKey(RuleCenterJsonStructureDefine.Table_Name).Append(table.Name);
- _writer.Dot().NewLine();
- TableRowsGenerate(table);
- _writer.Dot().NewLine();
- _writer.OnFields(_fieldMap);
- }
- _writer.Dedent().NewLine().EndBracket();
- }
- public void Generate(Context context)
- {
- _fieldMap = new Dictionary<string, RuleCenterField>();
- var tables = context.Blackboard.Tables.FindAll(table => table.TableTag.HasFlag(TableTag.Server));
- _writer.EnumeratorToJson(tables, tables.Count, Loop);
- void Loop(int _, Table table)
- {
- if (table.TableTag.HasFlag(TableTag.Server))
- {
- _writer.NewLine();
- TableGenerate(table);
- }
- }
- }
- public JsonTableGenerater(JsonWriter writer)
- {
- _writer = writer;
- }
- }
- }
|