예제 #1
0
    void OnGUI()
    {
        //  タイトル
        //ToolsForEditorWindow.TitleLabel("Create Cks", null);


        using (new EditorGUILayout.VerticalScope())
        {
            TargetFolder = EditorGUILayout.TextField("Target Folder", TargetFolder);

            //  コンパイルからリンク出力まで一括処理
            if (GUILayout.Button("Create File"))
            {
                Loader.AutoBaseHeaderCreate(TargetFolder, false);
                Loader.AutoBaseCreate <CustomCompiler, CustomCpu>(TargetFolder, false);
                Loader.AutoCreate <CustomCompiler, CustomCpu>(TargetFolder, false);
                AssetDatabase.Refresh();
                EditorPrefs.SetString(this.GetType().FullName + ".TargetFolder", TargetFolder);
            }

            //  コンパイルからリンク出力まで一括処理
            if (GUILayout.Button("Force Create File"))
            {
                Loader.AutoBaseHeaderCreate(TargetFolder, true);
                Loader.AutoBaseCreate <CustomCompiler, CustomCpu>(TargetFolder, true);
                Loader.AutoCreate <CustomCompiler, CustomCpu>(TargetFolder, true);
                AssetDatabase.Refresh();
                EditorPrefs.SetString(this.GetType().FullName + ".TargetFolder", TargetFolder);
            }

            //  指定のファイルをコンパイルして結果を出力するのみ
            if (GUILayout.Button("Compile Check File"))
            {
                var targetFolder = Path.Combine(Application.dataPath, TargetFolder, "CkScripts");
                var openFile     = EditorUtility.OpenFilePanelWithFilters("Compile Check File", targetFolder, new string[] { "ck files", "ck", "All files", "*" });
                if (!string.IsNullOrWhiteSpace(openFile))
                {
                    Data vmData       = new Data();
                    var  compiler     = new CustomCompiler();
                    bool compileResut = compiler.Compile(openFile, vmData);
                    if (compileResut)
                    {
                        Debug.Log("コンパイルに成功\n" + openFile);
                        Debug.Log(compiler.GetDebugDump());
                    }
                    else
                    {
                        Debug.LogWarning("コンパイルに失敗\n" + openFile);
                        foreach (var errorMessage in compiler.ErrorMessageList)
                        {
                            Debug.LogWarning("コンパイル結果:" + errorMessage);
                        }
                    }
                }
            }
        }
    }