Files
fc/dev/project/library/imports/66/66dde426-0d2c-44bd-9922-097056b872af.js
T
2026-05-24 10:21:26 +08:00

548 lines
17 KiB
JavaScript

"use strict";
cc._RF.push(module, '66ddeQmDSxEvZkiCXBWuHKv', 'cmp.wings.page');
// Scripts/mod/partner/cmps/bag/cmp.wings.page.js
"use strict";
/******************************************************************
*
* 僚机背包页
*
******************************************************************/
var MenuPage = require("cmp.com.menu.page");
var ElfinEvent = require("elfin_event");
var ElfinController = require("elfin_controller");
var TipsController = require("tips_controller");
var RoleController = require("role_controller");
var BackpackController = require("backpack_controller");
var NxSpine = require("nx.fx.spine");
var ItemBase = require("cmp.item.base");
var wing = "wing";
cc.Class({
"extends": MenuPage,
properties: {
power: {
"default": null,
type: cc.Node
},
lev: {
"default": null,
type: cc.Node
},
stageInfo: {
"default": null,
type: cc.Node
},
props: {
"default": null,
type: cc.Node
},
stages: {
"default": [],
type: cc.Node
},
skills: {
"default": [],
type: cc.Node
},
needs: {
"default": null,
type: cc.Node
},
ops: {
"default": null,
type: cc.Node
},
role: {
"default": null,
type: cc.Sprite
},
nodMax: {
"default": null,
type: cc.Node
},
spEffect: {
"default": null,
type: NxSpine
}
},
onLoad: function onLoad() {
nx.gui.setSpriteFrame(this.role, "", null);
this.spEffect.stop();
},
onEnable: function onEnable() {
// 事件监听
this.bindGEvent(ElfinEvent.Get_Elfin_Tree_Data_Event, this.onFreshFirst.bind(this));
this.bindGEvent(ElfinEvent.Elfin_Plan_From_Info_Event, this.onFreshDefault.bind(this));
this.bindGEvent(ElfinEvent.Elfin_Tree_Lv_Up_Event, this.onPlayEffect.bind(this));
this.onDealData();
},
onDisable: function onDisable() {
this.unbindGEvents();
},
// 首次点击如果获取不到相关的僚机数据,请求
onDealData: function onDealData() {
var Elfin = ElfinController.getInstance();
var model = Elfin.getModel();
this.elfinData = model.getElfinTreeData();
// if( nx.dt.objEmpty( this.elfinData ) ){
// Elfin.sender26510();
// }else{
// this.onFreshFirst();
// }
Elfin.sender26510();
// getElfinTreeData
},
// 收到消息
onFreshFirst: function onFreshFirst(_data) {
var Elfin = ElfinController.getInstance();
var model = Elfin.getModel();
this.elfinData = model.getElfinTreeData() || _data;
this.onFreshWings(this.elfinData);
},
onFreshWings: function onFreshWings(_data) {
var elfinData = _data;
if (!this.dataAnalyst()) {
return;
}
// {"pos":2,"item_bid":0},{"pos":1,"item_bid":113005}
var cfg = game.configs.sprite_data.data_tree_step[elfinData.break_lev];
// 等级
var txt = elfinData.lev + "/" + cfg.lev_max;
nx.gui.setString(this.power, "", elfinData.power);
nx.gui.setStringRich(this.lev, "", nx.text.format("WingLevel", elfinData.lev, cfg.lev_max));
nx.gui.setString(this.props, "ATK/txt", elfinData.atk);
nx.gui.setString(this.props, "HP/txt", elfinData.hp_max);
nx.gui.setString(this.props, "DEF/txt", elfinData.def);
nx.gui.setString(this.props, "SPD/txt", elfinData.speed);
nx.gui.setString(this.stageInfo, "", nx.text.format("FortressLevel_", elfinData.break_lev));
this.reds = [];
this.updateNeeds();
this.freshOps();
this.setWingsInfo(this.elfinData);
// if( )
// nx.bridge.setIcon( this.role, "", ifg.imageid );
// let ifg = gdata( "item_data","data_unit9", cmp.mdata );
// nx.bridge.setIcon( this.role, "", ifg.imageid );
// this.role_bid = cmp.mdata;
},
// 操作刷新
freshOps: function freshOps() {
nx.gui.setActive(this, "upstar", false);
// 尚未当阶段满级,更新升级花费
// 最大等级按照当前阶段的最高等级/如果是顶阶那么按照最大等级
var maxLv = this.data.cbc.lev_max;
if (nx.dt.objEmpty(this.data.nbc)) {
maxLv = Math.max(maxLv, this.data.scfg.lev);
}
if (this.elfinData.lev < maxLv) {
nx.gui.setActive(this.ops, "uplevel", true);
nx.gui.setActive(this.nodMax, "", false);
nx.gui.setActive(this.ops, "break", false);
this.updateNeeds();
return;
}
// 当前满级,需要升阶判断
// 已经顶阶
if (nx.dt.objEmpty(this.data.nbc)) {
nx.gui.setActive(this.nodMax, "", true);
nx.gui.setActive(this.needs, "", false);
nx.gui.setActive(this.ops, "uplevel", false);
nx.gui.setActive(this.ops, "break", false);
return;
}
if (this.elfinData.lev == maxLv && this.data.cbc.count <= this.elfinData.break_lev) {
nx.gui.setActive(this.needs, "", true);
nx.gui.setActive(this.nodMax, "", false);
nx.gui.setActive(this.ops, "uplevel", false);
nx.gui.setActive(this.ops, "break", true);
return;
}
// 红点提示
this.freshRed();
},
// 刷新当前位置上显示的僚机信息与对应的技能信息
setWingsInfo: function setWingsInfo(_elfinData) {
/**
* {"lev":2,"break_lev":0,"atk":5872,"def_p":0,"def_s":0,"hp_max":35261,"speed":110,"hit_rate":9999,"dodge_rate":0,"crit_rate":2000,"crit_ratio":1200,"hit_magic":0,"dodge_magic":0,"def":220,
* "sprites":[{"pos":1,"item_bid":111004}],"power":75}
*/
var sprites = _elfinData.sprites;
sprites.sort(Utils.tableLowerSorter(["pos"]));
var chd = this.stages;
for (var i = 0; i < chd.length; i++) {
nx.gui.setString(chd[i], "name/txt", nx.text.format("FortressLevel_Unlocked", i));
// nx.gui.setActive( this.skills[i], "", );
var sprite = sprites[i];
if (sprite) {
var cmp = chd[sprite.pos - 1].getComponent(ItemBase);
if (cmp) {
cmp.setLocked(false);
if (sprite.item_bid >= 0) {
cmp.setData(sprite.item_bid);
if (i == 0) {
if (sprite.item_bid >= 0) {
this.role_bid = sprite.item_bid > 0 ? sprite.item_bid : 0;
this.onTouchFormOn(0);
// let ifg = gdata( "item_data","data_unit9", sprite.item_bid )
// nx.bridge.setIcon( this.role, "", ifg.imageid );
} else {
nx.gui.setSpriteFrame(this.role, "", null);
this.role_bid = null;
}
}
var sfgc = game.configs.sprite_data.data_elfin_data[sprite.item_bid];
var scmp = this.skills[sprite.pos - 1].getComponent("cmp.skill.base");
var sfg = gdata("sprite_data", "data_elfin_data", sprite.item_bid);
if (sfgc) {
var sfgg = gdata("skill_data4", "data_get_skill", sfg.skill);
nx.bridge.setIcon(this.skills[sprite.pos - 1], "icon", sfgg.icon);
if (scmp) {
scmp.setData(sfg.skill);
}
} else {
scmp.setData({});
nx.gui.getComponent(this.skills[sprite.pos - 1], "icon", cc.Sprite).curKey = "";
}
nx.gui.setActive(this.skills[sprite.pos - 1], "skillsp", sprite.item_bid > 0);
// if( sfgs ) {
// nx.bridge.setIcon( this.skills[sprite.pos-1], "icon", parseInt( sfgs.icon ) );
// }
// if( sfgc ){
// if( scmp ){
// scmp.setData( sfg.skill );
// }
// }else{
// if( scmp ){
// scmp.setData( [] );
// }
// }
}
}
}
}
},
freshRed: function freshRed() {
var canUpLevel = true;
var needs = 0;
this.reds.forEach(function (_need) {
if (_need.is_enough) {
needs++;
}
});
canUpLevel = needs >= 2;
nx.gui.setActive(this.ops, "uplevel/tip", false);
nx.gui.setActive(this.ops, "uplevel/tipSp", !!canUpLevel);
},
// 数据统计
dataAnalyst: function dataAnalyst() {
// 空目标
if (nx.dt.objEmpty(this.elfinData)) {
return false;
}
var scfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev);
if (nx.dt.objEmpty(scfg)) {
nx.error("升级刷新失败,当前配置无效!");
return false;
}
var cbc = game.configs.sprite_data.data_tree_step[this.elfinData.break_lev];
if (nx.dt.objEmpty(cbc)) {
nx.error("升级刷新失败,当前配置无效!");
return false;
}
var k2 = this.elfinData.break_lev + 1;
var nbc = game.configs.sprite_data.data_tree_step[k2];
this.data = {
scfg: scfg,
// 当前配置
cbc: cbc,
// 当前阶段配置
nbc: nbc // 下个阶段配置
};
return true;
},
// 更新升级花费
updateNeeds: function updateNeeds() {
var lev = this.elfinData.lev;
var max = lev;
var step = 1;
var needs = {};
var model = BackpackController.getInstance().getModel();
var check = function check(_costs) {
var cur = {};
var enough = true;
for (var i = 0; i < _costs.length; ++i) {
var cost = _costs[i];
var id = cost[0];
if (cur[id] == null) {
cur[id] = 0;
}
cur[id] = cur[id] + cost[1];
var count = model.getItemNumByBid(id);
if (count < cur[id]) {
enough = false;
}
}
return {
is_enough: enough,
cur_cost_list: cur
};
};
// 资源统计
var maxLv = Math.max(this.data.cbc.lev_max, this.data.scfg.lev);
for (var i = 1; i <= step; ++i) {
var next = this.elfinData.lev + i - 1;
if (next >= maxLv) {
break;
}
var _cfg = gdata("sprite_data", "data_tree_up_lv", next);
if (_cfg) {
var up_cost = _cfg.expend || [];
var ret = check(up_cost);
this.reds.push(ret);
var is_enough = ret.is_enough;
var cost_list = ret.cur_cost_list;
if (is_enough) {
needs = cost_list;
max = next;
} else {
if (i == 1) {
needs = cost_list;
}
break;
}
}
}
var role_vo = RoleController.getInstance().getRoleVo();
var cfgs = gdata("sprite_data", "data_tree_step", this.elfinData.break_lev);
// console.log( role_vo.lev + "当前的判断" + JSON.stringify( cfgs.step_cond[0][1] ) );
if (role_vo.lev < cfgs.step_cond[0][1]) {
nx.gui.setString(this.ops, "break/txt", nx.text.format("BreakLevel", cfgs.step_cond[0][1]));
} else {
nx.gui.setString(this.ops, "break/txt", nx.text.getKey("Break"));
}
// 消耗刷新
nx.gui.setActive(this.nodMax, "", false);
var list = nx.gui.setActive(this.needs, "", true);
var cfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev);
var expend = cfg ? cfg.expend || [] : [];
for (var k = 0; k < expend.length; ++k) {
var ifo = expend[k];
var node = list.children[k];
if (nx.dt.arrEmpty(ifo)) {
node.active = false;
continue;
}
node.active = true;
var item = gdata("item_data", "data_unit1", ifo[0], false);
nx.bridge.setIconS(node, "icon", item.icon);
var count = ifo[1]; //ifo[1];
// let have_count = model.getItemNumByBid( ifo[ 0 ] );
nx.gui.setString(node, "txt", count);
}
;
this.freshRed();
},
upLevel: function upLevel() {
var cfg = gdata("sprite_data", "data_tree_up_lv", this.elfinData.lev);
var mat = cfg.expend[0][0];
var count = BackpackController.getInstance().getModel().getItemNumByBid(mat);
var TC = TipsController.getInstance();
if (count < cfg.expend[0][1]) {
var ifg = gdata("item_data", "data_unit1", mat);
if (TC) {
if (ifg) {
nx.tbox(nx.text.format(nx.text.getKey("lab_hero_break_window_tip1"), ifg.name));
}
TC.showItemTips(mat);
return;
}
}
var Elfin = ElfinController.getInstance();
if (Elfin) {
Elfin.sender26511();
}
},
// 要弹窗
breakLevel: function breakLevel() {
var role_vo = RoleController.getInstance().getRoleVo();
var cfg = gdata("sprite_data", "data_tree_step", this.elfinData.break_lev);
if (role_vo.lev < cfg.step_cond[0][1]) {
nx.tbox(nx.text.format(nx.text.format("BreakLevel", cfg.step_cond[0][1])));
return;
}
var Elfin = ElfinController.getInstance();
if (Elfin) {
Elfin.openElfinTreeStepWindow(true);
}
},
onTouchFormOn: function onTouchFormOn(_index) {
this.stages.forEach(function (_item) {
var cmp = _item.getComponent(ItemBase);
if (cmp) {
cmp.outFocus();
}
});
if (this.role_bid == 0) {
// nx.bridge.setIcon( this.role, "", "" );
nx.gui.setSpriteFrame(this.role, "", null);
nx.gui.getComponent(this.role, "", cc.Sprite).curKey = "";
this.role_bid = 1;
} else {
var cmp = this.stages[_index].getComponent(ItemBase);
if (cmp) {
if (!cmp.mdata) {
nx.tbox(nx.text.format("FortressLevel_Unlocked", _index));
return;
}
if (nx.dt.objGood(cmp.mdata)) {
nx.tbox(nx.text.getKey("tip_Assemble_first"));
return;
}
if (!nx.dt.objGood(cmp.mdata)) {
var ifg = gdata("item_data", "data_unit9", cmp.mdata);
nx.bridge.setIcon(this.role, "", ifg.imageid);
this.role_bid = cmp.mdata;
cmp.onFocus();
}
}
}
},
// 刷新默认操作
onFreshDefault: function onFreshDefault(_schemeDefault) {
// 这里存储默认的方案配置信息
// console.log( "获取的默认配置信息" + JSON.stringify( _schemeDefault ) );
var Elfin = ElfinController.getInstance();
Elfin.getModel().freshDefaultScheme(_schemeDefault);
},
// 规则说明
onTouchTip: function onTouchTip() {
var TC = TipsController.getInstance();
if (TC) {
var txt = game.configs.sprite_data.data_const.ancient_desc;
TC.showTextPanel("tip", txt.desc);
}
},
// 打开装配
onTouchAssemble: function onTouchAssemble() {
var Elfin = ElfinController.getInstance();
if (Elfin) {
// let model = Elfin.getModel();
// let schemes = model.getAllPlanData();
// if( !schemes || nx.dt.objEmpty( schemes ) ){
// Elfin.send26556();
// }
Elfin.openElfinAdjustWindow(true, 100, 1);
}
},
// 打开预览
openElfinBookWindow: function openElfinBookWindow() {
var Elfin = ElfinController.getInstance();
if (Elfin) {
Elfin.openElfinBookWindow(true);
}
},
// 打开科研
openWingScientfic: function openWingScientfic() {
var Elfin = ElfinController.getInstance();
if (Elfin) {
var model = Elfin.getModel();
var lst = model.getElfinHatchList();
if (!lst || nx.dt.objEmpty(lst)) {
Elfin.sender26500();
}
// Elfin.sender26500();
Elfin.openWingScientfic(true);
}
},
onPlayEffect: function onPlayEffect() {
var _this = this;
this.spEffect.load("resDB/effects/E80023/action", function (_e) {
if (!_e) {
_this.spEffect.action("action", false);
} else {
_this.spEffect.stop();
}
});
},
// 打开采购
openElfinProcurement: function openElfinProcurement() {
var Elfin = ElfinController.getInstance();
if (Elfin) {
var model = Elfin.getModel();
var summon = model.getElfinSummonData();
if (!summon || nx.dt.arrEmpty(summon)) {
Elfin.send26550();
}
Elfin.openElfinWishWindow(true);
}
},
// 点击显示技能介绍
onTouchShowSkill: function onTouchShowSkill() {
var sfgc = game.configs.sprite_data.data_elfin_data[this.role_bid];
if (!this.role_bid || this.role_bid == 0 || !sfgc) {
nx.tbox("NoneWingsInfo");
return;
}
var sfg = gdata("sprite_data", "data_elfin_data", this.role_bid);
var TC = TipsController.getInstance();
if (TC) {
TC.showSkillTips(sfg.skill);
}
},
// 点击技能显示相应的融合升级技能界面
onTouchSkill: function onTouchSkill(_index) {
var EC = ElfinController.getInstance();
var chd = this.stages[_index];
var cmp = chd.getComponent(ItemBase);
var scmp = this.skills[_index].getComponent("cmp.skill.base");
var sid = 0;
var item_bid = 0;
if (scmp) {
if (!scmp.mdata) {
return;
}
if (nx.dt.objGood(scmp.mdata)) {
nx.tbox(nx.text.getKey("tip_Assemble_first"));
return;
}
if (!nx.dt.objGood(scmp.mdata)) {
sid = scmp.mdata;
}
}
if (cmp) {
if (!nx.dt.objGood(cmp.mdata)) {
item_bid = cmp.mdata;
}
}
if (item_bid == 0 || sid == 0) {
return;
}
if (EC) {
var index = parseInt(_index);
var pos = index + 1;
EC.openElfinCompoundWindow(true, item_bid, sid, pos, wing, 0, function (_data) {
if (EC) {
EC.sender26508(_data.item_id, 1, pos);
// this.close();
}
});
}
}
});
cc._RF.pop();