/****************************************************************** * * 联盟活跃 * ******************************************************************/ const BridgeWindow = require( "bridge.window" ); const ItemLayout = require( "cmp.item.layout" ); const GuildEvent = require( "guild_event" ); const GuildController = require( "guild_controller" ); const FID = require( "bridge.function.ids" ); cc.Class( { extends: BridgeWindow, properties: { nodBase: { default: null, type: cc.Node }, nodList: { default: null, type: cc.Node }, nodLvUp: { default: null, type: cc.Node }, nodRewards: { default: null, type: ItemLayout }, }, // 显示 onEnable: function() { this.ctrl = GuildController.getInstance(); this.model = this.ctrl.getModel(); this.finishs = []; // 监听 this.bindGEvent( GuildEvent.UpdateMyInfoEvent, this.updateMyInfo.bind( this ) ); this.bindGEvent( GuildEvent.UpdataGuildGoalBasicData, this.updateBase.bind( this ) ); this.bindGEvent( GuildEvent.UpdataGuildGoalTaskData, this.updateTaskList.bind( this ) ); this.bindGEvent( GuildEvent.UpdataGuildGoalSingleTaskData, this.updateTask.bind( this ) ); // 信息请求 this.ctrl.reqActBaseInfo(); this.ctrl.reqActTaskInfo(); }, // 关闭 onDisable: function() { // 监听解除 this.unbindGEvents(); }, // 联盟信息更新 updateMyInfo: function( _key, _val ) { console.log( "updateMyInfo:", _key, _val ); if( _key == "vitality" ) { nx.gui.setString( this.nodBase, "vitality/txt", _val ); } }, // 活跃信息更新 updateBase: function( _data ) { // 工会活跃等级 let gifo = this.model.getMyGuildInfo(); nx.gui.setString( this.nodBase, "vitality/txt", gifo.vitality ); // 个人活跃等级 let txt = nx.text.format( "LvNumber", _data.lev ); nx.gui.setString( this.nodBase, "level/txt", txt ); nx.gui.setString( this.nodBase, "today/txt", _data.day_exp ); nx.gui.setString( this.nodBase, "week/txt", _data.week_exp ); // 进度 let DATA = game.configs.guild_quest_data.data_lev_data; let prog = nx.gui.getComponent( this.nodBase, "prog", cc.ProgressBar ); let self = this; let attrs = function( _fat, _tat ) { for( let i = 0; i < 2; ++i ) { let node = nx.gui.find( self.nodBase, "props/p" + ( i + 1 ) ); let from = _fat[ i ]; if( nx.dt.arrEmpty( from ) ) { node.active = false; continue; } node.active = true; nx.bridge.attrs.setAttribute( nx.gui.find( node, "from" ), from ); if( _tat ){ let to = _tat[ i ]; if( nx.dt.arrEmpty( to ) ) { nx.gui.setActive( node, "arrow", false ); nx.gui.setActive( node, "to", false ); continue; } nx.gui.setActive( node, "arrow", true ); nx.gui.setActive( node, "to", true ); nx.bridge.attrs.setAttribute( nx.gui.find( node, "to" ), to ); } } }; if( ( _data.lev + 1 ) >= game.configs.guild_quest_data.data_lev_data_length ) { prog.progress = 1; attrs( DATA[ _data.lev ].attr ); nx.gui.setActive( this.nodLvUp, "", false ); } else { prog.progress = Math.floor( _data.exp / DATA[ _data.lev ].exp * 100 ) / 100; attrs( DATA[ _data.lev ].attr, DATA[ _data.lev + 1 ].attr ); if( _data.exp >= DATA[ _data.lev ].exp ) { nx.gui.setActive( this.nodLvUp, "", true ); this.nodRewards.rebuild( DATA[ _data.lev + 1 ].items ); } else { nx.gui.setActive( this.nodLvUp, "", false ); } } }, // 活跃任务列表更新 updateTaskList: function( _data ) { let DATA = game.configs.guild_quest_data.data_task_data; let tasks = []; for( let i in _data.list ) { let tk = nx.dt.objClone( _data.list[ i ] ); for( let k in DATA ) { let cfg = DATA[ k ]; if( cfg && cfg.id == tk.id ) { tk.cfgs = cfg; tasks.push( tk ); if( parseInt( tk.cfgs.show_jump ) == FID.GuildDonate && !nx.dt.arrMember( this.finishs, parseInt( tk.cfgs.show_jump ) ) && tk.finish == 2 ){ this.finishs.push( FID.GuildDonate ); } } } } tasks.sort( ( _a, _b ) => { return _a.finish - _b.finish; } ); let self = this; // 任务设置 let setask = function( _node, _task ) { _node.task = _task; // 日常/周长 nx.gui.setActive( _node, "type/day", _task.cfgs.type == 1 ); nx.gui.setActive( _node, "type/week", _task.cfgs.type == 2 ); // 信息 nx.gui.setString( _node, "name", nx.text.getKey( _task.cfgs.name ) ); nx.gui.setString( _node, "exp/txt", "+" + _task.cfgs.exp ); // 进度 let txt = _task.value + "/" + _task.target_val; nx.gui.setString( _node, "progress/txt", txt ); // 操作 nx.gui.setActive( _node, "ops/done", _task.finish == 2 ); nx.gui.setActive( _node, "ops/goto", _task.finish == 0 ); let btn = nx.gui.getComponent( _node, "ops/goto", cc.Button ); btn.interactable = !nx.dt.arrMember( self.finishs, parseInt( _task.cfgs.show_jump ) ) && _task.finish == 0; nx.gui.setOutlineColor( _node, "ops/goto/txt", !nx.dt.arrMember( self.finishs, parseInt( _task.cfgs.show_jump ) ) && _task.finish == 0 ? new cc.color( "#236491" ) : cc.Color.BLACK ); }; let chds = this.nodList.children; nx.gui.gocChildren( this.nodList, "", tasks.length, chds[ 0 ] ); for( let i = 0; i < tasks.length; ++i ) { setask( chds[ i ], tasks[ i ] ); } }, // 活跃单任务更新 updateTask: function( _data ) { if( !_data || nx.dt.arrEmpty( _data.list ) ) { return; } let chds = this.nodList.children; for( let i = 0; i < _data.list.length; ++i ) { let info = _data.list[ i ]; let idsss = parseInt( game.configs.guild_quest_data.data_task_data[info.id].show_jump ); if( idsss == FID.GuildDonate ){ if( !nx.dt.arrMember( this.finishs, idsss ) ){ this.finishs.push( FID.GuildDonate ); } } for( let k = 0; k < chds[ k ]; ++k ) { let node = chds[ k ]; if( node && node.task && node.task.id == info.id ) { node.task.finish = info.finish; node.task.target_val = info.target_val; node.task.value = info.value; // 进度 let txt = info.value + "/" + info.target_val; nx.gui.setString( node, "progress/txt", txt ); // 操作 nx.gui.setActive( node, "ops/done", info.finish == 2 ); nx.gui.setActive( node, "ops/goto", info.finish == 0 ); let btn = nx.gui.getComponent( node, "ops/goto", cc.Button ); btn.interactable = !nx.dt.arrMember( this.finishs, parseInt( node.task.cfgs.show_jump ) ) && node.task.finish == 0; nx.gui.setOutlineColor( node, "ops/goto/txt", !nx.dt.arrMember( this.finishs, parseInt( node.task.cfgs.show_jump ) ) && node.task.finish == 0 ? new cc.color( "#236491" ) : cc.Color.BLACK ); break; } } } }, // 点击前往 onTouchGoto: function( _btn ) { let task = _btn.parent.parent.task; if( task && task.cfgs ) { let ret = nx.bridge.jumper.jump2Window( task.cfgs.show_jump ); // if( ret ) { nx.bridge.closePanel( "WndGuildActive" ); // } } }, // 点击领取 onTouchGet: function() { this.ctrl.reqActLevelUp( ( _ret, _data ) => { if( !_ret ) { nx.tbox( _data ); return; } } ); }, } );