Exemple #1
0
        public void IspišiStrukture()
        {
            ClassStruct.IspišiStrukture();
            Assert.AreEqual("MojaStruktura", cw.GetString());
            Assert.AreEqual("MojaStruktura", cw.GetString());

            Assert.AreEqual("MojaStruktura", cw.GetString());
            Assert.AreEqual("MyStruct", cw.GetString());
        }
Exemple #2
0
        public void IspišiKlase()
        {
            ClassStruct.IspišiKlase();
            Assert.AreEqual(5, cw.GetInt());
            Assert.AreEqual(5, cw.GetInt());

            Assert.AreEqual(2, cw.GetInt());
            Assert.AreEqual(2, cw.GetInt());
        }
 /// <summary>
 /// 开始遍历所有的注释条目
 /// </summary>
 /// <param name="luaStr"></param>
 public ClassStruct Start(string luaStr)
 {
     luaStr = new StringBuilder(luaStr).Remove("return nil").GetString();
     string[] docs = SplitAllDoc(luaStr);
     _classStruct = new ClassStruct();
     foreach (var item in docs)
     {
         AnalyticalDoc(item);
     }
     return(_classStruct);
 }
        public string[] Build()
        {
            int i = 0;

            string[] lines = new string[1024];

            lines[i++] = "package " + syntaxData.File.c.n + ";";

            foreach (String u in syntaxData.File.u)
            {
                lines[i++] = "import " + u + ";";
            }

            ClassStruct   c  = syntaxData.File.c.c;
            StringBuilder sb = new StringBuilder();

            if (c.isabstract)
            {
                sb.Append("Abstract ");
            }
            if (c.isStatic)
            {
                sb.Append("static ");
            }


            sb.Append(c.scop + " " + c.name);
            lines[i++] = sb.ToString();

            {
                lines[i++] = "{";
                lines[i++] = "//body";
                lines[i++] = "}";
            }

            return(lines);
        }
Exemple #5
0
        static void Main(string[] args)
        {
            //ClassStruct clastruct = new ClassStruct();

            ClassStruct C1 = new ClassStruct(2, 3, 5);
        }
