예제 #1
0
    private static void LoadReportData(bool p_clearCurrent = false)
    {
        if (_dictUserReports == null || p_clearCurrent == true)
        {
            _dictUserReports = new Dictionary <string, UserReportData>();
        }

        string[] __arrayFiles = Directory.GetFiles(Application.dataPath + "/VoxReports");

        string __jsonContent;

        for (int i = 0; i < __arrayFiles.Length; i++)
        {
            if (__arrayFiles[i].Contains(".meta"))
            {
                continue;
            }

            __jsonContent = string.Empty;

            string __fileName = __arrayFiles[i].Replace(Application.dataPath + "/VoxReports", "").Replace(".json", "");

            using (StreamReader reader = new StreamReader(__arrayFiles[i]))
            {
                __jsonContent = reader.ReadToEnd();
            }

            Report __report = null;

            if (__jsonContent != string.Empty)
            {
                __report = (Report)JsonUtility.FromJson(__jsonContent, typeof(Report));
            }

            if (__report != null)
            {
                Action __addReport = () =>
                {
                    if (_dictUserReports[__report.user].listReportData.Exists(x => x.id == __report.id) == false)
                    {
                        List <Texture2D> __listScreenshoots = LoadScreenshots(__report.listScreenShots);
                        ReportData       __reportData       = new ReportData(__report.id, __report.user, __report.title, __report.description, __arrayFiles[i], __listScreenshoots);
                        _dictUserReports[__report.user].listReportData.Add(__reportData);
                    }
                };

                if (_dictUserReports.ContainsKey(__report.user) == true)
                {
                    __addReport();
                }
                else
                {
                    UserReportData __reportData = new UserReportData();
                    _dictUserReports.Add(__report.user, __reportData);
                    __addReport();
                }
            }
        }
    }
예제 #2
0
    private void DrawUserReports()
    {
        GUILayout.Space(10f);

        EditorGUILayout.BeginVertical();
        {
            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(10f);
                GUILayout.Label("<b><size=12><color=#000000>Report Manager</color></size></b>", _styleHtml);
                GUILayout.FlexibleSpace();
                if (GUILayout.Button(new GUIContent("Force Reload"), GUILayout.Width(90f)))
                {
                    LoadReportData(true);
                }
            }
            EditorGUILayout.EndHorizontal();

            GUILayout.Space(4f);
        }
        EditorGUILayout.EndVertical();

        _scrollVertical = EditorGUILayout.BeginScrollView(_scrollVertical, GUIStyle.none, GUI.skin.verticalScrollbar);

        if (_dictUserReports.Keys.Count == 0)
        {
            GUILayout.Label("No Reports To Display");
        }
        else
        {
            foreach (string __user in _dictUserReports.Keys)
            {
                UserReportData __userReportData = _dictUserReports[__user];

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        __userReportData.isUnfolded = EditorGUILayout.Foldout(__userReportData.isUnfolded, string.Empty);
                        GUILayout.Space(-40);
                        GUILayout.Label("<b><size=12><color=#000000> " + __user + " </color></size></b>", _styleHtml);
                        GUILayout.FlexibleSpace();
                    }
                    EditorGUILayout.EndHorizontal();

                    GUILayout.Space(4f);

                    if (__userReportData.isUnfolded)
                    {
                        for (int i = 0; i < __userReportData.listReportData.Count; i++)
                        {
                            GUI.color = (i % 2 == 0) ? new Color(216f / 255f, 216f / 255f, 216f / 255f) : Color.white;

                            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                            {
                                GUI.color = Color.white;
                                ReportData __reportData = __userReportData.listReportData[i];

                                EditorGUILayout.BeginHorizontal();
                                {
                                    __reportData.isUnfolded = EditorGUILayout.Foldout(__reportData.isUnfolded, string.Empty);
                                    GUILayout.Space(-30f);
                                    GUILayout.Label("<size=12>" + __reportData.title + "</size>", _styleHtml);

                                    GUILayout.FlexibleSpace();

                                    if (GUILayout.Button("X", GUILayout.Width(20f)))
                                    {
                                        if (EditorUtility.DisplayDialog("Delete " + __reportData.title, "You're sure you wish to delete this report?", "Yes", "Cancel"))
                                        {
                                            RemoveReportData(__reportData);
                                            return;
                                        }
                                    }
                                }
                                EditorGUILayout.EndHorizontal();

                                GUILayout.Space(4f);

                                if (__reportData.isUnfolded == true)
                                {
                                    GUILayout.Space(10f);
                                    if (__reportData.description != string.Empty)
                                    {
                                        EditorGUILayout.SelectableLabel(__reportData.description);
                                    }

                                    if (__reportData.listScreenshots != null && __reportData.listScreenshots.Count > 0)
                                    {
                                        __reportData.scrollScreenshots = EditorGUILayout.BeginScrollView(__reportData.scrollScreenshots, GUI.skin.horizontalScrollbar, GUIStyle.none);
                                        EditorGUILayout.BeginHorizontal();
                                        {
                                            for (int j = 0; j < __reportData.listScreenshots.Count; j++)
                                            {
                                                GUILayout.Label(new GUIContent(__reportData.listScreenshots[j]), GUILayout.Width((float)__reportData.listScreenshots[j].width), GUILayout.Height((float)__reportData.listScreenshots[j].height));
                                            }
                                        }
                                        EditorGUILayout.EndHorizontal();
                                        EditorGUILayout.EndScrollView();
                                    }
                                }
                            }
                            EditorGUILayout.EndVertical();
                        }
                    }
                }
                EditorGUILayout.EndVertical();
            }
        }

        GUILayout.FlexibleSpace();

        EditorGUILayout.EndScrollView();

        DrawVoxDebuggerInfo();
    }