using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using System.IO;

public class BuildVersionIncrementer : IPreprocessBuildWithReport
{
    public int callbackOrder => 0;
    
    private const string VERSION_FILE_PATH = "Assets/Resources/buildVersion.txt";
    private const string RESOURCES_PATH = "Assets/Resources";
    
    public void OnPreprocessBuild(BuildReport report)
    {
        // Создаем директорию Resources если её нет
        if (!Directory.Exists(RESOURCES_PATH))
        {
            Directory.CreateDirectory(RESOURCES_PATH);
            Debug.Log($"Created Resources directory at {RESOURCES_PATH}");
        }

        int currentBuild = 1;
        
        // Читаем текущий номер сборки если файл существует
        if (File.Exists(VERSION_FILE_PATH))
        {
            string versionStr = File.ReadAllText(VERSION_FILE_PATH);
            if (int.TryParse(versionStr, out int savedBuild))
            {
                currentBuild = savedBuild;
                Debug.Log($"Current build number: {currentBuild}");
            }
            else
            {
                Debug.LogWarning($"Failed to parse build number from file: {versionStr}");
            }
        }
        else
        {
            Debug.Log("No previous build number found, starting from 1");
        }
        
        // Увеличиваем номер сборки
        currentBuild++;
        
        // Записываем новый номер
        File.WriteAllText(VERSION_FILE_PATH, currentBuild.ToString());
        Debug.Log($"Build number incremented to: {currentBuild}");
        
        // Обновляем ассеты чтобы Unity подхватил изменения
        AssetDatabase.Refresh();
    }
}
