Ejemplo n.º 1
0
 void FetchPrefabUrl(LuaViewInfo viewInfo)
 {
     EditorGUILayout.BeginHorizontal();
     EditorGUILayout.LabelField("Prefab url:", viewInfo.prefabUrl);
     if (GUILayout.Button("...", endButtonWidth))
     {
         string prefabPath = EditorUtility.OpenFilePanel("选择UI预制件", Path.Combine(Application.dataPath, PrefabsRootDir), "prefab");
         if (!string.IsNullOrEmpty(prefabPath))
         {
             string fileName = Path.GetFileNameWithoutExtension(prefabPath);
             fileName           = fileName.Replace("Wnd", "");
             fileName           = fileName.Replace("Panel", "");
             fileName           = fileName.Replace("View", "");
             moduleName         = fileName;
             prefabPath         = StringUtils.ReplaceAll(prefabPath, "\\", "/");
             prefabPath         = StringUtils.ReplaceAll(prefabPath, "Res/", "");
             prefabPath         = prefabPath.Replace(Application.dataPath, "");
             viewInfo.prefabUrl = prefabPath.Substring(1);
         }
     }
     EditorGUILayout.EndHorizontal();
 }
Ejemplo n.º 2
0
    //加载所有模块
    void LoadAllModules()
    {
        string modulesRootDir = Path.Combine(Application.dataPath, LuaModulesDir);

        string[] moduleDirs = Directory.GetDirectories(modulesRootDir);
        moduleInfoList = new List <LuaModuleInfo>();
        for (int i = 0; i < moduleDirs.Length; i++)
        {
            string        moduleDirPath = moduleDirs[i]; //模块目录路径
            LuaModuleInfo moduleInfo    = new LuaModuleInfo(Path.GetFileName(moduleDirs[i]));
            moduleInfo.moduleDirPath = moduleDirPath;    //模块目录路径

            moduleInfo.viewDirPath    = moduleDirPath + ToLuaGenerater.Folder2Directory(LuaFolder.View);
            moduleInfo.modelDirPath   = moduleDirPath + ToLuaGenerater.Folder2Directory(LuaFolder.Model);
            moduleInfo.serviceDirPath = moduleDirPath + ToLuaGenerater.Folder2Directory(LuaFolder.Service);
            moduleInfo.voDirPath      = moduleDirPath + ToLuaGenerater.Folder2Directory(LuaFolder.Vo);
            //Views
            string[] mdrFiles = Directory.GetFiles(moduleInfo.viewDirPath, "*.lua");
            for (int j = 0; j < mdrFiles.Length; j++)
            {
                string mdrFilePath = mdrFiles[j];
                string mdrName     = Path.GetFileNameWithoutExtension(mdrFilePath);
                mdrName = mdrName.Replace("Mdr", "");
                LuaViewInfo viewInfo = new LuaViewInfo(mdrName);
                viewInfo.viewName    = mdrName;
                viewInfo.viewDirPath = moduleInfo.viewDirPath;
                if (luaTable.HasTable(mdrName))
                {//已经存在配置
                    Dictionary <string, object> table = luaTable.SetTable(mdrName);
                    viewInfo.prefabUrl = luaTable.GetString(mdrName, "prefab");
                }
                moduleInfo.viewList.Add(viewInfo);
            }
            //Vo
            RefreshVos(moduleInfo);
            moduleInfoList.Add(moduleInfo);
        }
    }
