286 lines
9.6 KiB
JavaScript
286 lines
9.6 KiB
JavaScript
|
|
"use strict";
|
|||
|
|
cc._RF.push(module, '28139eMn3xHC4AetwtXDyDW', 'cmp.hallows.main.lvup');
|
|||
|
|
// Scripts/mod/partner/hallows/cmp/cmp.hallows.main.lvup.js
|
|||
|
|
|
|||
|
|
"use strict";
|
|||
|
|
|
|||
|
|
/******************************************************************
|
|||
|
|
*
|
|||
|
|
* 僚机背包页
|
|||
|
|
*
|
|||
|
|
******************************************************************/
|
|||
|
|
var BridgeComponent = require("bridge.component");
|
|||
|
|
var PathTool = require("pathtool");
|
|||
|
|
var HallowsConst = require("hallows_const");
|
|||
|
|
var HallowsEvent = require("hallows_event");
|
|||
|
|
var HallowsController = require("hallows_controller");
|
|||
|
|
var 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 onLoad() {
|
|||
|
|
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: function 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: function 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: function onEnable() {},
|
|||
|
|
onDisable: function onDisable() {
|
|||
|
|
this.changeAutoAdvanceStatus(false);
|
|||
|
|
this.clearAutoTimeticket();
|
|||
|
|
// 监听事件释放
|
|||
|
|
// this.unbindGEvents();
|
|||
|
|
},
|
|||
|
|
setData: function setData(hallows) {
|
|||
|
|
this.select_hallows = hallows;
|
|||
|
|
var 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: function 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("<color=#27ae10>%s</color>/%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;
|
|||
|
|
var 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));
|
|||
|
|
}
|
|||
|
|
var 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("<img src='%s'/> %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 onPreClosed() {},
|
|||
|
|
//设置神器升级相关显示
|
|||
|
|
updateStepInfo: function updateStepInfo() {
|
|||
|
|
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("<color=#27ae10>%s</color>/%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];
|
|||
|
|
var is_one = false;
|
|||
|
|
var 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 setCostDataToNode(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, function (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: function clickStepAdvanced() {
|
|||
|
|
this.changeAutoAdvanceStatus(false);
|
|||
|
|
if (this.select_hallows) {
|
|||
|
|
this.ctrl.requestHallowsAdvance(this.select_hallows.id, false);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
clickAutoStepAdvanced: function clickAutoStepAdvanced() {
|
|||
|
|
var 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 changeAutoAdvanceStatus(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: function getLvupStatus() {
|
|||
|
|
return this.is_in_advance;
|
|||
|
|
},
|
|||
|
|
clearAutoTimeticket: function clearAutoTimeticket() {
|
|||
|
|
if (this.auto_time_ticket) {
|
|||
|
|
gcore.Timer.del(this.auto_time_ticket);
|
|||
|
|
this.auto_time_ticket = null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
cc._RF.pop();
|