Exemple #6
0
    //[MenuItem("Tools/Editor/Config/服务端/自动生成InitSystem")]
    public static void ParseInitSystemServer()
    {
        //string path = Application.dataPath + "/Script/Protocol/AutoInit/InitSystem.cs";
        string path = ServerPath + "/MilkGameServer/Server/Protocol/AutoInit/InitSystem.cs";
        string protocolDataJsonPath      = Application.dataPath + "/Script/Editor/ServerConfig/ProtocolStruct";
        string classStructUnPackJsonPath = Application.dataPath + "/Script/Editor/ServerConfig/ClassStruct/UnPack";

        if (!Directory.Exists(protocolDataJsonPath))
        {
            Debug.LogError("存放协议类结构的Json目录不存在!" + protocolDataJsonPath);
        }
        if (!Directory.Exists(classStructUnPackJsonPath))
        {
            Debug.LogError("存放协议相关数据类结构的Json目录不存在!" + classStructUnPackJsonPath);
        }
        if (File.Exists(path))
        {
            File.Delete(path);
        }
        StringBuilder sb = new StringBuilder();

        sb.Append("using System.Collections.Generic;").Append(LINK);
        sb.Append("using GameServer.Handle;").Append(LINK);
        sb.Append("namespace Assets.Script.Protocol").Append(LINK);
        sb.Append(LEFT);
        sb.Append(TAB).Append("public static class InitSystem").Append(LINK);
        sb.Append(TAB).Append(LEFT);
        sb.Append(TAB).Append(TAB).Append("public static void Init(GameServer.Protocol.ProtocolMgr protocolManager)").Append(LINK);
        sb.Append(TAB).Append(TAB).Append(LEFT);

        string[] protocolDataFilePaths = Directory.GetFiles(protocolDataJsonPath, "*.json", SearchOption.TopDirectoryOnly);
        for (int i = 0; i < protocolDataFilePaths.Length; i++)
        {
            string tempPath = protocolDataFilePaths[i];
            tempPath = tempPath.Substring(tempPath.LastIndexOf("\\") + 1);
            tempPath = tempPath.Substring(0, tempPath.Length - 5);//去掉后缀.json
            string[] arr = tempPath.Split('_');
            sb.Append(TAB).Append(TAB).Append(TAB).Append(string.Format("protocolManager.AddProtocolObjectToDict((ProtocolNo){0}, new {1}());", arr[0], arr[1])).Append(LINK);
            sb.Append(TAB).Append(TAB).Append(TAB).Append(string.Format("new {0}Handler();", arr[1])).Append(LINK);
        }
        string[] classStructFilePaths = Directory.GetFiles(classStructUnPackJsonPath, "*.json", SearchOption.TopDirectoryOnly);
        for (int i = 0; i < classStructFilePaths.Length; i++)
        {
            FileStream   fileStream   = File.OpenRead(classStructFilePaths[i]);
            StreamReader streamReader = new StreamReader(fileStream, Encoding.UTF8);
            string       text         = streamReader.ReadToEnd();
            if (!string.IsNullOrEmpty(text))
            {
                ClassStruct   classStruct = JsonUtility.FromJson <ClassStruct>(text);
                StringBuilder tempSb      = new StringBuilder();
                for (int j = 0; j < classStruct.memberDataList.Length; j++)
                {
                    string     tempType   = "";
                    MemberData memberData = classStruct.memberDataList[j];
                    switch (memberData.val_type)
                    {
                    case "int":
                        tempType = "INT32";
                        break;

                    case "string":
                        tempType = "STRING";
                        break;

                    case "float":
                        tempType = "FLOAT";
                        break;

                    case "double":
                        tempType = "DOUBLE";
                        break;

                    case "char":
                        tempType = "CHAR";
                        break;

                    default:
                        tempType = "CLASS";
                        break;
                    }
                    tempSb.Append(string.Format("DefaultVar.{0}", tempType));
                    if (j != classStruct.memberDataList.Length - 1)
                    {
                        tempSb.Append(",");
                    }
                }
                sb.Append(TAB).Append(TAB).Append(TAB).Append(string.Format("protocolManager.AddUnPackClassStructToDict({0}.DATAID, new List<object> {2} {1} {3});", classStruct.className, tempSb.ToString(), "{", "}")).Append(LINK);
            }
            streamReader.Close();
            fileStream.Close();
            streamReader.Dispose();
            fileStream.Dispose();
            streamReader = null;
            fileStream   = null;
        }
        sb.Append(TAB).Append(TAB).Append(RIGHT);
        sb.Append(TAB).Append(RIGHT);
        sb.Append(RIGHT);
        File.WriteAllText(path, sb.ToString());
        AssetDatabase.Refresh();
        AssetDatabase.SaveAssets();
    }
