/****************************************************************** * * 僚机背包页 * ******************************************************************/ const BridgeComponent = require( "bridge.component" ); const PathTool = require("pathtool"); const HallowsConst = require("hallows_const"); const HallowsEvent = require("hallows_event"); const HallowsController = require("hallows_controller"); const BackpackController = require("backpack_controller"); var PartnerCalculate = require("partner_calculate"); cc.Class( { extends: BridgeComponent, properties: { step_lvup_value:{ default:null, type:cc.RichText }, step_progress_value:{ default:null, type:cc.RichText }, step_progress:{ default:null, type:cc.ProgressBar }, cost_icon_1:{ default:null, type:cc.Sprite }, cost_icon_2:{ default:null, type:cc.Sprite }, cost_num_1:{ default:null, type:cc.Label }, cost_num_2:{ default:null, type:cc.Label }, auto_advanced_label:{ default:null, type:cc.Label }, attr_labels:{ default:[], type:[cc.Label] }, step_auto_advanced_btn_label:{ default:null, type:cc.Label }, main:{ default:null, type:cc.Node }, lv_max:{ default:null, type:cc.Node } }, onLoad: function() { this._super(); this.ctrl = HallowsController.getInstance(); this.model = this.ctrl.getModel(); this.is_in_advance = false; this.hallows_uplv_cost_bid_1 = 0; this.hallows_uplv_cost_num_1 = 0; this.hallows_uplv_cost_bid_2 = 0; this.hallows_uplv_cost_num_2 = 0; // 事件监听 this.bindGEvent( HallowsEvent.HallowsAdvanceEvent, this.updateHallowsAdvence.bind( this ) ); }, updateHallowsAdvence(id, result){ if(this.select_hallows && this.select_hallows.id != id){ this.changeAutoAdvanceStatus(false); }else{ if(result == 0 || result == 1){//0标识材料之类的不足 1标识升阶了,这两种情况都停掉 this.changeAutoAdvanceStatus(false); } } }, getCostObj(bid){ if(bid == this.hallows_uplv_cost_bid_1){ this.setCostDataToNode(this.cost_icon_1, this.cost_num_1, bid, this.hallows_uplv_cost_num_1); }else if(bid == this.hallows_uplv_cost_bid_2){ this.setCostDataToNode(this.cost_icon_2, this.cost_num_2, bid, this.hallows_uplv_cost_num_2); } }, onEnable(){ }, onDisable(){ this.changeAutoAdvanceStatus(false); this.clearAutoTimeticket(); // 监听事件释放 // this.unbindGEvents(); }, setData(hallows){ this.select_hallows = hallows; let max_lev = game.configs.hallows_data.data_max_lev[this.select_hallows.id]; if(this.select_hallows && this.select_hallows.vo.step >= max_lev){ this.lv_max.active = true; this.main.active = false; return; } this.updateStepInfo(); this.updateHallowsBaseInfo(); }, updateHallowsBaseInfo(){ if(this.select_hallows == null)return; // 基础属性 var vo = this.select_hallows.vo; if(vo == null)return; //名称 this.step_lvup_value.string =cc.js.formatStr("%s/%s",vo.step,game.configs.hallows_data.data_max_lev[vo.id]); var step_config = gdata("hallows_data","data_info",Utils.getNorKey(vo.id, vo.step)); var next_step_config = gdata("hallows_data","data_info",Utils.getNorKey(vo.id, vo.step+1)) || {}; for(var j in step_config.attr){ if(j > 2)break;//UI只支持显示两个技能 var attr_key = step_config.attr[j][0]; var attr_val = step_config.attr[j][1] || 0; let vals = nx.bridge.attrs.fmtAttribute(attr_key,attr_val); var next_attr_val = 0; //取出下一级属性加成,计算临时变量 if(next_step_config.attr){ for(var k in next_step_config.attr){ if(next_step_config.attr[k][0] && next_step_config.attr[k][0] == attr_key){ next_attr_val = next_step_config.attr[k][1] || 0; } } } var icon = PathTool.getAttrIconRes(attr_key); var add_value = 0;; // 临时变量 if(next_attr_val > 0){ var ratio_config = game.configs.hallows_data.data_const["temporary_ratio"] || {}; var ratio = ratio_config.val || 800; add_value = Math.round(vo.lucky/step_config.max_lucky*(next_attr_val-attr_val)*(ratio/1000)) } let is_per = PartnerCalculate.isShowPerByStr(attr_key); //当前属性值=配置表中的值+圣印加成的值 var stone_config = game.configs.hallows_data.data_const["stone_attribute"]; if(vo.seal > 0 && stone_config){ var stone_val = 0; for(var k in stone_config.val){ if(stone_config.val[k][0] && stone_config.val[k][0] == attr_key){ stone_val = stone_config.val[k][1] || 0; break } } attr_val = attr_val + stone_val*vo.seal; } attr_val = vals.val; // if(is_per){ // attr_val = (attr_val/10) +"%"; // } var attr_str = cc.js.formatStr(" %s:%s",icon, vals.name, attr_val.toString()); if(add_value > 0){ if(is_per){ add_value = (add_value/10) + "%"; } attr_str = attr_str + cc.js.formatStr(" +%s", add_value.toString()); } this.attr_labels[j].string = ""+vals.name+":"+attr_val.toString(); } }, // 重载:关闭前 onPreClosed: function() { }, //设置神器升级相关显示 updateStepInfo:function(){ if(this.select_hallows == null)return; var vo = this.select_hallows.vo; if(!vo)return; var step_config = gdata("hallows_data","data_info",Utils.getNorKey(vo.id, vo.step)); if(step_config){ //进度条 this.step_progress_value.string = cc.js.formatStr("%s/%s",vo.lucky,step_config.max_lucky); this.step_progress.progress = vo.lucky/step_config.max_lucky; // 神器升级消耗 var expend_1 = step_config.loss[0]; var expend_2 = step_config.loss[1]; let is_one = false; let is_two = false; if(expend_1){ var bid = expend_1[0]; var num = expend_1[1]; this.hallows_uplv_cost_bid_1 = bid; this.hallows_uplv_cost_num_1 = num; this.setCostDataToNode(this.cost_icon_1, this.cost_num_1, bid, num); var count = BackpackController.getInstance().getModel().getItemNumByBid(bid); if(count >= num){ is_one = true; } } if(expend_2){ var bid2 = expend_2[0]; var num2 = expend_2[1]; this.hallows_uplv_cost_bid_2 = bid2; this.hallows_uplv_cost_num_2 = num2; this.setCostDataToNode(this.cost_icon_2, this.cost_num_2, bid2, num2) ; var count2 = BackpackController.getInstance().getModel().getItemNumByBid(bid2); if(count2 >= num2){ is_two = true; } } if(is_one && is_two){ nx.mTip.openTip("partner.hallows.levup",true); }else{ nx.mTip.openTip("partner.hallows.levup",false); } } }, // 显示消耗数据 setCostDataToNode:function( item_icon, item_label, item_bid, item_num ){ var item_config = Utils.getItemConfig(item_bid); if(item_config){ var res = PathTool.queryIconPath(item_config.icon) cc.loader.loadRes(res, cc.SpriteFrame, (err,sf_obj)=> { if(err){ return; } item_icon.spriteFrame = sf_obj; }); var count = BackpackController.getInstance().getModel().getItemNumByBid(item_bid); item_label.string = cc.js.formatStr("%s/%s", Utils.getMoneyString(count, true,false), Utils.getMoneyString(item_num, true,false)); } }, clickStepAdvanced(){ this.changeAutoAdvanceStatus(false); if(this.select_hallows){ this.ctrl.requestHallowsAdvance(this.select_hallows.id, false) ; } }, clickAutoStepAdvanced(){ let is_in_advance = !this.is_in_advance; if(is_in_advance && this.select_hallows){ this.ctrl.requestHallowsAdvance(this.select_hallows.id, false) ; } this.changeAutoAdvanceStatus(is_in_advance); }, //自动进阶显示状态 changeAutoAdvanceStatus:function(is_in_advance){ if(is_in_advance == this.is_in_advance)return; this.is_in_advance = is_in_advance; if(!this.select_hallows.id){ return; } if(this.is_in_advance){ this.step_auto_advanced_btn_label.string = nx.text.getKey("lab_hallows_main_window_tip20"); if(this.auto_time_ticket == null){ this.auto_time_ticket = gcore.Timer.set((function () { if(this.is_in_advance){ this.ctrl.requestHallowsAdvance(this.select_hallows.id, false); } }).bind(this), 200,-1); } }else{ this.clearAutoTimeticket(); this.step_auto_advanced_btn_label.string = nx.text.getKey("QuickUpLev"); } }, getLvupStatus(){ return this.is_in_advance; }, clearAutoTimeticket:function(){ if(this.auto_time_ticket){ gcore.Timer.del(this.auto_time_ticket); this.auto_time_ticket = null; } }, } );