548 lines
17 KiB
JavaScript
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(); |