Exemple #7
0
    //[MenuItem("Tools/Editor/Config/服务端/自动生成协议相关数据类脚本")]
    public static void ParseAllClassServer()
    {
        if (!Directory.Exists(Application.dataPath + "/Script/Editor/ServerConfig/ClassStruct"))
        {
            Debug.LogError(Application.dataPath + "/Script/Editor/ServerConfig/ClassStruct is not exist!");
            return;
        }
        //string path = Application.dataPath + "/Script/Protocol/AutoClassStruct/";
        string path = ServerPath + "/MilkGameServer/Server/Protocol/ClassStruct/";

        string[] files = Directory.GetFiles(Application.dataPath + "/Script/Editor/ServerConfig/ClassStruct", "*.json", SearchOption.AllDirectories);
        for (int index = 0; index < files.Length; index++)
        {
            FileStream   fileStream   = File.OpenRead(files[index]);
            StreamReader streamReader = new StreamReader(fileStream, Encoding.UTF8);
            string       text         = streamReader.ReadToEnd();
            //Debug.Log(text);
            if (text != null)
            {
                ClassStruct   classStruct = JsonUtility.FromJson <ClassStruct>(text);
                StringBuilder sb          = new StringBuilder();
                StringBuilder memberSb    = new StringBuilder();
                StringBuilder initSb      = new StringBuilder();
                string        str         = "";
                switch (classStruct.structType)
                {
                case "Pack":
                    sb.Append(string.Format("public class {0} : ClassBase", classStruct.className)).Append(LINK);
                    sb.Append(LEFT);
                    initSb.Append(TAB).Append(TAB).Append(string.Format("AddMemberObject((DataID){0});", classStruct.dataID)).Append(LINK);
                    foreach (var v in classStruct.memberDataList)
                    {
                        sb.Append(TAB).Append("//" + v.val_describe).Append(LINK);
                        sb.Append(TAB).Append(string.Format("public {0} {1};", v.val_type, v.val_name)).Append(LINK);
                        memberSb.Append(v.val_type + " " + v.val_name + ",");
                        initSb.Append(TAB).Append(TAB).Append(string.Format("this.{0} = {1};", v.val_name, v.val_name)).Append(LINK);
                        initSb.Append(TAB).Append(TAB).Append(string.Format("AddMemberObject(this.{0});", v.val_name)).Append(LINK);
                    }
                    str = memberSb.ToString();
                    if (str.Length > 0)
                    {
                        str = str.Substring(0, str.Length - 1);
                    }
                    sb.Append(TAB).Append(string.Format("public {0}({1})", classStruct.className, str)).Append(LINK);
                    sb.Append(TAB).Append(LEFT);
                    sb.Append(initSb.ToString());
                    sb.Append(TAB).Append(RIGHT);
                    sb.Append(RIGHT);
                    File.WriteAllText(path + classStruct.className + ".cs", sb.ToString());
                    break;

                case "UnPack":
                    sb.Append("using System.Collections.Generic;").Append(LINK);
                    sb.Append(string.Format("public class {0}", classStruct.className)).Append(LINK);
                    sb.Append(LEFT);
                    sb.Append(TAB).Append(string.Format("public const DataID DATAID = (DataID){0};", classStruct.dataID)).Append(LINK);
                    foreach (var v in classStruct.memberDataList)
                    {
                        sb.Append(TAB).Append("//" + v.val_describe).Append(LINK);
                        sb.Append(TAB).Append(string.Format("public {0} {1};", v.val_type, v.val_name)).Append(LINK);
                        memberSb.Append(v.val_type + " " + v.val_name + ",");
                        initSb.Append(TAB).Append(TAB).Append(string.Format("this.{0} = {1};", v.val_name, v.val_name)).Append(LINK);
                    }
                    str = memberSb.ToString();
                    if (str.Length > 0)
                    {
                        str = str.Substring(0, str.Length - 1);
                    }
                    sb.Append(TAB).Append(string.Format("public {0}({1})", classStruct.className, str)).Append(LINK);
                    sb.Append(TAB).Append(LEFT);
                    sb.Append(initSb.ToString());
                    sb.Append(TAB).Append(RIGHT);
                    sb.Append(TAB).Append(string.Format("public static {0} ToClass(List<object> objectList, ref int index)", classStruct.className)).Append(LINK);
                    sb.Append(TAB).Append(LEFT);
                    //sb.Append(TAB).Append(TAB).Append(string.Format("index += {0};", classStruct.memberDataList.Length)).Append(LINK);
                    StringBuilder memberListSb = new StringBuilder();
                    for (int i = 0; i < classStruct.memberDataList.Length; i++)
                    {
                        if (classStruct.memberDataList[i].val_type != "int" && classStruct.memberDataList[i].val_type != "float" &&
                            classStruct.memberDataList[i].val_type != "double" && classStruct.memberDataList[i].val_type != "chat" &&
                            classStruct.memberDataList[i].val_type != "string")
                        {
                            memberListSb.Append(classStruct.memberDataList[i].val_type + ".ToClass(objectList, ref index)");
                        }
                        else
                        {
                            memberListSb.Append(string.Format("({0})objectList[index++]", classStruct.memberDataList[i].val_type));
                        }
                        if (i != classStruct.memberDataList.Length - 1)
                        {
                            memberListSb.Append(", ");
                        }
                    }
                    sb.Append(TAB).Append(TAB).Append(string.Format("return new {0}({1});", classStruct.className, memberListSb.ToString())).Append(LINK);
                    sb.Append(TAB).Append(RIGHT);
                    sb.Append(RIGHT);
                    File.WriteAllText(path + classStruct.className + ".cs", sb.ToString());
                    break;
                }
                streamReader.Close();
                fileStream.Close();
                streamReader.Dispose();
                fileStream.Dispose();
                streamReader = null;
                fileStream   = null;
            }
        }
        AssetDatabase.Refresh();
        AssetDatabase.SaveAssets();
    }