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