Files
fc/dev/project/assets/Scripts/mod/home/base_kernel/cmp.kernel.item.base.js
T
2026-05-23 22:10:14 +08:00

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 );
}
} );
}
});