Files
fc/dev/project/library/imports/28/2813978c-9f7c-470b-801e-b70b570f20d6.js
2026-05-24 10:21:26 +08:00

286 lines
9.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"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();