199 lines
7.2 KiB
JavaScript
199 lines
7.2 KiB
JavaScript
/******************************************************************
|
|
*
|
|
* 行星武器奖励弹窗
|
|
*
|
|
******************************************************************/
|
|
|
|
const BridgeWindow = require( "bridge.window" );
|
|
const HallowsController = require("hallows_controller")
|
|
const BackpackController = require("backpack_controller")
|
|
|
|
cc.Class( {
|
|
|
|
extends: BridgeWindow,
|
|
|
|
properties: {
|
|
good_item:{default:null,type:cc.Prefab},
|
|
can_use_label:{default:null,type:cc.RichText},
|
|
slider:{default:null,type:cc.Slider},
|
|
s_progress:{default:null,type:cc.ProgressBar},
|
|
need_num:{default:null,type:cc.Label},
|
|
attr_lb_list:{
|
|
default:[],
|
|
type:[cc.Label]
|
|
},
|
|
attr_list:{
|
|
default:[],
|
|
type:[cc.Node]
|
|
}
|
|
},
|
|
|
|
onLoad(){
|
|
this.slider.node.on("slide",()=>{
|
|
this.setComposeNumByPercent(this.slider.progress);
|
|
this.s_progress.progress = this.slider.progress;
|
|
});
|
|
},
|
|
|
|
// 重载:参数打开
|
|
onOpenConfigs: function( data ) {
|
|
this.this_use_num = 0;
|
|
this.cost_config = game.configs.hallows_data.data_const.id_stone;
|
|
this.attr_config = game.configs.hallows_data.data_const.stone_attribute;
|
|
this.ctrl = HallowsController.getInstance();
|
|
this.model = this.ctrl.getModel();
|
|
|
|
this.data = data;
|
|
if(data && data.vo && this.cost_config){
|
|
this.had_use_num = data.vo.seal; // 当前使用的数量
|
|
this.use_max_num = this.getUseMaxNum(); // 当前最高可使用数量
|
|
|
|
//数据异常
|
|
if(this.use_max_num == 0)return;
|
|
var max_step = game.configs.hallows_data.data_max_lev[this.data.id];
|
|
if(max_step == null)return;
|
|
var step = this.data.vo.step;
|
|
//没吃满,都显示可以使用的
|
|
if(this.had_use_num < this.use_max_num){
|
|
this.can_use_label.string = cc.js.formatStr(nx.text.getKey("lab_hallows_trace_window_tip4"), this.had_use_num, this.use_max_num);
|
|
}else{
|
|
if(step >= max_step){//已经满级的
|
|
this.can_use_label.string = cc.js.formatStr(nx.text.getKey("lab_hallows_trace_window_tip5"), this.had_use_num, this.use_max_num)
|
|
}else{
|
|
//找出下一阶的
|
|
var next_config = gdata("hallows_data","data_trace_cost",Utils.getNorKey(this.data.id, step+1));
|
|
if(next_config){
|
|
this.can_use_label.string = cc.js.formatStr(nx.text.getKey("lab_hallows_trace_window_tip6"), step+1, (next_config.num - this.had_use_num) )
|
|
}
|
|
}
|
|
}
|
|
|
|
this.can_use_num = this.use_max_num - this.had_use_num // 当前剩余可使用数量
|
|
if(this.can_use_num < 0){
|
|
this.can_use_num = 0;
|
|
}
|
|
//当前背包中数量
|
|
this.had_max_num = BackpackController.getInstance().getModel().getItemNumByBid(this.cost_config.val); // 背包中总数量
|
|
var itemVo = {bid:this.cost_config.val, num:this.had_max_num};
|
|
if(!this.cost_item){
|
|
this.cost_item = cc.instantiate(this.good_item);
|
|
this.cost_item.parent = this.node.getChildByName("main");
|
|
this.cost_item.position = cc.v2(-27,0);
|
|
}
|
|
let cmp = this.cost_item.getComponent("cmp.item.base");
|
|
cmp.rebind(0,itemVo,"");
|
|
this.this_use_num = Math.min(this.can_use_num, this.had_max_num) //这次最多可使用的数量
|
|
this.num = this.this_use_num; // 当前数量
|
|
this.setComposeNum(this.num);
|
|
this.setBaseAttrList()
|
|
|
|
}
|
|
},
|
|
|
|
//返回当前阶数最大可使用的数量的配置表
|
|
getUseMaxNum:function(){
|
|
if(this.data == null || this.data.vo == null)return;
|
|
var trace_cost_config = gdata("hallows_data","data_trace_cost",Utils.getNorKey(this.data.id, this.data.vo.step));
|
|
if(trace_cost_config){
|
|
return trace_cost_config.num
|
|
}
|
|
return 0
|
|
},
|
|
|
|
setComposeNum:function(num){
|
|
this.num = num;
|
|
var percent = this.num / this.this_use_num || 0;
|
|
this.slider.progress = percent;
|
|
this.s_progress.progress = this.slider.progress;
|
|
this.fileNum(num);
|
|
},
|
|
|
|
setComposeNumByPercent:function(percent){
|
|
this.num = Math.floor( percent * this.this_use_num )
|
|
this.fileNum(this.num);
|
|
},
|
|
|
|
fileNum:function(num){
|
|
if(this.had_max_num == null)return;
|
|
this.need_num.string = cc.js.formatStr("%s: %s",nx.text.getKey("HallowsNeed"),num);
|
|
},
|
|
|
|
//设置当前圣印总属性
|
|
setBaseAttrList:function(){
|
|
if(this.cost_config == null || this.attr_config == null)return;
|
|
if(this.had_use_num == null){
|
|
this.had_use_num = 0;
|
|
}
|
|
|
|
for(var i in this.attr_list){
|
|
this.attr_list[i].active = false;
|
|
}
|
|
|
|
for(var j in this.attr_config.val){
|
|
var v = this.attr_config.val[j];
|
|
var attr_key = v[0];
|
|
var attr_val = v[1] * this.had_use_num ;
|
|
var attr_name = game.configs.attr_data.data_key_to_name[attr_key];
|
|
if(attr_name){
|
|
// var attr_icon = PathTool.getAttrIconRes(attr_key);
|
|
var attr_str = cc.js.formatStr(" %s +%s",attr_name, attr_val);
|
|
|
|
var object = this.attr_list[parseInt(j)];
|
|
if(object){
|
|
object.active = true;
|
|
this.attr_lb_list[parseInt(j)].string = attr_str;
|
|
// nx.gui.setSpriteFrame( icon, "", attr_icon );
|
|
// object.label.string = attr_str;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
slideHldEvent(event){
|
|
// this.setComposeNumByPercent(this.slider.progress);
|
|
// this.progress.progress = this.slider.progress;
|
|
},
|
|
|
|
onClickLevUp(){
|
|
if(this.data){
|
|
if(this.this_use_num == 0){
|
|
nx.tbox("lab_hallows_trace_window_tip3")
|
|
this.ctrl.openHallowsTraceWindow(false);
|
|
}else{
|
|
if(this.num == 0){
|
|
nx.tbox("lab_hallows_trace_window_tip3")
|
|
}else{
|
|
this.ctrl.requestUseTraceItem(this.data.id, this.num);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
onClickMax(){
|
|
var percent = this.slider.progress;
|
|
if(percent == 1)return;
|
|
if(this.this_use_num == 0)return;
|
|
if(this.num >= this.this_use_num)return;
|
|
this.num = this.this_use_num;
|
|
this.setComposeNum(this.num);
|
|
},
|
|
|
|
onClickPlus(){
|
|
var percent = this.slider.progress;
|
|
if(percent == 1)return;
|
|
if(this.this_use_num == 0)return;
|
|
if(this.num >= this.this_use_num)return;
|
|
this.num = this.num + 1;
|
|
this.setComposeNum(this.num);
|
|
},
|
|
|
|
onClickMin(){
|
|
var percent = this.slider.progress;
|
|
if(percent == 0)return;
|
|
if(this.num == 0)return;
|
|
if(this.this_use_num == 0)return;
|
|
this.num = this.num - 1;
|
|
this.setComposeNum(this.num);
|
|
}
|
|
} );
|