using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;

namespace Gyvr.Mythril2D
{
    public static class SceneUtil
    {
        public static IEnumerable<string> GetAllScenesInBuildSettings()
        {
            return EditorBuildSettings.scenes.Select(s => Path.GetFileNameWithoutExtension(s.path));
        }

        public static IEnumerable<string> GetAllScenesInAssetDatabase()
        {
            return AssetDatabase.FindAssets("t:scene").Select(AssetDatabase.GUIDToAssetPath);
        }

        public static IEnumerable<string> GetScenesInFolder(string folder)
        {
            return AssetDatabase.FindAssets("t:scene", new[] { folder }).Select(AssetDatabase.GUIDToAssetPath);
        }

        public static bool IsSceneInBuildSettings(string path)
        {
            return EditorBuildSettings.scenes.Any(s => s.path == path);
        }

        public static string GetSceneFolder(string path) => Path.GetDirectoryName(path);

        public static Dictionary<string, List<string>> GroupByFolder()
        {
            var result = new Dictionary<string, List<string>>();
            foreach (var path in GetAllScenesInAssetDatabase())
            {
                var folder = GetSceneFolder(path) ?? "Root";
                if (!result.ContainsKey(folder))
                    result[folder] = new List<string>();
                result[folder].Add(path);
            }
            return result;
        }
    }
}
