using System.Runtime.InteropServices;
using UnityEngine;

namespace TyphoonUnitySDK
{
    /// <summary>
    /// unity 调用 js
    /// </summary>
    public class UnityToJs
    {
        [DllImport("__Internal")]
        private static extern void WebMethodCall(string msg);


        [DllImport("__Internal")]
        private static extern string WebMethodGet(string msg);

        //一般方法调用
        private static void Call(string msg)
        {
#if UNITY_EDITOR
            Debug.Log($"## unity call js {msg}");
#else
WebMethodCall(msg);
#endif
        }

        //带返回值的调用
        private static string CallReturn(string msg)
        {
#if UNITY_EDITOR
            Debug.Log($"## unity get js {msg}");
            return msg;
#else
return WebMethodGet(msg);
#endif
        }

        //一般方法调用
        public static void Call(string method, object data)
        {
            var send = new
            {
                method,
                data,
            };
            Call(send.ToXJson());
        }

        //一般方法调用
        public static void Call(SessionItem session)
        {
            var send = new
            {
                session = session.SessionId,
                method = session.MethodName,
                data = session.SendData,
            };
            Call(send.ToXJson());
        }


        // 带返回值的调用
        public static string CallReturn(string method, object input)
        {
            var send = new
            {
                method,
                data = input,
            };
            return CallReturn(send.ToXJson());
        }
    }
}