Beispiel #1
0
 private static void writeClasses(ICollection <string> children, TezReader reader, StringBuilder builder, string parentClass, string rootClass, string rootMemeber, List <string> finalList)
 {
     ///从Key中获得所有Class的名称
     foreach (var class_name in children)
     {
         ///如果是Object
         ///说明是Path
         if (reader.tryBeginObject(class_name))
         {
             ///写入当前PathClass
             ///并且得到下一级Class的Name
             var new_children = writePathClass(reader, builder, class_name, parentClass);
             ///调用自己写入下一个Class
             writeClasses(new_children, reader, builder, class_name, rootClass, rootMemeber, finalList);
             reader.endObject(class_name);
         }
         ///如果不是Object
         ///说明是Final
         else
         {
             reader.beginArray(class_name);
             writeFinalClass(reader, builder, class_name, parentClass, rootClass, rootMemeber);
             reader.endArray(class_name);
             finalList.Add(class_name);
         }
     }
 }
        public void readFromSave(TezReader reader)
        {
            var keys = reader.getKeys();

            foreach (var key in keys)
            {
                reader.beginArray(key);
                m_Dic[key].readFromSave(reader);
                reader.endArray(key);
            }
        }
Beispiel #3
0
        public override void loadConfig(TezReader reader)
        {
            reader.beginArray("Nodes");

            var count = reader.count;

            for (int i = 0; i < count; i++)
            {
                reader.beginObject(i);
                var node = TezBehaviorTree.create(reader.readString("CID"));
                this.addNode(node);
                node.loadConfig(reader);
                reader.endObject(i);
            }

            reader.endArray("Nodes");
        }
Beispiel #4
0
        /// <summary>
        ///
        /// Category Cshap File Generator
        ///
        /// </summary>
        /// <param name="outPath"></param>
        /// <param name="reader"></param>
        public static void generateCodeFile(string outPath, TezReader reader)
        {
            List <string> final_list = new List <string>();
            StringBuilder builder    = new StringBuilder();

            var root_class    = "Root";
            var wrapper_class = reader.readString("WrapperClass");

            var name_space = reader.readString("Namespace");

            builder.AppendLine("using System;");
            builder.AppendLine("using System.Collections.Generic;");
            builder.AppendLine("using tezcat.Framework.Core;");
            builder.AppendLine();
            builder.AppendLine();

            ///Namespace
            builder.AppendLine(string.Format("namespace {0}", name_space));
            builder.AppendLine("{");

            ///Config Class
            builder.AppendLine(string.Format("public static class {0}", wrapper_class));
            builder.AppendLine("{");

            #region 写类
            reader.beginObject(root_class);
            var children = writeRootClass(reader, builder, root_class);
            ///从Key中获得所有Class的名称
            foreach (var class_name in children)
            {
                ///如果是Object
                ///说明是Path
                if (reader.tryBeginObject(class_name))
                {
                    ///写入当前PathClass
                    ///并且得到下一级Class的Name
                    var new_children = writePathClass(reader, builder, class_name, root_class);
                    writeClasses(new_children, reader, builder, class_name, root_class, class_name, final_list);
                    reader.endObject(class_name);

                    ///调用自己写入下一个Class
                }
                ///如果不是Object
                ///说明是Final
                else
                {
                    reader.beginArray(class_name);
                    writeFinalClass(reader, builder, class_name, root_class, root_class, class_name);
                    reader.endArray(class_name);
                    final_list.Add(class_name);
                }
            }
            reader.endObject(root_class);
            #endregion

            #region 初始化函数
            builder.AppendLine("public static void init()");
            builder.AppendLine("{");
            for (int i = 0; i < final_list.Count; i++)
            {
                builder.AppendLine(string.Format("{0}.init();", final_list[i]));
            }
            builder.AppendLine("}");
            #endregion

            ///Config Class
            builder.AppendLine("}");

            ///Namespace
            builder.AppendLine("}");

            var writer = TezFilePath.createTextFile(outPath + "/" + wrapper_class + ".cs");
            writer.Write(builder.ToString());
            writer.Close();
        }