using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

namespace MJGameSDK.Editor
{
    /// <summary>
    /// 检测到 Steamworks.NET 插件时，自动添加编译符号。
    /// Mac/Linux 编辑器需 STEAMWORKS_LIN_OSX，Windows 编辑器需 STEAMWORKS_WIN。
    /// </summary>
    [InitializeOnLoad]
    public static class MJGameSteamworksSetup
    {
        private const string SteamworksPath = "Assets/MJGameSDK/Plugins/Steamworks.NET/Runtime/Steam.cs";

        static MJGameSteamworksSetup()
        {
            if (!System.IO.File.Exists(SteamworksPath))
                return;

            AddDefineSymbols();
        }

        [MenuItem("MJGameSDK/Setup Steamworks.NET Defines")]
        public static void SetupDefinesMenu()
        {
            AddDefineSymbols();
            Debug.Log("[MJGameSDK] Steamworks.NET define symbols updated.");
        }

        private static void AddDefineSymbols()
        {
            var target = EditorUserBuildSettings.selectedBuildTargetGroup;
            var current = PlayerSettings.GetScriptingDefineSymbolsForGroup(target);
            var defines = new HashSet<string>(current.Split(';'));

            defines.Add("STEAMWORKS_NET");

#if UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX
            defines.Add("STEAMWORKS_LIN_OSX");
#elif UNITY_EDITOR_WIN
            defines.Add("STEAMWORKS_WIN");
#endif

            var updated = string.Join(";", defines);
            if (updated != current)
                PlayerSettings.SetScriptingDefineSymbolsForGroup(target, updated);
        }
    }
}
