231 lines
5.5 KiB
JavaScript
231 lines
5.5 KiB
JavaScript
var PAGE_SIZE = 76;
|
|
var ITEM_HEIGHT = 76;
|
|
|
|
var OFFSET_X = -40;
|
|
var OFFSET_Y_ORIGIN = 0;
|
|
var OFFSET_Y = -8;
|
|
var CLIP_HEIGHT = 360;
|
|
var CLIP_WIDTH =800
|
|
|
|
var TODAYKEY = "datakey1"
|
|
var assets = {
|
|
btn:"wx-open-data-project/btn.png",
|
|
};
|
|
|
|
|
|
|
|
|
|
function preloadAssets() {
|
|
var preloaded = 0;
|
|
var count = 0;
|
|
for (var asset in assets) {
|
|
count++;
|
|
var img = wx.createImage();
|
|
img.onload = function () {
|
|
preloaded++;
|
|
if (preloaded == count) {
|
|
|
|
}
|
|
}
|
|
img.src = assets[asset];
|
|
assets[asset] = img;
|
|
}
|
|
}
|
|
|
|
var RANK_STRING = "stage"
|
|
|
|
|
|
|
|
var RankListRenderer = /** @class */ function () {
|
|
//console.log('test2');
|
|
this.totalPage = 0;
|
|
this.currPage = 0;
|
|
this.myrank = 0;
|
|
this.todayopenids = []
|
|
this.stagecfg=[]
|
|
this.gameDatas = []; //https://developers.weixin.qq.com/minigame/dev/document/open-api/data/UserGameData.html
|
|
this.init();
|
|
};
|
|
|
|
RankListRenderer.prototype.init = function () {
|
|
//console.log('test3');
|
|
this.canvas = wx.getSharedCanvas();
|
|
this.ctx = this.canvas.getContext('2d');
|
|
this.ctx.imageSmoothingEnabled = true;
|
|
this.ctx.imageSmoothingQuality = "high";
|
|
|
|
|
|
|
|
this.showFriendRank = false;
|
|
this.itemCount = 0;
|
|
this.todaysharecount = 0;
|
|
this.limitsharecout = 999;
|
|
|
|
this.shareurl = " "
|
|
this.sharetitle =" "
|
|
|
|
|
|
this.oldheight = this.canvas.height
|
|
this.oldwidth = this.canvas.width
|
|
this.avatarImages2 = []
|
|
this.nodeplayfriendlist = []
|
|
|
|
this.refreshnotplaylist();
|
|
|
|
};
|
|
RankListRenderer.prototype.refreshnotplaylist = function(){
|
|
var self = this
|
|
wx.getPotentialFriendList({
|
|
success: (data) => {
|
|
let list = data.list || [];
|
|
console.log('getPotentialFriendList', data);
|
|
self.nodeplayfriendlist = list
|
|
self.avatarImages2 = []
|
|
|
|
for(let i=0;i<list.length;i++){
|
|
let avatarImg = wx.createImage();
|
|
self.avatarImages2.push(avatarImg);
|
|
if(list[i].avatarUrl){
|
|
avatarImg.src = list[i].avatarUrl;
|
|
}
|
|
}
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
RankListRenderer.prototype.getMyselfInfo = function () {
|
|
var _this = this;
|
|
wx.getUserInfo({
|
|
openIdList: ['selfOpenId'],
|
|
success: function (res) {
|
|
_this.myselfAvatarUrl = res.data[0].avatarUrl;
|
|
_this.myName = res.data[0].nickName;
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
|
|
|
|
RankListRenderer.prototype.listen = function () {
|
|
this.statu = 0;
|
|
wx.onMessage(msg => {
|
|
switch (msg.type) {
|
|
case 'displayinfo':
|
|
this.ctx.clearRect(0, 0, 1024, 512);
|
|
this.drawinvitelist()
|
|
break;
|
|
case 'clear':
|
|
this.statu = 0;
|
|
this.showFriendRank = false;
|
|
this.clearAll();
|
|
this.refreshnotplaylist();
|
|
break;
|
|
case 'sharetofriend':
|
|
this.dosharetofriend(msg.idx)
|
|
break;
|
|
case 'sharepic':
|
|
this.shareurl = msg.url
|
|
this.sharetitle = msg.title
|
|
break;
|
|
case 'changerank':
|
|
this.updaterank(msg.num);
|
|
break;
|
|
default:
|
|
console.log("undefined msg.type=" + msg.type);
|
|
break;
|
|
}
|
|
});
|
|
};
|
|
RankListRenderer.prototype.dosharetofriend = function (idx) {
|
|
var vidx = Number(idx)-1
|
|
if(!this.nodeplayfriendlist[vidx]){
|
|
return
|
|
}
|
|
wx.shareMessageToFriend&&wx.shareMessageToFriend({
|
|
openId:this.nodeplayfriendlist[vidx].openid,
|
|
imageUrl:this.shareurl,
|
|
title:this.sharetitle,
|
|
success:function(res){
|
|
|
|
},
|
|
})
|
|
|
|
}
|
|
|
|
RankListRenderer.prototype.updaterank = function (num) {
|
|
console.log(num)
|
|
var kvDataList = new Array();
|
|
kvDataList.push({key:'winrank',value:'num'});
|
|
wx.setUserCloudStorage&&wx.setUserCloudStorage({
|
|
KVDataList:kvDataList,
|
|
success:function(res){
|
|
console.log("setUserCloudStorage success");
|
|
},
|
|
fail:function(res){
|
|
console.log("setUserCloudStorage fail");
|
|
},
|
|
complete:function(res){
|
|
console.log(res);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
RankListRenderer.prototype.drawinvitelist = function () {
|
|
var ctx =this.ctx
|
|
var len = this.nodeplayfriendlist.length
|
|
if(len>5){
|
|
len = 5
|
|
}
|
|
|
|
ctx.fillStyle = "#000000";
|
|
ctx.textAlign = "left";
|
|
ctx.textBaseline = "middle";
|
|
|
|
for(var i=0;i<len;i++){
|
|
var dt = this.nodeplayfriendlist[i]
|
|
if(this.avatarImages2[i]){
|
|
ctx.drawImage(this.avatarImages2[i], 20, 10+i*60, 40, 40);
|
|
}
|
|
|
|
|
|
ctx.fillStyle = "#FFFFFF";
|
|
ctx.font = "bold 24px , sans-serif";
|
|
|
|
var nick = dt.nickname.length <= 5 ? dt.nickname : dt.nickname.substr(0, 5) + "...";
|
|
|
|
ctx.fillText(nick, 68, 25+i*60);
|
|
|
|
ctx.drawImage(assets.btn,240, 12+i*60, 80, 40);
|
|
ctx.fillStyle = "#FFFFFF";
|
|
ctx.font = "bold 24px , sans-serif";
|
|
ctx.strokeStyle = "#000000";
|
|
ctx.strokeText("",255, 30+i*60);
|
|
ctx.fillText("", 255, 30+i*60);
|
|
|
|
|
|
//avatarUrl nickname openid
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RankListRenderer.prototype.clearAll = function(data){
|
|
this.ctx.clearRect(0, 0, CLIP_WIDTH, CLIP_HEIGHT+500);
|
|
};
|
|
|
|
|
|
|
|
|
|
var rankList = new RankListRenderer();
|
|
rankList.listen();
|
|
preloadAssets()
|
|
//console.log('test0');
|