471 lines
15 KiB
JavaScript
471 lines
15 KiB
JavaScript
|
||
class GamePlatform {
|
||
|
||
constructor() {
|
||
this.name = '7103';
|
||
this.version = "1.0.7";
|
||
this.jcGameId = 1009;
|
||
this.jcChannelId = 7103;
|
||
this.isDev = false;
|
||
this.orderIdUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=Pay&a=preOrder`;
|
||
this.checkRegRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=checkRegisterReward`;
|
||
this.regRewardUrl = `https://game1009proxy${this.isDev ? '-test':''}.kingsome.cn/webapp/index.php?c=GoProxy&a=registerReward`;
|
||
this.svrListUrl = `https://game1009gate${this.isDev ? '-test':''}.kingsome.cn/wjtxgate/common/login.aspx?pid=${this.jcChannelId}`;
|
||
this.wssHost = `game1009game${this.isDev ? '-test' : ''}.kingsome.cn`;
|
||
this.other = new GamePlatformOther();
|
||
}
|
||
|
||
login() {
|
||
return new Promise((resolve, reject) => {
|
||
jc.init({
|
||
channelid: this.jcChannelId,
|
||
gameid: this.jcGameId,
|
||
isoffical: !this.isDev,
|
||
});
|
||
console.log('jcfw init finished 2');
|
||
jc.loginUser({
|
||
success: function(res) {
|
||
console.log('登录成功', JSON.stringify(res));
|
||
wxUserData.open_id = res.openid;
|
||
wxUserData.nick_name = res.nickname;
|
||
wxUserData.avatar_url = res.avatar_url;
|
||
wxUserData.gender = res.sex;
|
||
platform.code = res.openid;
|
||
//res.session_key
|
||
platform.session = res.session_id;
|
||
resolve(res);
|
||
},
|
||
fail: function(neterr, logicerr, errmsg) {
|
||
console.log('登录错误');
|
||
console.log(neterr, logicerr, errmsg);
|
||
reject(errmsg);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
getUserInfo() {
|
||
return new Promise((resolve, reject) => {
|
||
platform.login().then(res => {
|
||
console.log("登录成功");
|
||
resolve();
|
||
|
||
}).catch(err => {
|
||
reject(err);
|
||
});
|
||
})
|
||
}
|
||
|
||
// obj { data, success, fail }
|
||
|
||
_getOrderId(pid, uid, sid, callback) {
|
||
var url = jc.gg.extcfg['prePayUrl'] || this.orderIdUrl;
|
||
var reqData = {
|
||
openid: platform.code,
|
||
produce: pid,
|
||
gameid: platform.jcGameId,
|
||
session: platform.session,
|
||
uid: uid,
|
||
server: sid,
|
||
platform: platform.name,
|
||
role_name: giant.Core.hero.name,
|
||
role_level: giant.Core.hero.level,
|
||
server_name: giant.Core.serverVO.name
|
||
};
|
||
|
||
var loginCount = 0;
|
||
var loginMaxCount = 1;
|
||
console.log('pre order with url: ' + url);
|
||
var request = function () {
|
||
platform.urlRequest({
|
||
url: url,
|
||
method: 'GET',
|
||
data: reqData,
|
||
success: function (res) {
|
||
console.log("_getOrderId success", JSON.stringify(res));
|
||
if (res && res.data) {
|
||
// session检测失败,需要登录
|
||
if (res.data.sessionCheck != null) {
|
||
if (loginCount >= loginMaxCount) {
|
||
callback && callback(false, "session失效,请重新登录");
|
||
return;
|
||
}
|
||
loginCount++;
|
||
|
||
platform.login().then(res => {
|
||
request();
|
||
}).catch(err => {
|
||
callback && callback(false, "session失效,login失败,请重新登录");
|
||
});
|
||
}
|
||
else {
|
||
callback && callback(true, res.data.prepayId);
|
||
}
|
||
}
|
||
else {
|
||
callback && callback(false, "接口返回有误,请重试");
|
||
}
|
||
},
|
||
fail: function (err) {
|
||
console.log('pay with err: ' + JSON.stringify(err));
|
||
callback && callback(false, "接口访问失败,请重试");
|
||
}
|
||
})
|
||
|
||
}
|
||
|
||
request();
|
||
}
|
||
|
||
pay(obj) {
|
||
var orderInfo = null;
|
||
console.warn("pay obj", JSON.stringify(obj));
|
||
|
||
var onOrderIdResult = function (isOk, data) {
|
||
if (isOk) {
|
||
try {
|
||
var payData = JSON.parse(data);
|
||
orderInfo = {orderId: payData.orderid, productCode: payData.goodid, count: 1};
|
||
realPay();
|
||
} catch (err) {
|
||
obj.fail && obj.fail({ tipMessage: '解析接口数据失败' });
|
||
}
|
||
|
||
}
|
||
else {
|
||
obj.fail && obj.fail({ tipMessage: data });
|
||
}
|
||
}
|
||
|
||
var realPay = function () {
|
||
console.log("pay orderInfo", orderInfo);
|
||
if (!orderInfo) return;
|
||
jc.plat.pay(orderInfo)
|
||
.then(data => {
|
||
if (data.errcode === 0) {
|
||
console.log("[quick]pay success", JSON.stringify(data));
|
||
obj.success && obj.success();
|
||
} else {
|
||
console.warn("pay fail", JSON.stringify(data));
|
||
obj.fail && obj.fail({ tipMessage: "充值失败" , err: data.errmsg });
|
||
}
|
||
})
|
||
.catch(err => {
|
||
console.warn("pay fail", JSON.stringify(err));
|
||
obj.fail && obj.fail({ tipMessage: "充值失败" , err: err.errmsg });
|
||
})
|
||
}
|
||
|
||
platform._getOrderId(obj.data.goodsId, obj.data.uid, obj.data.sid, onOrderIdResult);
|
||
}
|
||
concatServerList(res0, res1) {
|
||
res0.data.lastWorldIds = res1.data.lastWorldIds.concat(res0.data.lastWorldIds);
|
||
if (res1 && res1.data) {
|
||
if (res1.data.servers) {
|
||
for (let data of res1.data.servers) {
|
||
data.comp = 'jc';
|
||
res0.data.servers.push(data);
|
||
}
|
||
}
|
||
}
|
||
if (res1 && res1.data && res1.data.notice) {
|
||
res0.data.notice = res1.data.notice;
|
||
}
|
||
return res0;
|
||
}
|
||
requestServerList() {
|
||
var url = this.svrListUrl;
|
||
return this.getServerList(url);
|
||
}
|
||
|
||
getServerList(url) {
|
||
return new Promise((resolve, reject) => {
|
||
let data = {
|
||
openId: wxUserData.open_id
|
||
}
|
||
platform.urlRequest({
|
||
url: url,
|
||
method: 'GET',
|
||
data: data,
|
||
success: function (res) {
|
||
resolve(res);
|
||
},
|
||
fail: function (err) {
|
||
console.log('getServerList fail with url:', url);
|
||
resolve({data: {
|
||
lastWorldIds: [],
|
||
servers: [],
|
||
}});
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
getWxWebResRoot(configUrl) {
|
||
return new Promise((resolve, reject) => {
|
||
platform.urlRequest({
|
||
url: configUrl,
|
||
method: "GET",
|
||
success: function (res) {
|
||
let newObj = res.data;
|
||
constantRes.wxWebResRoot = constantRes.root + newObj.version + "/";
|
||
resolve();
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
urlRequest(obj) {
|
||
var url = obj.url;
|
||
var method = obj.method.toUpperCase();
|
||
var data = obj.data;
|
||
var postDataRaw = obj.postDataRaw === true;
|
||
var success = obj.success;
|
||
var fail = obj.fail;
|
||
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState == 4) {
|
||
if (xhr.status >= 200 && xhr.status < 400) {
|
||
var retData = xhr.responseText;
|
||
try {
|
||
retData = JSON.parse(retData);
|
||
success && success({
|
||
data: retData
|
||
});
|
||
} catch (err) {
|
||
fail && fail();
|
||
}
|
||
|
||
} else if (xhr.status >= 400) {
|
||
fail && fail();
|
||
}
|
||
}
|
||
};
|
||
|
||
xhr.onerror = function (e) {
|
||
fail && fail();
|
||
};
|
||
|
||
if (method === "POST") {
|
||
var dataStr = null;
|
||
if (postDataRaw) {
|
||
dataStr = data;
|
||
}
|
||
else {
|
||
if (data) {
|
||
dataStr = "";
|
||
for (var key in data) {
|
||
if (dataStr != "") {
|
||
dataStr += "&";
|
||
}
|
||
dataStr += key + "=" + data[key];
|
||
}
|
||
}
|
||
}
|
||
xhr.open(method, url);
|
||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||
xhr.send(dataStr);
|
||
} else {
|
||
var paramStr = "";
|
||
if (data) {
|
||
for (var key in data) {
|
||
if (paramStr != "") {
|
||
paramStr += "&";
|
||
}
|
||
paramStr += key + "=" + encodeURIComponent(data[key]);
|
||
}
|
||
if (paramStr != "") {
|
||
paramStr = (url.indexOf("?") == -1 ? "?" : "&") + paramStr;
|
||
}
|
||
}
|
||
url += paramStr;
|
||
url += `&_d=${Date.now()}`
|
||
console.log(url);
|
||
xhr.open(method, url);
|
||
xhr.send();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
class GamePlatformOther {
|
||
constructor() {
|
||
this.localFileName = 'userData_';
|
||
}
|
||
checkRegisterReward(uid, sid) {
|
||
return new Promise((resolve, reject) => {
|
||
var url = jc.gg.extcfg['checkRegRewardUrl'] || platform.checkRegRewardUrl;
|
||
console.log('checkRegisterReward req', uid, sid, url);
|
||
platform.urlRequest({
|
||
url: url,
|
||
method: 'GET',
|
||
data: {
|
||
uid: uid,
|
||
server: sid,
|
||
},
|
||
success: function (res) {
|
||
console.log("checkRegisterReward res", res);
|
||
if (res && res.data) {
|
||
if (res.data.code == 1) {
|
||
resolve && resolve(true);
|
||
}
|
||
else {
|
||
resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error);
|
||
}
|
||
}
|
||
else {
|
||
reject && reject("接口返回有误,请重试");
|
||
}
|
||
},
|
||
fail: function (err) {
|
||
reject && reject("接口访问失败,请重试");
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
getRegisterReward(uid, sid, name) {
|
||
return new Promise((resolve, reject) => {
|
||
var url = jc.gg.extcfg['RegRewardUrl'] || platform.regRewardUrl;
|
||
console.log('getRegisterReward req', uid, sid, name, url);
|
||
|
||
var count = 0;
|
||
var maxCount = 20;
|
||
var interval = 3;
|
||
|
||
var doRequest = function () {
|
||
platform.urlRequest({
|
||
url: url,
|
||
method: 'GET',
|
||
data: {
|
||
uid: uid,
|
||
server: sid,
|
||
name: name
|
||
},
|
||
success: function (res) {
|
||
console.log("getRegisterReward res", res);
|
||
if (res && res.data) {
|
||
if (res.data.code == 1) {
|
||
resolve && resolve(true);
|
||
}
|
||
else {
|
||
count++;
|
||
if (count <= maxCount) {
|
||
setTimeout(doRequest, interval * 1000);
|
||
}
|
||
else {
|
||
resolve && resolve(false, "code = " + res.data.code + ", error = " + res.data.error);
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
reject && reject("接口返回有误,请重试");
|
||
}
|
||
},
|
||
fail: function (err) {
|
||
reject && reject("接口访问失败,请重试");
|
||
}
|
||
});
|
||
}
|
||
|
||
doRequest();
|
||
});
|
||
}
|
||
|
||
reportRoleCreate(isNew) {
|
||
let data = {
|
||
isCreateRole: isNew,
|
||
roleCreateTime: Date.now(),
|
||
serverId: giant.Core.serverVO.id,
|
||
serverName: giant.Core.serverVO.name,
|
||
userRoleId: giant.Core.hero.id,
|
||
userRoleName: giant.Core.hero.name,
|
||
userRoleBalance: giant.Core.hero.coin,
|
||
vipLevel: giant.Core.hero.vipLevel,
|
||
userRoleLevel: giant.Core.hero.level,
|
||
partyId: 0,
|
||
partyName: giant.Core.hero.camp,
|
||
gameRoleGender: giant.Core.hero.gender,
|
||
gameRolePower: giant.Core.hero.power,
|
||
};
|
||
jc.plat.reportRoleInfo(data)
|
||
.then(res => {})
|
||
.catch(err=> {})
|
||
}
|
||
|
||
setLocalStorage(key, value) {
|
||
let self = this;
|
||
if (key === 'lastSvr') {
|
||
giant.Core.externalParams.lastWordId = value;
|
||
}
|
||
if (typeof localStorage != "undefined") {
|
||
localStorage.setItem(self.localFileName + key, value);
|
||
}
|
||
else {
|
||
console.warn("localStorage is null, on set");
|
||
}
|
||
}
|
||
|
||
getLocalStorage(key) {
|
||
let self = this;
|
||
if (key === 'lastSvr' && giant.Core.externalParams.lastWordId) {
|
||
return giant.Core.externalParams.lastWordId;
|
||
}
|
||
if (typeof localStorage != "undefined") {
|
||
var dataStr = localStorage.getItem(self.localFileName + key);
|
||
if (key === 'lastSvr') {
|
||
giant.Core.externalParams.lastWordId = dataStr;
|
||
}
|
||
return dataStr;
|
||
}
|
||
else {
|
||
console.warn("localStorage is null, on get");
|
||
return null;
|
||
}
|
||
}
|
||
|
||
getLiuHaiHeight() {
|
||
|
||
var ratioScreen = egret.Capabilities.boundingClientHeight / egret.Capabilities.boundingClientWidth;
|
||
var ratioGameDesign = 1136 / 640;
|
||
|
||
console.log("getLiuHaiHeight", ratioScreen, ratioGameDesign);
|
||
|
||
// 跟游戏分辨率相比,相等没有刘海
|
||
if (Math.abs(ratioScreen - ratioGameDesign) < 0.01) {
|
||
return 0;
|
||
}
|
||
else {
|
||
// 默认刘海值50
|
||
return 50;
|
||
}
|
||
}
|
||
}
|
||
|
||
class PlatUserData {
|
||
|
||
constructor() {
|
||
this.open_id = null;
|
||
this.nick_name = null;
|
||
this.avatar_url = null;
|
||
this.gender = null;
|
||
}
|
||
|
||
getOpenId() {
|
||
return this.open_id;
|
||
}
|
||
|
||
}
|
||
|
||
class GameConstant {
|
||
constructor() {
|
||
this.root = "";
|
||
this.wxWebResRoot = "";
|
||
}
|
||
}
|
||
|
||
window.platform = new GamePlatform();
|
||
window.wxUserData = new PlatUserData();
|
||
window.constantRes = new GameConstant();
|