Files
fc/dev/project/assets/Scripts/mod/pray/cmp/cmp.holy.pray.wnd.js
T
2026-05-23 22:10:14 +08:00

320 lines
9.9 KiB
JavaScript

const BridgeWindow = require( "bridge.window" );
const BackPackController = require( "backpack_controller" );
const PrayMod = require( "pray.mod" );
const TipsController = require( "tips_controller" );
cc.Class({
extends: BridgeWindow,
properties: {
luckyHolys:{ default: [], type: cc.Node },
nodRewards:{ default: null, type: cc.Node },
// :{ default: [], type: cc.Node },
rewards:{ default: [], type: cc.Node },
nodScore:{ default: null, type: cc.Node },
nameLen : 0,
},
onEnable: function() {
// 视图监听
this.vbind( [
[ "HolyPray", this.dealPray.bind( this ) ]
] );
},
// 隐藏
onDisable: function() {
// 视图监听解除
this.vunbind();
// 事件监听释放
},
// 重载:参数打开
onOpenConfigs: function( _params ) {
let pray = PrayMod.getInstance();
let score = pray.getScore();
nx.gui.setString( this.nodScore, "txt", nx.text.format( "ScoreMax", score ) );
this.score = score;
},
// 重载:关闭前
onPreClosed: function() {
},
// 重载:参数打开
dealPray: function( _data ) {
this.prayInfos = _data;
this.prayInfos.forEach( _pray =>{
if( _pray.is_open == 1 ){
this.nowPrayInfos = _pray;
}
} )
this.nowPrayInfos.lucky_holy_eqm.sort( Utils.tableUpperSorter( "pos" ) );
//刷新 许愿战斗义肢神装相关
this.freshLuckyHoly();
//刷新 许愿战斗义肢/神装 奖励相关
this.freshLuckyHolyRewards();
},
freshLuckyHoly: function(){
// 刷新 祈禱相關
this.showRewards = [];
let cfgs = game.configs.holy_eqm_lottery_data.data_wish_show;
let wishes = this.nowPrayInfos.lucky_holy_eqm;
if( nx.dt.arrEmpty( wishes ) ){
this.luckyHolys.forEach( _nod => {
nx.gui.setActive( _nod, "holy", false );
nx.gui.setActive( _nod, "name", false );
nx.gui.setActive( _nod, "empty", true );
} )
}else{
for (let i = 0; i < wishes.length; i++) {
let wish = wishes[i];
nx.gui.setActive( this.luckyHolys[wish.pos], "holy", wish.lucky_holy_eqm != 0 );
nx.gui.setActive( this.luckyHolys[wish.pos], "empty", wish.lucky_holy_eqm == 0 );
nx.gui.setActive( this.luckyHolys[wish.pos], "name", wish.lucky_holy_eqm != 0 );
let cfg = cfgs[wish.lucky_holy_eqm];
if( cfg ){
let set = parseInt( cfg.group_id / 100 );
let path = cc.path.join( "coms/images/eqm_set" + set );
nx.gui.setSpriteFrame( this.luckyHolys[wish.pos], "holy/ico_set", path );
nx.bridge.setIcon( this.luckyHolys[wish.pos], "holy/icon", cfg.icon );
nx.gui.setString( this.luckyHolys[wish.pos], "name/txt", nx.dt.strCut( cfg.name, this.nameLen ) );
}
}
}
nx.gui.setString( this, "panel/sid", this.nowPrayInfos.lev );
nx.gui.setString( this, "panel/desc/time", nx.text.format( "lab_heaven_tips_8", this.nowPrayInfos.baodi_count ) );
},
freshLuckyHolyRewards: function(){
let BC = BackPackController.getInstance();
let limit = game.configs.holy_eqm_lottery_data.data_group[this.nowPrayInfos.group_id] ;
let one = nx.gui.find( this.nodRewards, "op/once" );
let ten = nx.gui.find( this.nodRewards, "op/ten" );
let prog = nx.gui.getComponent( this.nodRewards, "awards/prog", cc.ProgressBar );
let count = Object.keys( game.configs.holy_eqm_lottery_data.data_award[this.nowPrayInfos.group_id] ).length;
let total = game.configs.holy_eqm_lottery_data.data_award[this.nowPrayInfos.group_id][count];
if( prog ){
prog.progress = parseFloat( this.nowPrayInfos.all_award_count/ total.times );
}
nx.gui.setStringRich( this, "panel/times", nx.text.format( "lab_heaven_tips", this.nowPrayInfos.day_count, limit.day_limit_count ) );
this.mat = limit.loss_item_once[0][0];
// let nodRewards = nx.gui.find( this.nodRewards, )
// 設置寶箱可領取
nx.gui.setString( this.nodRewards, "awards/count/txt", this.nowPrayInfos.all_award_count );
let rewards = game.configs.holy_eqm_lottery_data.data_award[this.nowPrayInfos.group_id];
for (let i in rewards ) {
let award = rewards[i];
let nod = this.rewards[ i-1 ];
if( nod ){
nx.gui.setString( nod, "txt", award.times );
let lay = nx.gui.getComponent( nod, "show", "cmp.item.layout" );
if( lay ){
lay.rebuild( award.reward );
}
let data = {
"award_id" : i
}
nx.gui.setActive( nod, "get", award.times <= this.nowPrayInfos.all_award_count );
}
}
this.nowPrayInfos.do_awards.forEach( _ard =>{
let nod = this.rewards[ _ard.award_id - 1 ];
nx.gui.setActive( nod, "get", false );
} )
let cost = 0 ;
let canBuyTen = false;
let have = BC.getModel().getItemNumByBid( this.mat );
nx.gui.setActive( one, "cost/info/icon", false );
if( this.nowPrayInfos.free_times == 1 ){
cost = nx.text.getKey( "btn_battle_fast_fight_free" );
}else{
if( have >= limit.loss_item_once[0][1] ){
cost = limit.loss_item_once[0][1];
nx.bridge.setIconS( one, "cost/info/icon", this.mat );
}else{
nx.bridge.setIconS( one, "cost/info/icon", 3 );
cost = limit.loss_gold_once;
}
nx.gui.setActive( one, "cost/info/icon", true );
// nx.bridge.setIconS( one, "cost/icon", this.mat );
}
if( have >= limit.loss_item_ten[0][1] ){
canBuyTen = true;
}
nx.gui.setString( one, "cost/info/txt", cost );
nx.bridge.setIconS( ten, "cost/icon", canBuyTen ? this.mat : 3 );
nx.gui.setString( ten, "cost/txt", canBuyTen ? limit.loss_item_ten[0][1] : limit.loss_gold_ten );
},
// 添加許願戰鬥義肢
onTouchAddWish: function( _idx ){
nx.bridge.createPanel( "WndHolyPrayWish", {
group_id: this.nowPrayInfos.group_id,
select : this.nowPrayInfos.lucky_holy_eqm,
focus : parseInt( _idx )
} )
},
onTouchShow: function( _idx ){
for (let i = 0; i < this.rewards.length; i++) {
let nod = this.rewards[i];
if( i != _idx ){
nx.gui.setActive( nod, "show", false );
}
}
let nod = nx.gui.find( this.rewards[_idx], "show" );
nx.gui.setActive( nod, "", !nod.active );
},
onTouchGet: function( _idx ){
let pray = PrayMod.getInstance();
pray.sender25231( this.nowPrayInfos.group_id, _idx );
},
onTouchPray: function( _times ){
let BC = BackPackController.getInstance();
let pray = PrayMod.getInstance();
let have = BC.getModel().getItemNumByBid( this.mat );
let haveDiam = BC.getModel().getItemNumByBid( 3 );
let canBuyOne = false;
let canBuyTen = false;
let type = 0;
let cfg = game.configs.holy_eqm_lottery_data.data_group[this.nowPrayInfos.group_id] ;
if( have > 0 ){
if( have >= cfg.loss_item_once[0][1] && have < cfg.loss_item_ten[0][1] ){
canBuyOne = true;
canBuyTen = false;
type = 4;
}else if( have >= cfg.loss_item_ten[0][1] ){
canBuyTen = true;
canBuyOne = true;
type = 4;
}
}else{
if( haveDiam >= cfg.loss_gold_once && haveDiam < cfg.loss_gold_ten ){
canBuyOne = true;
canBuyTen = false;
type = 3;
}else if( haveDiam >= cfg.loss_gold_ten ){
canBuyTen = true;
canBuyOne = true;
type = 3;
}
}
// console.log( haveDiam + "sss" + type + "是否可以祈禱單次" + canBuyOne + "是否可以祈禱ss" + canBuyTen + have );
if( _times <= cfg.loss_item_once[0][1] ){
if( this.nowPrayInfos.free_times == 1 ){
pray.sender25217( this.nowPrayInfos.group_id, _times, 1 );
return;
}else{
if( !canBuyOne ){
nx.tbox( "SummonItemNotEnough" );
return;
}
}
}
else{
if( !canBuyTen ){
nx.tbox( "SummonItemNotEnough" );
return;
}
}
pray.sender25217( this.nowPrayInfos.group_id, _times, type );
},
onTouchUplev: function(){
nx.bridge.createPanel( "WndHolyStatueUplev", this.nowPrayInfos );
},
onTouchRate: function(){
nx.bridge.createPanel( "WndHolyPrayRate", this.nowPrayInfos );
},
onTouchEqmAutoSell: function(){
nx.bridge.createPanel( "WndHolyEqmAutoSell", this.nowPrayInfos );
},
onTouchShop: function(){
nx.bridge.createPanel( "WndHolyPrayShop", {
score : this.score
} );
},
// 规则说明
onTouchTip: function() {
let desc = game.configs.holy_eqm_lottery_data.data_const.salvage_rule;
let TC = TipsController.getInstance();
if( TC ) {
TC.showTextPanel( desc.title, desc.desc );
}
},
});