using UnityEngine;
using UnityEngine.Serialization;

namespace IGP.UnitySDK
{
    /// <summary>
    /// IGP SDK 配置资源
    /// </summary>
    [CreateAssetMenu(fileName = "IGPConfig", menuName = "IGP/Config", order = 0)]
    public class IGPConfig : ScriptableObject
    {
        [Header("SDK")]
        [Tooltip("SDK 连接的桌面端环境。DEV 连接 IndieSpark，PROD 连接 IndieGamesPass。正式发布请保持 PROD。")]
        public IGPSDKEnvironment sdkEnvironment = IGPSDKEnvironment.PROD;

        [Header("Hosted Runtime")]
        [Tooltip("可选。心跳包发送间隔（秒）；不填时使用默认值。")]
        [HideInInspector]
        public float heartbeatInterval = 30f;

        [Tooltip("可选。是否按启动信息自动接入已分配房间。")]
        [HideInInspector]
        public bool autoConnect = false;

        [Header("Desktop Session")]
        [Tooltip("必填。用于识别当前游戏并附着 desktop 能力。")]
        public int appId = 0;

        [Tooltip("可选。启动时是否自动尝试附着 desktop session。")]
        [HideInInspector]
        public bool desktopSessionAutoAttach = true;

        [Tooltip("可选。Desktop session 管道地址；留空时使用 SDK 默认值。")]
        [HideInInspector]
        public string desktopPipeEndpoint = string.Empty;

        [HideInInspector]
        [FormerlySerializedAs("desktopExecutablePathOverride")]
        public string desktopExecutablePathDebugOverride = string.Empty;

        [Tooltip("可选。覆盖 desktop 启动命令，仅用于特殊发行形态或调试。")]
        [HideInInspector]
        public string desktopLaunchCommand = string.Empty;
    }
}
