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); }
/// <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); }
/// <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); } }
/// <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); }