qqgame-sdk-0.4.2.min.js 16 KB

1
  1. !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.qqgame=t():e.qqgame=t()}(window,function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="1"==i("robot"),r=null!=window.wx;function i(e){var t=location.href;e=e.replace(/[\[\]]/g,"\\$&");var n=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return n?n[2]?decodeURIComponent(n[2].replace(/\+/g," ")):"":null}var a=function(){var e=navigator.userAgent.toLowerCase(),t=e.indexOf("iphone")>-1||e.indexOf("ipad")>-1;return function(){return t}}(),s=function(){var e=navigator.userAgent.toLowerCase().indexOf("android")>-1;return function(){return e}}(),c="localhost"===location.hostname||!!i("qqdebug");r&&(t.isDebug=c=!!window.wxIsDebug);var u={},d=function(){var e="prod",t=navigator.userAgent.toLowerCase().match(/\senv\/([\d])\s/i);if(Array.isArray(t)&&t[1]){var n=parseInt(t[1]);"1"==n?e="test":"2"==n?e="prev":"3"==n&&(e="prod")}return function(){return c?"test":e}}();t.getParam=i,t.isIOS=a,t.isAndroid=s,t.isDebug=c,t.log=function(e){console.log("[QQGame SDK]:",e)},t.isQQGame=function(){return!(!c&&!o)||-1!=navigator.userAgent.toLowerCase().indexOf("qqgame")},t.getUserInfo=function(e){return u[e]?u[e]:null},t.setUserInfo=function e(t){if(Array.isArray(t))t.forEach(function(t){e(t)});else if(t&&t.qqgameid){var n=t.qqgameid;u[n]=t}},t.getDeviceInfo=function(){var e=window.devicePixelRatio||1,t={statusBarHeight:20},n=navigator.userAgent.toLowerCase().match(/StatusBarHeight\/([\d\.]+)/i);if(Array.isArray(n)&&n[1]){var o=parseInt(n[1]);isNaN(o)||(t.statusBarHeight=parseInt(o/e))}return t},t.getEnv=d,t.isWX=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.disableRobotRender=t.isRobotRender=t.robotLevel=t.isRobot=void 0;var o,r=n(0),i="1"==(0,r.getParam)("robot"),a="1"==(0,r.getParam)("render");i&&(t.robotLevel=o=(0,r.getParam)("level"),o&&(t.robotLevel=o=parseInt(o),t.robotLevel=o=isNaN(o)?1:o)),t.isRobot=i,t.robotLevel=o,t.isRobotRender=a,t.disableRobotRender=function(){if(window.cc)try{cc.director._visitScene=cc.renderer.clear=cc.renderer.rendering=function(){}}catch(e){}}},function(e,t,n){"use strict";var o,r,i;r=[],void 0===(i="function"==typeof(o=function(){if("WebSocket"in window)return e.prototype.onopen=function(e){},e.prototype.onclose=function(e){},e.prototype.onconnecting=function(e){},e.prototype.onmessage=function(e){},e.prototype.onerror=function(e){},e.debugAll=!1,e.CONNECTING=WebSocket.CONNECTING,e.OPEN=WebSocket.OPEN,e.CLOSING=WebSocket.CLOSING,e.CLOSED=WebSocket.CLOSED,e;function e(t,n,o){var r={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3,maxReconnectAttempts:100,binaryType:"blob"};for(var i in o||(o={}),r)void 0!==o[i]?this[i]=o[i]:this[i]=r[i];this.url=t,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var a,s=this,c=!1,u=!1,d=document.createElement("div");function f(e,t){var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!1,!1,t),n}d.addEventListener("open",function(e){s.onopen(e)}),d.addEventListener("close",function(e){s.onclose(e)}),d.addEventListener("connecting",function(e){s.onconnecting(e)}),d.addEventListener("message",function(e){s.onmessage(e)}),d.addEventListener("error",function(e){s.onerror(e)}),this.addEventListener=d.addEventListener.bind(d),this.removeEventListener=d.removeEventListener.bind(d),this.dispatchEvent=d.dispatchEvent.bind(d),this.open=function(t){if((a=new WebSocket(s.url,n||[])).binaryType=this.binaryType,t){if(this.maxReconnectAttempts&&this.reconnectAttempts>this.maxReconnectAttempts)return}else d.dispatchEvent(f("connecting")),this.reconnectAttempts=0;(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",s.url);var o=a,r=setTimeout(function(){(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",s.url),u=!0,o.close(),u=!1},s.timeoutInterval);a.onopen=function(n){clearTimeout(r),(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","onopen",s.url),s.protocol=a.protocol,s.readyState=WebSocket.OPEN,s.reconnectAttempts=0;var o=f("open");o.isReconnect=t,t=!1,d.dispatchEvent(o)},a.onclose=function(n){if(clearTimeout(r),a=null,c)s.readyState=WebSocket.CLOSED,d.dispatchEvent(f("close"));else{s.readyState=WebSocket.CONNECTING;var o=f("connecting");o.code=n.code,o.reason=n.reason,o.wasClean=n.wasClean,d.dispatchEvent(o),t||u||((s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","onclose",s.url),d.dispatchEvent(f("close")));var r=s.reconnectInterval*Math.pow(s.reconnectDecay,s.reconnectAttempts);setTimeout(function(){s.reconnectAttempts++,s.open(!0)},r>s.maxReconnectInterval?s.maxReconnectInterval:r)}},a.onmessage=function(t){(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",s.url,t.data);var n=f("message");n.data=t.data,d.dispatchEvent(n)},a.onerror=function(t){(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","onerror",s.url,t),d.dispatchEvent(f("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(t){if(a)return(s.debug||e.debugAll)&&console.debug("ReconnectingWebSocket","send",s.url,t),a.send(t);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(e,t){void 0===e&&(e=1e3),c=!0,a&&a.close(e,t)},this.refresh=function(){a&&a.close()}}})?o.apply(t,r):o)||(e.exports=i)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.invoke=void 0;var o=n(1),r=n(0);t.invoke=function(e,t){var n=JSON.stringify({eID:e,ePara:t});if(o.isRobot)try{window.pvpRequest(n)}catch(e){}else try{(0,r.isAndroid)()?window.qqgame&&window.qqgame.pvpRequest&&window.qqgame.pvpRequest(n):(0,r.isIOS)()&&window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.pvpRequest&&window.webkit.messageHandlers.pvpRequest.postMessage&&window.webkit.messageHandlers.pvpRequest.postMessage(n)}catch(e){}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){u=e.uin,d=e.tableKey,e.frameSvrId,l=e.frameFps,s=e.frameURL,g=e.framePort,c=s+":"+g,e.udpURL,e.udpPort,p=e.cgiPath,e.hallWsConnect,y=e.onMessage||function(){};var t=M(y);return Math.ceil(1e4*Math.random()),0,{},h=-1,S={},w=10,E={},R={},O=parseInt(1e3/l/2),q=100,v=0,-1,!1,0,1,{wsPromise:t,send:P,stop:A,fetch:I,frameMsgHandler:D}};var o,r=n(0),i=n(3),a=n(1);o=n(2);var s,c,u,d,f,l,p,g,m=!1,v=0,y=function(){},b=!a.isRobot&&!r.isDebug,h=(Math.ceil(1e4*Math.random()),-1),S={},w=10,E={},R={},O=parseInt(1e3/l/2),q=100,D=function e(t,n){var o=n.frameIndex;if("number"==typeof o&&!(o-h<1))if(o-h==1){h=o,y(n);var i=h+1;S[i]&&(e(S[i].msgType,S[i].msgData),delete S[i])}else{if((0,r.log)("future",t,o,h,Date.now()),S[o])return;S[o]={msgType:t,msgData:n},function(e,t){var n=Date.now();t=t-e<=q?t:e+q;for(var o=[],r=e;r<t;r++){if(void 0===E[r]&&(E[r]=0),E[r]>w)return;if(R[r]&&n-R[r]<O)return;o.push(r),E[r]++,R[r]=n}I(o)}(h+1,o)}},I=function(e){x({Cmd:"frame_fetch",BackString:"frame_fetch",MsgBody:{session:{tableKey:d},indexArray:e,fps:l}}),(0,r.log)("frame fetch "+JSON.stringify(e))},x=function(e){if(!m){var t="{domain="+s+";cgipath="+p+";cgiquery=uin="+u+";seq="+ ++v+";}",n=""+t.length+t+JSON.stringify(e);0;try{f.send(n)}catch(e){(0,r.log)("send frame msg error: "+JSON.stringify(e))}}},P=(Math.ceil(1e6*Math.random()),function(e){x({Cmd:"frame_transmit",BackString:"frame_transmit",MsgBody:{session:{tableKey:d},frameData:e}})}),A=function(){clearInterval(void 0),(0,r.log)("send frame stop"),x({Cmd:"frame_stop",BackString:"frame_stop",MsgBody:{session:{tableKey:d}}}),f&&f.close&&f.close(),b&&((0,r.log)("recycleUDP"),(0,i.invoke)("recycleUDP")),m=!0};var M=function(e){return new Promise(function(e,t){(f=new o(c)).onopen=function(){m=!1,(0,r.log)("frame ws open"),function(){(0,r.log)("send frame ready");var e={Cmd:"frame_ready",BackString:"frame_ready",MsgBody:{session:{tableKey:d},fps:l}};(0,r.log)(JSON.stringify(e)),x(e)}()},f.onmessage=function(t){var n=t.data,o=(n=JSON.parse(n)).Cmd;if("frame_start"==o)(0,r.log)("framews receive:"+o),e();else if("frame_transmit"==o){if(n.MsgBody&&n.MsgBody.frames&&n.MsgBody.frames[0]){var i=n.MsgBody.frames[0];D("frameDataByTCP",i)}}else(0,r.log)("other cmd: "+o)},f.onclose=function(){(0,r.log)("frame ws close")},f.onerror=function(e){(0,r.log)("frame ws error "+JSON.stringify(e))}})}},function(e,t,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=n(0),i=n(1),a=function(e){return e&&e.__esModule?e:{default:e}}(n(4)),s=n(3);var c,u,d,f,l,p,g,m,v,y=!1,b=5,h=!1,S={};e.exports=function(e){i.isRobot&&(0,i.disableRobotRender)(),e.InitMini=function(e){e};var t;e.invoke=function(t,n){if(!h)if(n=n||{},(0,r.log)("invoke "+t+" "+JSON.stringify(n)),"frameData"!=t){if("gameInit"==t&&(S={},n.openFraming?(b=n.fpsExpect||5,y=!0,n.openFraming=void 0,n.fpsExpect=void 0):y=!1),"showUser"==t&&(n.gameUin||n.qqgameid)){var o=n.gameUin||n.qqgameid,i=(0,r.getUserInfo)(o)||{};n=Object.assign(n,i)}if("gameResult"===t){if(h=!0,n)if(n.result)n.gameType||(n.gameType="COCOS");else if(n.resultDisplay){n.resultDisplay.result==e.RESULT_ESCAPE&&(n.resultDisplay.result=e.RESULT_LOSE);var a=n.resultData;if(n.version=1,Array.isArray(n.resultData)&&2==a.length){var u=[];a.forEach(function(e){var t=e.qqgameid;Object.assign({},e).qqgameid=void 0;var n={groupId:S[t],record:e.record,detail:[e]};u.push(n)}),n.resultData=u}}(0,r.log)("invoke "+t+" "+JSON.stringify(n)),y&&(c.stop(),v&&v.stop())}(0,s.invoke)(t,n)}else c.send(n)},i.isRobot||setInterval(function(){(0,s.invoke)("watchDog")},3e3),e.onMessage=function(e){h=!1,t=e},e.pvpResponse=function(e){"object"!==(void 0===e?"undefined":o(e))&&(e=JSON.parse(e));var n=e.eID,i=e.ePara;if("frameDataByUDP"!=n&&(0,r.log)("pvpResponse:",n,i),"gameReset"!==n&&"gameEnd"!==n||(h=!1),!h)if("frameDataByUDP"!=n){if((0,r.log)("onMessage "+JSON.stringify(e)),"channelCreated"==n){var s=i.playerInfos;Array.isArray(s)&&2==s.length&&(s.forEach(function(e){e.qqgameid&&e.groupId&&(S[e.qqgameid]=e.groupId)}),(0,r.log)("qqgameIdToGroupId, "+JSON.stringify(S))),(0,r.setUserInfo)(s)}if("channelCreating"!=n)return"channelCreated"==n&&y?(u=i.playerInfos[0].qqgameid,void(c=(0,a.default)({uin:u,frameFps:b,tableKey:m,cgiPath:g,frameURL:d,framePort:f,udpURL:l,udpPort:p,hallWsConnect:v,onMessage:function(e){t("frameData",e)}})).wsPromise.then(function(){t(n,i)})):void t(n,i);y&&((0,r.log)("sdk frame init:",i),m=i.tableKey,g=i.url.transmitSvr.cgipath,d=i.url.transmitSvr.domain,f=i.url.transmitSvr.port,l=i.url.transmitSvr.udpip,p=i.url.transmitSvr.udpport)}else{var w=JSON.parse(i);"frame_transmit"==w.Cmd?Array.isArray(w.MsgBody.frames)&&w.MsgBody.frames.forEach(function(e){c.frameMsgHandler("frameDataByUDP",e)}):(0,r.log)("frameDataByUDP:",JSON.stringify(e))}},e.setDebugAppid=function(){},e.setDebugGameType=function(){}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(document&&document.body&&e){var t=document.createElement("div");Object.assign(t.style,{position:"fixed",overflow:"auto",top:0,right:0,bottom:0,left:0,height:"100%",zIndex:999,outline:0,display:"none",alignItems:"center",justifyContent:"center",transform:"translateZ(1px)",backgroundColor:"rgba(0, 0, 0, 0.4)"});return t.innerHTML='\n <div style="width: 270px; position: relative;">\n <div style="border-radius: 7px; padding-top: 15px; position: relative; background-color: #fff; border: 0; background-clip: padding-box; text-align: center; overflow: hidden;">\n <div style="padding: 6px 15px 15px; ">\n <div style="margin: 0; font-size: 18px; line-height: 1; color: #000; text-align: center;">\n 游戏结束,是否再来一局?\n </div>\n </div>\n <div>\n <div style="position: relative; border-top: 1PX solid #ddd; display: flex;">\n <a style="color: #000; font-size: 18px; height: 50px; line-height: 50px; flex: 1;">\n 取消\n </a>\n <a style="color: #108ee9;; font-size: 18px; height: 50px; line-height: 50px; flex: 1; position: relative; border-left: 1px solid #ddd;">\n 确定\n </a>\n </div>\n </div>\n </div>\n </div>\n ',t.querySelectorAll("a").forEach(function(n,o){n.onclick=function(n){return function(){t.style.display="none",1==n&&e.pvpResponse({eID:"gameReset"})}}(o)}),document.body.appendChild(t),t}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getGameType=t.setDebugGameType=t.setDebugAppid=t.getQQ=t.getAppid=void 0;var o,r=n(0);var i="1v1";t.getAppid=function(){if(o)return o;var e=(0,r.getParam)("appid");return e},t.getQQ=function(){var e=Math.ceil(1e9*Math.random()+1e4);return(0,r.log)("qq "+e),e},t.setDebugAppid=function(e){o=e},t.setDebugGameType=function(e){i=e},t.getGameType=function(){return i}},function(e,t,n){"use strict";var o,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(0),a=n(7),s=u(n(4)),c=u(n(6));function u(e){return e&&e.__esModule?e:{default:e}}o=n(2),e.exports=function(e){var t,n,u,d,f,l,p=!1,g=(0,c.default)(e);e.InitMini=function(e){e},e.setDebugAppid=a.setDebugAppid,e.setDebugGameType=a.setDebugGameType,e.invoke=function(e,o){p||(o=o||{},(0,i.log)("invoke "+e+" "+JSON.stringify(o)),"frameData"!=e?m.then(function(){var r={eID:e,ePara:o};"gameInit"==e&&(o.appid=(0,a.getAppid)(),(0,i.log)("appid "+o.appid),o.qq=n=n||(0,a.getQQ)(),o.gameType=(0,a.getGameType)(),o.openFraming&&(u=!0,d=o.fpsExpect,o.openFraming=void 0,o.fpsExpect=void 0)),"gameResult"!=e&&"gameExit"!=e||(p=!0,u&&t.stop(),g&&(g.style.display="flex")),l.send(JSON.stringify(r))}):t.send(o))},e.onMessage=function(e){f=e};var m=new Promise(function(r,a){(l=new o("wss://test.go.minigame.qq.com/h5pvpservice/")).onopen=function(){r(),(0,i.log)("ws open")},l.onmessage=function(o){var r=o.data,i=(r=JSON.parse(r)).eID;if(u){if("session"==i){var a=r.ePara.tableKey,c=r.ePara.frameSvrId,f="wss://testmobiletrans.minigame.qq.com",l=443;return r.ePara.url&&r.ePara.url.transmitSvr&&(f=r.ePara.url.transmitSvr.domain||"wss://testmobiletrans.minigame.qq.com",l=r.ePara.url.transmitSvr.port||443),t=(0,s.default)({uin:n,tableKey:a,frameSvrId:c,frameFps:d,frameURL:f,framePort:l,cgiPath:"",onMessage:function(t){e.pvpResponse({eID:"frameData",ePara:t})}}),void console.log(t)}if("channelCreated"==i)return console.log("onmessage channelCreated"),void t.wsPromise.then(function(){console.log("onmessage channelCreated then"),e.pvpResponse(r)})}"leave"==i&&(p=!0,u&&t.stop()),e.pvpResponse(r)},l.onerror=function(e){(0,i.log)("ws error "+JSON.stringify(e))}});e.pvpResponse=function(e){if("gameReset"===e.eID&&(p=!1),!p){"object"!==(void 0===e?"undefined":r(e))&&(e=JSON.parse(e));var t=e.eID,n=e.ePara;"frameData"!==t&&(0,i.log)("onMessage "+JSON.stringify(e)),f(t,n)}},window.addEventListener("beforeunload",function(){p||e.invoke("gameExit")})}},function(e,t,n){"use strict";var o,r=n(0),i=n(1);o=r.isDebug?n(8):n(5);var a=window.qqgame=window.qqgame||{};a.invoke||(a.version="0.4.2",a.isWebSDKOverloadRobotFunction=!0,(0,r.log)("version "+a.version),(0,r.log)("WiKi https://qqgame.qq.com/h5wiki/pvp-sdk"),a.isQQGame=r.isQQGame,a.getDeviceInfo=r.getDeviceInfo,a.isAndroid=r.isAndroid,a.isIOS=r.isIOS,a.getEnv=r.getEnv,a.isRobot=i.isRobot,a.robotLevel=i.robotLevel,a.RESULT_LOSE="lose",a.RESULT_EQUAL="equal",a.RESULT_WIN="win",a.RESULT_ESCAPE="escape",a.GAME_TYPE_1V1="1v1",a.GAME_TYPE_2V2="2v2",a.GAME_TYPE_4P="4p",o(a)),e.exports=a}])});