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

namespace BansheeGz.BGDatabase.Editor
{
    /// <summary>
    /// If database asset is saved with JSON format, switches it to binary format
    /// </summary>
    public class BGDatabaseSwitchFormatOnPreBuild : IPreprocessBuildWithReport
    {
        public static BGAddonSettings.FormatEnum? OriginalFormat;

        public int callbackOrder => 0;

        public void OnPreprocessBuild(BuildReport report)
        {
            OriginalFormat = null;
            if (!BGRepo.DefaultRepoLoaded) BGRepo.Load();
            if (!BGRepo.Ok) Debug.Log("Warning! Can not switch database format from JSON to binary, cause database can not be loaded!");
            else
            {
                var addon = BGRepo.I.Addons.Get<BGAddonSettings>();
                if (addon == null || addon.Format == BGAddonSettings.FormatEnum.Binary) return;
                var originalFormat = addon.Format;
                addon.Format = BGAddonSettings.FormatEnum.Binary;
                BGRepoSaver.SaveAndMarkAsSaved();
                OriginalFormat = originalFormat;
            }
        }
    }
}