258 lines
8.6 KiB
JavaScript
258 lines
8.6 KiB
JavaScript
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 联盟活跃
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
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;
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
},
|
||
|
|
|
||
|
|
} );
|