| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- //处理微信小游戏启动逻辑
- import BehaviorBase from '../framework/BehaviorBase';
- import LogicUnitManager from '../framework/LogicUnitManager';
- import DataModelManager from '../framework/DataModelManager';
- import ConstDefine from '../model/ConstDefine';
- import NetConfig from '../net/NetConfig';
- export default class BootBehavior extends BehaviorBase
- {
- constructor()
- {
- super('BootBehavior');
- this._configData = DataModelManager.getModel('ConfigData');
- this._questionInfoModel = DataModelManager.getModel('QuestionInfoModel');
-
- }
- // 加载游戏列表
- _loadGameList()
- {
- let self = this;
- return new Promise(function (resolve, reject) {
- var xhr = new XMLHttpRequest();
- console.log('load remote gamelist file ' + NetConfig.gamelistAddress);
- xhr["open"]('GET', NetConfig.gamelistAddress);
- xhr["onload"] = function () {
- if (xhr["status"] == 200) {
- resolve(JSON.parse(xhr["response"]));
- } else {
- reject(Error(xhr["statusText"]));
- }
- };
- xhr["onerror"] = function () {
- reject(Error(xhr["statusText"]));
- };
- xhr["send"]();
- })
- .catch(function(err)
- {
- console.log('load remote gamelist file failed');
- var config = {"code":0,"msg":null,"data":{"valid":true,"downloadurl":"http://47.92.175.96:90/download/","clientversion":"0","resversion":"0","ios_url":"","wxLogon":0,"isOpenCard":0,"gamelist":[{"KindID":"200","KindName":"斗地主","TypeID":"0","ModuleName":"qipai.land","ClientVersion":"101122049","ResVersion":"0","SortID":"0","KindMark":"3"},{"KindID":"389","KindName":"红中麻将","TypeID":"0","ModuleName":"yule.sparrowhz","ClientVersion":"101122049","ResVersion":"0","SortID":"0","KindMark":"3"}]}};
- return config;
- // return new Promise(function(resolve,reject){
- // console.log('now load local config file');
- // cc.loader.loadRes(NetConfig.localConfigAddress,function(err,json){
- // if(err)
- // {
- // console.log('load local config file '+ NetConfig.localConfigAddress + "failed,err=" + err.string);
- // reject(new Error('load local config file failed'));
- // }
- // else
- // {
- // console.log('load local config file success');
- // resolve(json);
- // }
- // });
- // });
- }).then(function(cfgObj)
- {
- console.log("gamelist:" + JSON.stringify(cfgObj))
- self._configData.setGameListData(cfgObj);
- }).catch(function(err)
- {
- console.log('load gamelist err');
- throw err;
- });
- }
- //加载游戏配置
- _loadCfg()
- {
- let self = this;
- return new Promise(function (resolve, reject) {
- var xhr = new XMLHttpRequest();
- console.log('load remote config file ' + NetConfig.configAddress);
- xhr["open"]('GET', NetConfig.configAddress);
- xhr["onload"] = function () {
- if (xhr["status"] == 200) {
- resolve(JSON.parse(xhr["response"]));
- } else {
- reject(Error(xhr["statusText"]));
- }
- };
- xhr["onerror"] = function () {
- reject(Error(xhr["statusText"]));
- };
- xhr["send"]();
- })
- .catch(function(err)
- {
- console.log('load remote config file failed');
- return new Promise(function(resolve,reject){
- console.log('now load local config file');
- cc.loader.loadRes(NetConfig.localConfigAddress,function(err,json){
- if(err)
- {
- console.log('load local config file '+ NetConfig.localConfigAddress + "failed,err=" + err.string);
- reject(new Error('load local config file failed'));
- }
- else
- {
- console.log('load local config file success');
- resolve(json);
- }
- });
- });
- }).then(function(cfgObj)
- {
- self._configData.setConfigDataObject(cfgObj);
- }).catch(function(err)
- {
- console.log('load cfg err');
- throw err;
- });
-
- }
- //加载游戏题目分类配置
- _loadLevelCfg()
- {
- let self = this;
- return new Promise(function (resolve, reject) {
- var xhr = new XMLHttpRequest();
- console.log('load level remote config file ' + NetConfig.remoteQuestionLevelAddress);
- xhr["open"]('GET', NetConfig.remoteQuestionLevelAddress);
- xhr["onload"] = function () {
- if (xhr["status"] == 200) {
- resolve(JSON.parse(xhr["response"]));
- } else {
- reject(Error(xhr["statusText"]));
- }
- };
- xhr["onerror"] = function () {
- reject(Error(xhr["statusText"]));
- };
- xhr["send"]();
- })
- .catch(function(err)
- {
- console.log('load remote level config file failed');
- return new Promise(function(resolve,reject){
- console.log('now load local config file');
- cc.loader.loadRes(NetConfig.localQuestionLevelAddress,function(err,json){
- if(err)
- {
- console.log('load level local config file '+ NetConfig.localQuestionLevelAddress + "failed,err=" + err.string);
- reject(new Error('load level local config file failed'));
- }
- else
- {
- console.log('load level local config file success');
- resolve(json);
- }
- });
- });
- }).then(function(cfgObj)
- {
- self._questionInfoModel.setLevelData(cfgObj);
- }).catch(function(err)
- {
- console.log('load level cfg err');
- throw err;
- });
-
- }
-
- //打开微信小游戏界面上三个点里面的转发选项
- _openShareOption()
- {
- window["wx"]["onShareAppMessage"]((function () {
- this._wxUserInfo = DataModelManager.getModel('PlayerInfoModel').getSelfWXPlayerInfo();
- var query = 'method=' + ConstDefine.MenuShareMessage.shareType + '&wxPlayerInfo=' + JSON.stringify( this._wxUserInfo);
- console.log("onShareAppMessage query:" + query);
- return {
- "title": ConstDefine.MenuShareMessage.title,
- "imageUrl": ConstDefine.MenuShareMessage.url,
- "query": query,
- "success": function (res) {
- console.log("onShareAppMessage succ");
- },
- "fail": function () {
- console.log("onShareAppMessage fail");
- },
- "complete": function() {
- console.log("onShareAppMessage complete complete");
- }
- }
- }).bind(this));
-
- window["wx"]["showShareMenu"]({
- "withShareTicket": true,
- "success": function () {
- console.log("showShareMenu success");
- }
- });
- window["wx"]["onShow"]((function (res) {
- let urlParams = {};
- let query = res["query"] || {};
- urlParams["scene"] = parseInt(res["scene"]) || 0;
- console.log('res["scene"]:' + parseInt(res["scene"]) || 0);
- urlParams["shareTicket"] = res["shareTicket"];
- console.log('res["shareTicket"]:' + res["shareTicket"]);
-
- urlParams["query"] = res["query"];
- if(query.method != undefined && query.method!=null)
- {
- console.log('urlParams = ' + JSON.stringify(urlParams));
- DataModelManager.getModel('BootOptionData').setBootOptionData(urlParams);
- let loginLogic = LogicUnitManager.getBehavior('LoginBehavior');
- if(loginLogic)
- {
- loginLogic.checkBoot();
- loginLogic.checkGroupRank();
- }
- }
- }).bind(this));
- return Promise.resolve(0);
- }
- _urlParamStr(paramStr, param, decode) {
- if (!paramStr) {
- return;
- }
- decode = decode || true;
- var parts = paramStr.split('&');
- for (var i = 0; i < parts.length; i++) {
- var nv = parts[i].split('=');
- if (!nv[0]) continue;
- param[nv[0]] = nv[1] ? decode ? decodeURIComponent(nv[1]) : nv[1] : true;
- }
- }
- _getQueryFromUrl(url) {
- if (!url) {
- return "";
- }
- var queryPos = url.indexOf("?");
- return queryPos !== -1 ? url.substr(queryPos + 1) : "";
- };
- //分析微信小游戏启动参数
- _parserWechatGameBootOption()
- {
- let optionData = window["wx"]["getLaunchOptionsSync"]();
-
- if(optionData)
- {
- let urlParams = {};
- let query = optionData["query"] || {};
-
- console.log('optionData = ' + JSON.stringify(optionData));
- let queryQRCode = {};
- let paramQRCode = query["q"];
- console.log("paramQRCode:" + paramQRCode);
-
- urlParams["scene"] = parseInt(optionData["scene"]) || 0;
- console.log('optionData["scene"]:' + parseInt(optionData["scene"]) || 0)
- urlParams["shareTicket"] = optionData["shareTicket"];
- console.log('optionData["shareTicket"]:' + optionData["shareTicket"])
-
- urlParams["contextTicket"] = optionData["contextTicket"];
- console.log('optionData["contextTicket"]:' + optionData["contextTicket"])
-
- urlParams["query"] = optionData["query"];
- console.log('urlParams = ' + JSON.stringify(urlParams));
- //console.log('optionData[]query=' + tsdk.objectInspector(optionData["query"]));
- DataModelManager.getModel('BootOptionData').setBootOptionData(urlParams);
- }
-
- return Promise.resolve(0);
- }
- onBoot()
- {
-
- //this._loadCfg();
- //this._loadLevelCfg();
- // this._loadGameList()
- console.log('BootBehavior onBoot Call');
- if(CC_WECHATGAME)
- {
- //return this._loadCfg().then((function(ret){
- return Promise.all([this._parserWechatGameBootOption(),this._openShareOption()]);
- // }).bind(this)).catch(function(err){
- // console.log('error ouccur');
- // });
-
- }
- // else
- // {
- // return Promise.reject(Error('BootBehavior boot failed,because it is not in wetchatgame'));
- // }
- }
- }
- window['onGameBoot'] = function()
- {
- let logic = LogicUnitManager.getBehavior('BootBehavior');
- console.log('window onGameBoot');
- if(logic)
- {
- return logic.onBoot();
- }
- else
- {
- return Promise.reject(Error('onGameBoot,BootBehavior is null'));
- }
- };
|