Ejemplo n.º 3
0
    void EditModulelist()
    {
        for (int i = 0; i < moduleInfoList.Count; i++)
        {
            EditorGUI.indentLevel++;
            {
                LuaModuleInfo moduleInfo = moduleInfoList[i];
                EditorGUILayout.LabelField("模块:", moduleInfo.moduleName);
                EditorGUI.indentLevel++;
                EditorGUILayout.LabelField("Views:");
                EditorGUI.indentLevel++;
                for (int j = 0; j < moduleInfo.viewList.Count; j++)
                {
                    EditorGUI.indentLevel++;
                    LuaViewInfo viewInfo = moduleInfo.viewList[j];

                    if (luaTable.HasTable(viewInfo.viewName))
                    {//已经存在配置
                        Dictionary <string, object> table = luaTable.GetTable(viewInfo.viewName);
                        EditorGUILayout.LabelField("View name:", viewInfo.viewName);
                        if (string.IsNullOrEmpty(viewInfo.prefabUrl))
                        {
                            viewInfo.prefabUrl = luaTable.GetString(viewInfo.viewName, "prefab");
                        }
                        oldString = viewInfo.prefabUrl;
                        FetchPrefabUrl(viewInfo);
                        if (oldString != viewInfo.prefabUrl)
                        {
                            luaTable.SetHashTable(viewInfo.viewName, "prefab", viewInfo.prefabUrl);
                        }
                    }
                    else
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("搜索到新的View:" + viewInfo.viewName + "是否新建?");
                        if (GUILayout.Button("新建", endButtonWidth))
                        {
                            luaTable.SetTable(viewInfo.viewName);
                            luaTable.SetHashTable(viewInfo.viewName, "name", viewInfo.viewName);
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                    EditorGUILayout.BeginHorizontal();
                    {
                        LuaFileStatus status = ToLuaGenerater.GetFileStatus(moduleInfo.moduleDirPath, LuaFolder.Mdr, viewInfo.viewName);
                        if (status == LuaFileStatus.Folder_Only || status == LuaFileStatus.Folder_And_LuaFile)
                        {
                            EditorGUILayout.LabelField("Mdr文件:");
                            if (GUILayout.Button("生成 " + viewInfo.viewName + " 的 Mediator 文件"))
                            {
                                ToLuaGenerater.GeneratedLuaFile(moduleInfo.moduleDirPath, moduleInfo.moduleName, viewInfo.viewName, LuaFolder.Mdr);
                            }
                        }
                        else if (status == LuaFileStatus.Folder_And_TagLuaFile)
                        {
                            EditorGUILayout.LabelField("Mdr文件:", viewInfo.viewName + LuaFolder.Mdr + ".lua 文件已经生成");
                        }
                        else
                        {
                            EditorGUILayout.LabelField("Mdr文件:", status.ToString());
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUI.indentLevel--;
                    EditorGUILayout.Space();
                }
                EditorGUI.indentLevel--;

                //Vos
                EditorGUI.indentLevel++;
                if (moduleInfo.voList.Count > 0)
                {
                    EditorGUILayout.LabelField("Value Objects:");
                    for (int j = 0; j < moduleInfo.voList.Count; j++)
                    {
                        EditorGUILayout.LabelField((j + 1).ToString(), moduleInfo.voList[j] + ".lua");
                    }
                }
                else
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Value Objects:");
                    EditFolder(moduleInfo, LuaFolder.Vo);
                    EditorGUILayout.EndHorizontal();
                }
                EditorGUI.indentLevel--;


                EditorGUILayout.Space();
                EditFolder(moduleInfo, LuaFolder.Model);
                EditFolder(moduleInfo, LuaFolder.Service);

                EditorGUILayout.Space();

                EditorGUILayout.BeginHorizontal();
                moduleInfo.newViewMdrName = EditorGUILayout.TextField("新View 名称:", moduleInfo.newViewMdrName);
                if (GUILayout.Button("新增", endButtonWidth))
                {
                    if (!ToLuaGenerater.FileNameValid(moduleInfo.newViewMdrName, this))
                    {
                        return;
                    }
                    LuaViewInfo viewInfo = new LuaViewInfo(moduleInfo.newViewMdrName);
                    viewInfo.viewName    = moduleInfo.newViewMdrName;
                    viewInfo.viewDirPath = moduleInfo.viewDirPath;
                    luaTable.SetTable(viewInfo.viewName);
                    luaTable.SetHashTable(viewInfo.viewName, "name", viewInfo.viewName);
                    moduleInfo.viewList.Add(viewInfo);
                    moduleInfo.newViewMdrName = "";
                }
                EditorGUILayout.EndHorizontal();
                EditorUtils.DrawHorizontalSplitter();
                EditorGUI.indentLevel--;
            }
            EditorGUI.indentLevel--;
        }
    }