Beispiel #1
0
    private static Dictionary <string, string> BuildMonolessControllerReplacements(GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$uiViewName$", genParams.uiViewName);
        return(result);
    }
Beispiel #2
0
    private static Dictionary <string, string> BuildProxyReplacements(GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$moduleName$", genParams.moduleName);
        result.Add("$timeDecls$", System.DateTime.Now.ToString());
        return(result);
    }
Beispiel #3
0
    public static void GenerateUICodeAutoGen(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var path    = GetViewPath(genParams.generatePath) + genParams.uiViewName + "AutoGen.cs";
        var success = GenerateFile(path, true);

        if (success)
        {
            var replacements = BuildViewAutoGenReplacements(comSet, genParams);
            UpdateFileContent(path, AutoGenViewTemplatePath, replacements);
        }
    }
Beispiel #4
0
    private static void GenerateViewController(IEnumerable <UIComponentInfo> comSet, GenParams genParams, string tempPath)
    {
        var path    = GetControllerPath(genParams.generatePath) + genParams.uiViewName + "Controller.cs";
        var success = GenerateFile(path, false);

        if (success)
        {
            var replacements = BuildControllerReplacements(comSet, genParams);
            UpdateFileContent(path, tempPath, replacements);
        }
    }
Beispiel #5
0
    public static void GenerateMonolessController(GenParams genParams)
    {
        var path    = GetControllerPath(genParams.generatePath) + genParams.uiViewName + "Controller.cs";;
        var success = GenerateFile(path, false);

        if (!success)
        {
            return;
        }
        var replacements = BuildMonolessControllerReplacements(genParams);

        UpdateFileContent(path, CustomMonolessControllerTemplatePath, replacements);
    }
Beispiel #6
0
    private static void GenerateAutoGenModule(GenParams genParams)
    {
        var path    = GetModelPath(genParams.generatePath) + genParams.dataClassName + "MgrAutoGen.cs";
        var success = GenerateFile(path, true);

        if (!success)
        {
            return;
        }
        var replacements = BuildModelReplacements(genParams);

        UpdateFileContent(path, AutoGenCustomModelTemplatePath, replacements);
    }
Beispiel #7
0
    public static void GenerateNetMsg(GenParams genParams)
    {
        var path    = GetModelPath(genParams.generatePath) + genParams.moduleName + "NetMsg.cs";
        var success = GenerateFile(path, false);

        if (!success)
        {
            return;
        }
        var replacements = BuildNetMsgReplacements(genParams);

        UpdateFileContent(path, NetMsgTemplatePath, replacements);
    }
Beispiel #8
0
    public static void GenerateHelper(GenParams genParams)
    {
        var path    = GetModelPath(genParams.generatePath) + "/" + genParams.moduleName + "Helper.cs";
        var success = GenerateFile(path, false);

        if (!success)
        {
            return;
        }
        var replacements = BuildProxyReplacements(genParams);

        UpdateFileContent(path, HelperTemplatePath, replacements);
    }
Beispiel #9
0
    public static void GenerateProxy(GenParams genParams)
    {
        var path    = genParams.generatePath + "/Proxy" + genParams.moduleName + ".cs";
        var success = GenerateFile(path, false);

        if (!success)
        {
            return;
        }
        var replacements = BuildProxyReplacements(genParams);

        UpdateFileContent(path, ProxyTemplatePath, replacements);
    }
Beispiel #10
0
    public static void GenerateModuleData(GenParams genParams)
    {
        var path    = GetModelPath(genParams.generatePath) + genParams.dataClassName + ".cs";
        var success = GenerateFile(path, false);

        if (!success)
        {
            return;
        }
        var replacements = BuildModelReplacements(genParams);

        UpdateFileContent(path, CustomModelDataTemplatePath, replacements);
    }
Beispiel #11
0
    private static void GenerateCode(
        IEnumerable <UIComponentInfo> comSet
        , GenParams genParams
        , string name
        , PathType ty
        , bool isOverwrite
        , string tempPath)
    {
        var path    = GetControllerPath(genParams.generatePath) + genParams.uiViewName + name;
        var success = GenerateFile(path, isOverwrite);

        if (!success)
        {
            return;
        }
        var replacements = BuildLogicReplacements(comSet, genParams);

        UpdateFileContent(path, tempPath, replacements);
    }
