225 lines
8.2 KiB
JavaScript
225 lines
8.2 KiB
JavaScript
const KernelController = require( "halidom_controller" );
|
|
const SVCItem = require( "nx.fx.sv.expand.item" );
|
|
const kernel = "kernel";
|
|
const KCStyle = [
|
|
{ Bg : "bg_core_blue", UplevBg: "btn_blue" , Prog: "bg_progress_blue" },
|
|
{ Bg : "bg_core_red", UplevBg: "btn_red", Prog: "bg_progress_red" },
|
|
{ Bg : "bg_core_green", UplevBg: "btn_green", Prog: "bg_progress_green" },
|
|
{ Bg : "bg_core_yellow", UplevBg: "btn_yellow", Prog: "bg_progress_yellow" },
|
|
{ Bg : "bg_core_puple", UplevBg: "btn_puple", Prog: "bg_progress_purple" },
|
|
]
|
|
|
|
cc.Class({
|
|
|
|
extends: SVCItem,
|
|
|
|
properties: {
|
|
|
|
nodBg : { default: null, type: cc.Node },
|
|
nodCamp : { default: null, type: cc.Node },
|
|
nodName: { default: null, type: cc.Node },
|
|
nodLocked: { default: null, type: cc.Node },
|
|
nodLockedDesc: { default: null, type: cc.Node },
|
|
nodUnLocked: { default: null, type: cc.Node },
|
|
nodOp: { default: null, type: cc.Node },
|
|
|
|
},
|
|
|
|
// 数据重置
|
|
rebind: function( _idx, _data, _key ) {
|
|
|
|
this._super( _idx, _data, _key );
|
|
|
|
// 刷新
|
|
this.setData( _data );
|
|
|
|
},
|
|
|
|
// 设置相关的显示数据
|
|
setData: function( _data ){
|
|
|
|
this.locked = true;
|
|
if( !_data ){
|
|
return;
|
|
}
|
|
|
|
this.nodInfo = _data;
|
|
|
|
this.freshName();
|
|
this.freshDesc();
|
|
this.setLocked();
|
|
|
|
},
|
|
|
|
|
|
freshName: function(){
|
|
|
|
|
|
nx.gui.setString( this.nodName, "", this.nodInfo.name );
|
|
let bg = KCStyle[this.nodInfo.camp - 1].Bg;
|
|
let uplBg = KCStyle[this.nodInfo.camp - 1].UplevBg;
|
|
let progBg = KCStyle[this.nodInfo.camp - 1].Prog;
|
|
let path = "prefab/home/base_kernel/ui/" + bg;
|
|
let up_path = "prefab/home/base_kernel/ui/" + uplBg;
|
|
let prog_path = "prefab/home/ui/" + progBg;
|
|
|
|
let camp_path = "prefab/home/ui/png_logo_" + this.nodInfo.camp;
|
|
nx.gui.setSpriteFrame( this, "uplevel/icon", up_path );
|
|
nx.gui.setSpriteFrame( this.nodBg, "", path );
|
|
nx.gui.setSpriteFrame( this.nodCamp, "", camp_path );
|
|
nx.gui.setSpriteFrame( this.nodUnLocked, "camp/prog_top", prog_path );
|
|
|
|
},
|
|
|
|
setLocked: function(){
|
|
|
|
let stxt = this.nodInfo.level == 0 ? nx.text.getKey( "Unlock" ) : this.nodInfo.level == 100 ? nx.text.getKey( "tip_heroMaxed" ) : nx.text.getKey( "UpLevel" );
|
|
let cfg = game.configs.halidom_data.data_lvup[this.nodInfo.camp][this.nodInfo.level];
|
|
let KC = KernelController.getInstance();
|
|
nx.gui.setString( this.nodOp, "txt", stxt);
|
|
this.cb = this.nodInfo.level == 0 ? ()=>{
|
|
if( KC ){
|
|
KC.openKernelUnlocked( true, this.nodInfo.camp );
|
|
|
|
}
|
|
} : this.nodInfo.level == 100 ? ()=>{
|
|
nx.tbox( nx.text.getKey( "tip_heroMaxed" ) );
|
|
return;
|
|
} : ()=>{
|
|
|
|
if( KC ){
|
|
|
|
KC.openKernelUpLvWnd( true, this.nodInfo.level, this.nodInfo.camp );
|
|
|
|
}
|
|
};
|
|
|
|
nx.gui.setActive( this.nodLocked, "", this.nodInfo.level == 0 );
|
|
this.freshUnlocked();
|
|
nx.gui.setActive( this.nodUnLocked, "", this.nodInfo.level != 0 );
|
|
},
|
|
|
|
freshDesc: function(){
|
|
let desc = this.nodInfo.level == 0 ? this.nodInfo.lock_desc : "";
|
|
nx.gui.setStringRich( this.nodLockedDesc, "", desc );
|
|
},
|
|
|
|
freshUnlocked: function(){
|
|
|
|
// 获取对应的解锁后的属性配置 按照 阵营 等级查找
|
|
let cfg = game.configs.halidom_data.data_lvup[this.nodInfo.camp][this.nodInfo.level];
|
|
let gfg = game.configs.halidom_data.data_step[this.nodInfo.camp][this.nodInfo.step];
|
|
let sfg = game.configs.halidom_data.data_skill;
|
|
|
|
// 显示阵营相关属性
|
|
if( cfg ){
|
|
let attrs = cfg.attr;
|
|
let pnode = nx.gui.find( this.nodUnLocked, "camp" );
|
|
nx.gui.setString( pnode, "level/txt", this.nodInfo.level );
|
|
let prop_node = nx.gui.find( pnode, "props/prop/p" ).children;
|
|
let exp = nx.gui.find( pnode, "prog_top" );
|
|
let fp = exp.getComponent( cc.Sprite );
|
|
fp.fillRange = this.nodInfo.exp / cfg.total_exp;
|
|
// 属性id-name
|
|
for (let i = 0; i < prop_node.length; i++) {
|
|
let attr = attrs[i];
|
|
let path = "coms/images/ico_w" + attr[0];
|
|
nx.gui.setSpriteFrame( prop_node[i], "icon", path );
|
|
nx.gui.setString( prop_node[i], "txt", attr[1] );
|
|
}
|
|
|
|
}
|
|
if( gfg ){
|
|
let snode = nx.gui.find( this.nodUnLocked, "skill" );
|
|
let self = this;
|
|
nx.gui.setString( snode, "advance_lev/txt", nx.text.format( "LvNumber", gfg.step) );
|
|
let nodeLev = nx.gui.find( snode, "prog/prog_node" );
|
|
nx.gui.gocChildren( nodeLev, "", gfg.step );
|
|
let skill = sfg[gfg.skill_icon];
|
|
this.skill = sfg[gfg.skill_icon] || 0;
|
|
if( skill ){
|
|
let path = cc.path.join( "resDB/icons/skills/" + skill.res_id );
|
|
nx.gui.find( snode, "skill_info/sinfo/skill_icon" ).datass = this.nodInfo.camp;
|
|
|
|
// 先前顯示等級等
|
|
nx.gui.setActive( snode, "skill_info/sinfo/skill_icon/empty", false );
|
|
// nx.gui.setSpriteFrame( icon, "", path );
|
|
// let path = PathTool.querySmallIconPath( skill.res_id );
|
|
nx.gui.setSpriteFrame( snode, "skill_info/sinfo/skill_icon/icon", path, ( _err, _sprite )=>{
|
|
if( !_err ){
|
|
nx.gui.setActive( snode, "skill_info/sinfo/skill_icon/empty", true );
|
|
}
|
|
} );
|
|
nx.gui.setString( snode, "skill_info/sinfo/sname", skill.name );
|
|
nx.gui.setString( snode, "skill_info/sinfo/slev", nx.text.format( "LvNumber", skill.lev ) );
|
|
nx.gui.setString( snode, "skill_info/sprop/txt", nx.dt.arrEmpty( gfg.fixed_attr ) ? "" : gfg.fixed_attr[0][1] );
|
|
nx.gui.setActive( snode, "skill_info/sprop", !nx.dt.arrEmpty( gfg.fixed_attr ) );
|
|
nx.gui.setActive( snode, "skill_info/stitle", !nx.dt.arrEmpty( gfg.fixed_attr ) );
|
|
}
|
|
let attrs = nx.gui.find( snode, "skill_info/attr/attrs" );
|
|
for (let i = 0; i < attrs.children.length; i++) {
|
|
let item = attrs.children[i];
|
|
if( !nx.dt.arrEmpty( gfg.dynamic_attr ) ){
|
|
nx.bridge.attrs.setAttribute( item, [ gfg.dynamic_attr[i][0], gfg.dynamic_attr[i][1], i +1 ] );
|
|
}
|
|
|
|
}
|
|
nx.gui.setActive( snode, "skill_info/attr", false );
|
|
nx.gui.setActive( snode, "skill_info", skill );
|
|
nx.gui.setActive( snode, "empty", !skill );
|
|
}
|
|
|
|
},
|
|
|
|
// 点击
|
|
onTouchFun: function(){
|
|
nx.dt.fnInvoke( this.cb );
|
|
},
|
|
|
|
// 点击 陣營icon預覽相關
|
|
onTouchCampLogo: function(){
|
|
|
|
// nx.bridge.createPanel( "WndKernelPreview", {
|
|
// camp: this.nodInfo.camp,
|
|
// level: this.nodInfo.level,
|
|
// } );
|
|
},
|
|
|
|
|
|
onTouchUpgrade: function(){
|
|
|
|
let KC = KernelController.getInstance();
|
|
|
|
let gfg = game.configs.halidom_data.data_step[this.nodInfo.camp][this.nodInfo.step + 1];
|
|
let need = 0;
|
|
// if( !gfg ){
|
|
// nx.tbox( nx.text.getKey( "lab_haliMax" ) );
|
|
// return;
|
|
// }
|
|
KC.openHalidomUpgrade( true, this.nodInfo.step, this.skill.id, 0, kernel, this.nodInfo.camp, _data =>{
|
|
if( KC ){
|
|
|
|
if( gfg ){
|
|
if( this.nodInfo.level < gfg.conds[0][1] ){
|
|
nx.tbox( nx.text.format( "lab_haliHeroStep", this.nodInfo.name, gfg.conds[0][1] ) );
|
|
return;
|
|
}
|
|
need = gfg.loss_rand[0][2];
|
|
}else{
|
|
nx.tbox( nx.text.getKey( "lab_haliMax" ) );
|
|
return;
|
|
}
|
|
|
|
if( nx.dt.arrEmpty( _data.list2 ) || _data.list2.length < need ){
|
|
nx.tbox( nx.text.getKey( "tip_noEnoughMaterial" ) );
|
|
return;
|
|
}
|
|
|
|
KC.sender22204( _data.id, _data.list1, _data.list2 );
|
|
}
|
|
} );
|
|
|
|
}
|
|
|
|
});
|