const StarApi = require('../net/StarApi');
const GameModule = require('../utils/GameModule');
const {GameNotificationKey, StarType} = require('../utils/GameEnum');
const AlertManager = require('../utils/AlertManager');
cc.Class({
extends: cc.Component,
properties: {
content: cc.Node,
//
starItemPrefab: cc.Prefab,
scrollView: cc.ScrollView,
starLayout: cc.Layout,
//
progressBar: cc.ProgressBar,
countLabel: cc.Label,
percentRichText: cc.RichText,
//
descNode: cc.Node,
//底部信息
discountRichText: cc.RichText,
discount50Label: cc.Label,
discount30Label: cc.Label,
tab: [cc.Node],
tabIndex: 0,
recallAllNode: cc.Node
},
// LIFE-CYCLE CALLBACKS:
onLoad () {
this.isFirst = true;
if (Global.winSize.height <= 1000) {
this.content.height = 800;
}
GameEvent.on('show_star_desc', this, (starInfo) => {
this.showDescView(starInfo);
});
this.isRecalling = false;
this.showGiftBag = _.debounce((array) => {
AlertManager.showStarGiftBag(array);
}, 1000, true);
},
onDestroy() {
GameModule.audioMng.playClickButton();
GameEvent.off('show_star_desc', this);
},
start () {
this.getAllStars().then((respondData) => {
// console.log(respondData);
this.configData(respondData);
}).catch((code) => {
console.log(code);
});
},
/// 网络请求
getAllStars() {
return new Promise((resolve, reject) => {
// 获取目标用户的建筑
StarApi.getAllStars((respondData) => {
resolve(respondData);
}, (errCode, errMsg) => {
reject(code);
});
})
},
configData(respondData) {
this.respondData = respondData;
if (respondData.userStars.length > 0) {
// var isUnlockedCount = 0;
// for (let i = 0; i < respondData.userStars.length; ++i) {
// let star = respondData.userStars[i];
// if (star.starCount > 0) {
// isUnlockedCount++;
// }
// }
//
// let totalCount = respondData.userStars.length;
// this.countLabel.string = `${isUnlockedCount}/${totalCount} 已收集的明星`;
// let percent = (isUnlockedCount/totalCount * 100).toFixed(2);
// this.percentRichText.string = `${percent}%`;
// this.progressBar.progress = isUnlockedCount/totalCount;
this._sortStarData();
this._initTab();
}
let percent = parseInt(this.respondData.starZk * 100);
this.discountRichText.string = `${percent}%`;
//遍历礼包折扣
this.discount50Array = [];
this.discount30Array = [];
this.discount50 = 0;
this.discount30 = 0;
if (this.respondData.userShops.length > 0) {
for (let i = 0; i < this.respondData.userShops.length; ++i) {
let shop = this.respondData.userShops[i];
if (shop.zk == 0.5) {
this.discount50 += 1;
this.discount50Array.push(shop);
} else if (shop.zk == 0.3) {
this.discount30 += 1;
this.discount30Array.push(shop);
}
}
}
this.discount50Label.string = `x ${this.discount50}`;
this.discount30Label.string = `x ${this.discount30}`;
},
//重新筛选数据
_sortStarData() {
this.commonStars = [];
this.drawStars = [];
this.giftStars = [];
this.commonUnlocked = 0;
this.drawUnlocked = 0;
this.giftUnlocked = 0;
for (let i = 0; i < this.respondData.userStars.length; ++i) {
let star = this.respondData.userStars[i];
switch (star.type) {
case StarType.Common:
this.commonStars.push(star);
if (star.starCount > 0) {
this.commonUnlocked++;
}
break;
case StarType.Draw:
this.drawStars.push(star);
if (star.starCount > 0) {
this.drawUnlocked++;
}
break;
case StarType.Gift:
this.giftStars.push(star);
if (star.starCount > 0) {
this.giftUnlocked++;
}
break;
default:
break;
}
}
this.commonTabText = `普通明星\n${this.commonUnlocked}/${this.commonStars.length}`;
this.drawTabText = `抽奖明星\n${this.drawUnlocked}/${this.drawStars.length}`;
this.giftTabText = `礼包明星\n${this.giftUnlocked}/${this.giftStars.length}`;
},
/**
* 初始化Tab
*/
_initTab () {
for(let i = 0; i < this.tab.length; i++) {
this.tab[i] = this.tab[i].getComponent('StarHandbookTypeTab');
if (i == 0) {
this.tab[i].init(this.commonTabText);
} else if (i == 1) {
this.tab[i].init(this.drawTabText);
} else {
this.tab[i].init(this.giftTabText);
}
}
this.handleTab(null, this.tabIndex);
},
handleTab(event, tabIndex) {
this.tabIndex = parseInt(tabIndex);
this.tab.forEach((item, index) => {
if(this.tabIndex == index) {
item.show();
if (this.isFirst) {
this.isFirst = false
} else {
GameModule.audioMng.playClickButton();
}
this._refreshListData();
} else {
item.hide();
}
});
},
_refreshListData() {
this.starLayout.node.removeAllChildren();
switch (this.tabIndex) {
case 0:
for (let i = 0; i < this.commonStars.length; ++i) {
let star = this.commonStars[i];
let item = cc.instantiate(this.starItemPrefab);
item = item.getComponent('StarHandbookItem');
item.configData(star);
this.starLayout.node.addChild(item.node);
let totalCount = this.commonStars.length;
this.countLabel.string = `${this.commonUnlocked}/${totalCount} 已收集的明星`;
let percent = (this.commonUnlocked/totalCount * 100).toFixed(2);
this.percentRichText.string = `${percent}%`;
this.progressBar.progress = this.commonUnlocked/totalCount;
}
break;
case 1:
for (let i = 0; i < this.drawStars.length; ++i) {
let star = this.drawStars[i];
let item = cc.instantiate(this.starItemPrefab);
item = item.getComponent('StarHandbookItem');
item.configData(star);
this.starLayout.node.addChild(item.node);
let totalCount = this.drawStars.length;
this.countLabel.string = `${this.drawUnlocked}/${totalCount} 已收集的明星`;
let percent = (this.drawUnlocked/totalCount * 100).toFixed(2);
this.percentRichText.string = `${percent}%`;
this.progressBar.progress = this.drawUnlocked/totalCount;
}
break;
case 2:
for (let i = 0; i < this.giftStars.length; ++i) {
let star = this.giftStars[i];
let item = cc.instantiate(this.starItemPrefab);
item = item.getComponent('StarHandbookItem');
item.configData(star);
this.starLayout.node.addChild(item.node);
let totalCount = this.giftStars.length;
this.countLabel.string = `${this.giftUnlocked}/${totalCount} 已收集的明星`;
let percent = (this.giftUnlocked/totalCount * 100).toFixed(2);
this.percentRichText.string = `${percent}%`;
this.progressBar.progress = this.giftUnlocked/totalCount;
}
break;
default:
break;
}
},
closeView() {
this.node.destroy();
},
//显示描述信息
showDescView(starInfo) {
GameModule.audioMng.playClickButton();
this.descNode.active = true;
this.descNode.getComponent('StarHandbookDesc').configData(starInfo);
},
closeDescView() {
GameModule.audioMng.playClickButton();
this.descNode.active = false;
},
refreshData() {
for (let i = 0; i < this.commonStars.length; ++i) {
let star = this.commonStars[i];
star.starRoomCount = 0;
}
for (let i = 0; i < this.drawStars.length; ++i) {
let star = this.drawStars[i];
star.starRoomCount = 0;
}
for (let i = 0; i < this.giftStars.length; ++i) {
let star = this.giftStars[i];
star.starRoomCount = 0;
}
},
recallAllStar() {
GameModule.audioMng.playClickButton();
if (this.respondData.userStars.length <= 0) {
return;
}
if (this.isRecalling) { return; }
this.recallAllNode.active = true;
},
confirmRecallAll() {
GameModule.audioMng.playClickButton();
this.isRecalling = true;
StarApi.recallAllStar((respondData) => {
this.isRecalling = false;
this.refreshData();
GameEvent.fire(GameNotificationKey.AllStarLeaveRoom);
this.recallAllNode.active = false;
}, (code, msg) => {
this.isRecalling = false;
Global.commonAlert.showCommonErrorAlert(`收回失败 \n${msg}`);
});
},
closeRecallAllNode() {
GameModule.audioMng.playClickButton();
this.recallAllNode.active = false;
},
//tabIndex:0为5折,1为3折数据
showDiscountGift(event, tabIndex) {
GameModule.audioMng.playClickButton();
if (this.respondData == undefined) {
return;
}
if (tabIndex == 0) {
this.showGiftBag(this.discount50Array);
} else {
this.showGiftBag(this.discount30Array);
}
},
// update (dt) {},
});