Beispiel #12
0
    public bool ProduceCSharpCode(List <UIComponentInfo> componentList)
    {
        if (string.IsNullOrEmpty(_modulePath))
        {
            _modulePath = EditorUtility.SaveFolderPanel("Please Select Module Directory To Save", VIEWCODE_GENERATED_PATH, "");
        }
        if (string.IsNullOrEmpty(_modulePath))
        {
            _modulePath = DefaultPath;
        }

        try
        {
            var name      = UIPrefabRoot == null ? string.Empty : UIPrefabRoot.name;
            var genParams = new GenParams()
            {
                author       = mAuthor,
                uiViewName   = name,
                moduleName   = mModuleName,
                generatePath = _modulePath,
            };

            if (mgenerateView)
            {
                if (UIPrefabRoot == null)
                {
                    ShowNotification(new GUIContent("请放入一个PrefabInstance"));
                    return(false);
                }

                FRPCodeGeneratorHelper.GenerateUICodeAutoGen(componentList, genParams);

                var viewPath = _modulePath + "/View/" + genParams.uiViewName + "AutoGen.cs";

                UpdatePateList(genParams.uiViewName, viewPath);
            }

            if (mGenerateController)
            {
                if (UIPrefabRoot == null)
                {
                    ShowNotification(new GUIContent("请放入一个PrefabInstance"));
                    return(false);
                }
                switch ((ControllerType)selectControllerType)
                {
                case ControllerType.IsFRPBaseViewController:
                    FRPCodeGeneratorHelper.GenerateFRPControllerAutoGen(componentList, genParams);
                    FRPCodeGeneratorHelper.GenerateFRPController(componentList, genParams);
                    FRPCodeGeneratorHelper.GenerateFRPLogic(componentList, genParams);
                    break;

                case ControllerType.IsMonoLessViewController:
                    FRPCodeGeneratorHelper.GenerateMonolessController(genParams);
                    FRPCodeGeneratorHelper.GenerateMonolessControllerAutoGen(componentList, genParams);
                    break;

                case ControllerType.IsMonoViewController:
                    FRPCodeGeneratorHelper.GenerateMonoViewControllerAutoGen(componentList, genParams);
                    FRPCodeGeneratorHelper.GenerateMonoViewController(componentList, genParams);
                    FRPCodeGeneratorHelper.GenerateLogic(componentList, genParams);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (mGenerateModel)
            {
                FRPCodeGeneratorHelper.GenerateModule(genParams);
                FRPCodeGeneratorHelper.GenerateModuleData(genParams);
                FRPCodeGeneratorHelper.GenerateProxy(genParams);
            }
            if (mGenerateNetMsg)
            {
                FRPCodeGeneratorHelper.GenerateNetMsg(genParams);
            }
            if (mgenerateHelper)
            {
                FRPCodeGeneratorHelper.GenerateHelper(genParams);
            }

            ShowNotification(new GUIContent("Success 生成C#代码完毕"));
            // Refresh assets.
            //          AssetDatabase.Refresh ();
        }
        catch (System.Exception e)
        {
            Debug.Log("An error occurred while saving file: " + e);
        }
        return(true);
    }
Beispiel #13
0
 public static void GenerateModule(GenParams genParams)
 {
     GenerateCustomModule(genParams);
     GenerateAutoGenModule(genParams);
 }
Beispiel #14
0
    private static Dictionary <string, string> BuildViewAutoGenReplacements(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$uiViewName$", genParams.uiViewName);

        var BindElemets = new StringBuilder();

        var GameObjectBindingDecl = new StringBuilder();

        foreach (var item in comSet)
        {
            if (GameObjectStr == item.comType)
            {
                GameObjectBindingDecl.AppendFormat("{0}public GameObject {1};\n", indent, item.memberName);
                BindElemets.AppendFormat("{0}{1} = root.FindGameObject(\"{2}\");\n", indent2, item.memberName, item.path);
            }
            else if (TransformStr == item.comType)
            {
                GameObjectBindingDecl.AppendFormat("{0}public {1} {2};\n", indent, item.comType, item.memberName);
                BindElemets.AppendFormat("{0}{1} = root.FindTrans(\"{2}\");\n", indent2, item.memberName, item.path);
            }
            else
            {
                GameObjectBindingDecl.AppendFormat("{0}public {1} {2};\n", indent, item.comType, item.memberName);
                BindElemets.AppendFormat("{0}{1} = root.FindScript<{2}>(\"{3}\");\n", indent2, item.memberName, item.comType, item.path);
            }
        }

        result.Add("$BindElemets$", BindElemets.ToString());
        result.Add("$GameObjectBindingDecl$", GameObjectBindingDecl.ToString());

        return(result);
    }
Beispiel #15
0
    private static Dictionary <string, string> BuildControllerAutoGenReplacements(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$uiViewName$", genParams.uiViewName);
        result.Add("$dataClassName$", genParams.dataClassName);

        var EventStreamDecl   = new StringBuilder();
        var CloseEventStream  = new StringBuilder();
        var CreateEventStream = new StringBuilder();
        var ExposeEventStream = new StringBuilder();

        foreach (var item in comSet)
        {
            if (item.comType != ButtonObjectStr)
            {
                continue;
            }
            EventStreamDecl.AppendFormat("{0} UniRx.IObservable<Unit> On{1}Click{2}\n", indent, item.memberName, getter);
            CreateEventStream.AppendFormat("{0}{1}Evt = View.{1}.AsObservable();\n", indent, item.memberName);
            CloseEventStream.AppendFormat("{0}{1}Evt = {1}Evt.CloseOnceNull();\n", indent2, item.memberName);

            ExposeEventStream.AppendFormat("{0}private Subject<Unit> {1}Evt;\n", indent, item.memberName);
            ExposeEventStream.AppendFormat("{0}public UniRx.IObservable<Unit> On{1}Click{2}\n", indent, item.memberName, "{");
            ExposeEventStream.AppendFormat("{0}get {1} {2}Evt;{3}\n", indent2, "{return", item.memberName, "}");
            ExposeEventStream.AppendFormat("{0}{1}\n", indent, "}\n");
        }

        result.Add("$EventStreamDecl$", EventStreamDecl.ToString());
        result.Add("$CreateEventStream$", CreateEventStream.ToString());
        result.Add("$CloseEventStream$", CloseEventStream.ToString());
        result.Add("$ExposeEventStream$", ExposeEventStream.ToString());
        return(result);
    }
Beispiel #16
0
    private static Dictionary <string, string> BuildLogicReplacements(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$uiViewName$", genParams.uiViewName);
        result.Add("$dataClassName$", genParams.dataClassName);
        result.Add("$Author$", genParams.author);
        result.Add("$timeDecls$", System.DateTime.Now.ToString());

        var subscribeEvts      = new StringBuilder();
        var reactiveImplements = new StringBuilder();

        foreach (var item in comSet)
        {
            if (item.comType != ButtonObjectStr)
            {
                continue;
            }

            var funName = item.memberName + "Click";
            subscribeEvts.AppendFormat("{0}_disposable.Add(ctrl.On{1}.Subscribe(_=>{1}()));\n", indent3, funName);
            reactiveImplements.AppendFormat("{0}private static void {1}()\n{2}{3}", indent2, funName, indent2 + "{\n", indent2 + "}\n");
        }

        result.Add("$subscribeEvts$", subscribeEvts.ToString());
        result.Add("$reactiveImplements$", reactiveImplements.ToString());

        return(result);
    }
Beispiel #17
0
    private static Dictionary <string, string> BuildControllerReplacements(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var result = new Dictionary <string, string>();

        result.Add("$uiViewName$", genParams.uiViewName);
        result.Add("$dataClassName$", genParams.dataClassName);
        result.Add("$Author$", genParams.author);
        result.Add("$timeDecls$", System.DateTime.Now.ToString());
        return(result);
    }
Beispiel #18
0
    public static void GenerateMonolessControllerAutoGen(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
    {
        var path    = GetControllerPath(genParams.generatePath) + genParams.uiViewName + "ControllerAutoGen.cs";
        var success = GenerateFile(path, true);

        if (!success)
        {
            return;
        }
        var replacements = BuildMonolessControllerAutoGenReplacements(comSet, genParams);

        UpdateFileContent(path, AutoGenMonolessControllerTemplatePath, replacements);
    }
Beispiel #19
0
 public static void GenerateMonoViewController(List <UIComponentInfo> comSet, GenParams genParams)
 {
     GenerateViewController(comSet, genParams, CustomControllerTemplatePath);
 }
Beispiel #20
0
 public static void GenerateFRPControllerAutoGen(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
 {
     GenerateControllerAutoGen(comSet, genParams, AutoGenFRPBaseControllerTemplatePath);
 }
Beispiel #21
0
 public static void GenerateFRPLogic(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
 {
     GenerateCode(comSet, genParams, "Logic.cs", PathType.Controller, false, FRPLogicTemplatePath);
 }
Beispiel #22
0
 public static void GenerateFRPController(IEnumerable <UIComponentInfo> comSet, GenParams genParams)
 {
     GenerateViewController(comSet, genParams, CustomFRPControllerTemplatePath);
 }