using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using RPGCore.Core; using RPGCore.Core.Objects; using RPGCoreCommon.Helpers; using RPGCoreCommon.Helpers.CustomTypes; using UnityEditor; using UnityEditor.SceneManagement; using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements; namespace RPGCore.Editor.CoreManager { internal class DashboardWindow : EditorWindow { [SerializeField] private VisualTreeAsset _visualTreeAsset; // CONST private const string IsFirstTimeOpenKey = "TheVVaS.RPGCore.isFirstTimeOpen"; private const string PipeStart = "├─"; private const string PipeGo = "│\u2007\u2007"; private const string PipeEnd = "└─"; private const string PipeNone = "\u2007\u2007\u2007"; // CACHE - check CreateCache() private static Type[] _moduleTypes; private static Type[] _objectTypes; private static Dictionary> _objectTypesMap; private static Dictionary _moduleMonoScripts; // TAB - VERIFY private Button _verifyCheckButton; private Button _verifyFixButton; private Button _verifyClearButton; private MultiColumnListView _verifyListMultiColumnListView; private List _validations; // TAB - MODULES private ToolbarSearchField _modulesFilterSearchFiled; private ScrollView _modulesListScrollView; // TAB - CONFIG private PropertyField _configVerifyPathsProperty; [InitializeOnLoadMethod] private static void OnEditorLoad() { var isFirstTimeOpen = EditorPrefs.GetBool(IsFirstTimeOpenKey, true); if (!isFirstTimeOpen) return; ShowDashboard(); EditorPrefs.SetBool(IsFirstTimeOpenKey, false); } [MenuItem("TheVVaS/RPGCore/Dashboard", priority = -1)] public static void ShowDashboard() { var window = GetWindow(); window.titleContent = new GUIContent("RPGCore Dashboard"); window.Show(); } private void CreateGUI() { CreateCache(); UpdateConfigModules(); _visualTreeAsset.CloneTree(rootVisualElement); _verifyCheckButton = rootVisualElement.Q