Exemplo n.º 1
0
    public LTTask <ErrorCode> Connect(IPEndPoint remoteEndPoint)
    {
        this.tcs            = new LTTaskCompletionSource <ErrorCode>();
        this.IsConnected    = false;
        this.RemoteEndPoint = remoteEndPoint;
        uint conv = ConvGenerator.Conv();

        Log.Debug($"connect:new conv:{conv}");

        //#if IPV4
        this.udpClient = new UdpClient(new IPEndPoint(IPAddress.Any, 0));
        //#elif IPV6
        //        this.udpClient = new UdpClient(new IPEndPoint(IPAddress.IPv6Any, 0));
        //#endif
        this.udpClient.BeginReceive(OnBeginReceive, null);
        this.channel = new KChannel(conv, udpClient, remoteEndPoint)
        {
            Name = "Client"
        };
        this.channel.OnReadCallback  = OnKcpRead;
        this.channel.OnErrorCallback = OnKcpError;

        //立刻发送连接请求
        byte     hid = 1;
        IMessage msg = MessagesFactory.Connect(hid);

        Send(msg.Encode());

        this.monoDriver.StartCoroutine(SimulationRecvConnected());
        return(this.tcs.Task);
    }
Exemplo n.º 2
0
        /// <inheritdoc />
        public LTTask <Sprite> GetLinkQRCodeAsync(int width = 188, int height = 188)
        {
            string url = "";

            if (m_BridgeClass != null)
            {
                url = m_BridgeClass.CallStatic <string>("getQRcodePathByIP", width, height, "LinkQRCode.png");
            }

            LTLog.Debug($"url:{url}");
            LTTaskCompletionSource <Sprite> tcs = LTTaskCompletionSource.New <Sprite>();

            m_MonoDriver.StartCoroutine(InnerLoadGamepadQRCode(tcs, url));
            return(tcs.Task);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 加载手柄二维码
        /// </summary>
        /// <param name="tcs">任务</param>
        /// <param name="url">二维码地址</param>
        /// <returns></returns>
        private IEnumerator InnerLoadGamepadQRCode(LTTaskCompletionSource <Sprite> tcs, string url)
        {
            UnityWebRequest request = UnityWebRequest.Get($"file://{url}");

            request.downloadHandler = new DownloadHandlerTexture(true);
            yield return(request.SendWebRequest());

            if (request.downloadHandler.isDone)
            {
                Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
                tcs.SetResult(Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)));
            }
            else if (request.isNetworkError || request.isHttpError)
            {
                m_Log.Error("General RQCode Error:" + request.error);
                tcs.SetResult(null);
            }
        }
Exemplo n.º 4
0
        /// <inheritdoc />
        public LTTask <PaymentResult> PaymentAsync(string payid)
        {
            m_PaymentTcs = LTTaskCompletionSource.New <PaymentResult>();

            if (m_BridgeClass == null)
            {
                //如果未接sdk,则模拟一个支付成功的结果
                PaymentResult result = new PaymentResult();
                result.code  = "100";
                result.payid = payid;
                result.text  = "订购成功.";

                m_PaymentTcs.SetResult(result);
            }
            else
            {
                m_BridgeClass.CallStatic("payment", payid, "");
            }

            return(m_PaymentTcs.Task);
        }