using System.IO; using BriarQueen.Data.IO; using UnityEditor; using UnityEngine; namespace BriarQueen.Editor.Windows { public class FilePathsWindow : EditorWindow { [MenuItem("Briar Queen/IO/Open Persistent Data/Save Data")] private static void OpenSaveDataFolder() { OpenFolder(FilePaths.SaveDataFolder); } [MenuItem("Briar Queen/IO/Open Persistent Data/Save Backups")] private static void OpenSaveBackupFolder() { OpenFolder(FilePaths.SaveBackupDataFolder); } [MenuItem("Briar Queen/IO/Open Persistent Data/Configs")] private static void OpenConfigFolder() { OpenFolder(FilePaths.ConfigFolder); } [MenuItem("Briar Queen/IO/Open Persistent Data/All Paths Window")] private static void ShowWindow() { var window = GetWindow("Persistent Data Paths"); window.minSize = new Vector2(520f, 180f); } private void OnGUI() { GUILayout.Space(10f); EditorGUILayout.LabelField("BriarQueen Persistent Data Paths", EditorStyles.boldLabel); GUILayout.Space(8f); DrawPathRow("Save Data", FilePaths.SaveDataFolder); DrawPathRow("Save Backups", FilePaths.SaveBackupDataFolder); DrawPathRow("Configs", FilePaths.ConfigFolder); GUILayout.Space(12f); if (GUILayout.Button("Open Application Persistent Data Root", GUILayout.Height(28f))) { OpenFolder(Application.persistentDataPath); } } private static void DrawPathRow(string label, string path) { using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { EditorGUILayout.LabelField(label, EditorStyles.boldLabel); EditorGUILayout.SelectableLabel(path, EditorStyles.textField, GUILayout.Height(18f)); using (new EditorGUILayout.HorizontalScope()) { if (GUILayout.Button("Open", GUILayout.Height(24f))) { OpenFolder(path); } if (GUILayout.Button("Copy Path", GUILayout.Height(24f))) { EditorGUIUtility.systemCopyBuffer = path; Debug.Log($"Copied path: {path}"); } } } } private static void OpenFolder(string folderPath) { if (string.IsNullOrWhiteSpace(folderPath)) { Debug.LogError("Cannot open folder: path is null or empty."); return; } if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); Debug.Log($"Created folder: {folderPath}"); } EditorUtility.RevealInFinder(folderPath); } } }