using UnityEngine;
using UnityEditor;
using System.IO;
using System.Linq;

namespace M2DVisualQuestEditor
{
    public static class ScriptLineCounter
    {
        [MenuItem("Tools/M2D/Count Lines in Mythril2D Scripts")]
        public static void CountLinesInMythril2D()
        {
            string mythril2DPath = Path.Combine(Application.dataPath, "Mythril2D");
            
            if (!Directory.Exists(mythril2DPath))
            {
                Debug.LogWarning($"Mythril2D folder not found at: {mythril2DPath}");
                return;
            }
            
            var csFiles = Directory.GetFiles(mythril2DPath, "*.cs", SearchOption.AllDirectories);
            
            int totalLines = 0;
            int totalFiles = 0;
            int codeLines = 0;
            
            foreach (var file in csFiles)
            {
                var lines = File.ReadAllLines(file);
                totalLines += lines.Length;
                totalFiles++;
                
                // Count non-empty, non-comment lines
                foreach (var line in lines)
                {
                    string trimmed = line.Trim();
                    if (!string.IsNullOrEmpty(trimmed) && !trimmed.StartsWith("//") && !trimmed.StartsWith("/*") && !trimmed.StartsWith("*"))
                    {
                        codeLines++;
                    }
                }
            }
            
            Debug.Log($"=== Mythril2D Script Line Count ===\n" +
                      $"Total Files: {totalFiles}\n" +
                      $"Total Lines: {totalLines:N0}\n" +
                      $"Code Lines (non-empty, non-comment): {codeLines:N0}");
        }
    }
}
