Files
2026-05-23 22:10:14 +08:00

283 lines
7.6 KiB
JavaScript

/******************************************************************
*
* 联盟主窗体
*
******************************************************************/
const BridgeWindow = require( "bridge.window" );
const GuildConst = require( "guild_const" );
const GuildEvent = require( "guild_event" );
const GuildController = require( "guild_controller" );
const RoleController = require( "role_controller" );
const TipController = require( "tips_controller" );
// 工会职位
const GPT = GuildConst.PositionType;
cc.Class( {
extends: BridgeWindow,
properties: {
nodBase: { default: null, type: cc.Node },
nodSign: { default: null, type: cc.Node },
nodOps: { default: null, type: cc.Node },
nodBtns: { default: null, type: cc.Node },
},
// 显示
onEnable: function() {
this.ctrl = GuildController.getInstance();
this.model = this.ctrl.getModel();
// 事件监听
this.bindGEvent( GuildEvent.UpdateMyInfoEvent, this.onUpdateInfo.bind( this ) );
this.ctrl.reqBase( ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
this.scheduleOnce( () => {
this.close();
}, 0.01 );
return;
}
this.freshDetail( _data );
this.freshSign( _data );
this.freshOps( _data );
} );
},
// 关闭
onDisable: function() {
this.unbindGEvents();
},
// 刷新成员人数
updateMember: function( _data ) {
let info = _data || this.model.getMyGuildInfo();
let txt = info ? ( info.members_num + "/" + info.members_max ) : "0/0";
nx.gui.setString( this.nodBase, "member/txt", txt );
},
// 刷新联盟等级
updateLevel: function( _data ) {
let info = _data || this.model.getMyGuildInfo();
let lev = info ? info.lev : 1;
nx.gui.setString( this.nodBase, "level/txt", nx.text.format( "LvNumber", lev ) );
},
// 刷新联盟经验
updateExp: function( _data ) {
let info = _data || this.model.getMyGuildInfo();
let DATA = game.configs.guild_data.data_guild_lev;
let limit = DATA[ info.lev ].exp;
nx.gui.setString( this.nodBase, "exp/txt", info.exp + "/" + limit );
let prog = nx.gui.getComponent( this.nodBase, "prog", cc.ProgressBar );
prog.progress = info.exp / limit;
},
// 更新推送
onUpdateInfo: function( _key, _value ) {
// 成员人数
if( _key == "members_num" ) {
this.updateMember();
return;
}
// 联盟等级
if( _key == "lev" ) {
this.updateLevel();
return;
}
// 联盟经验
if( _key == "exp" ) {
this.updateExp();
return;
}
},
// 刷新详情
freshDetail: function( _data ) {
nx.gui.setString( this.nodBase, "name/txt", _data.name );
nx.gui.setString( this.nodBase, "leader/txt", _data.leader_name );
this.updateMember( _data );
this.updateLevel( _data );
this.updateExp( _data );
},
// 刷新口号
freshSign: function( _data ) {
nx.gui.setString( this.nodSign, "txt", _data.sign || "" );
},
// 刷新操作
freshOps: function( _data ) {
let role = RoleController.getInstance().getRoleVo();
if( !role || role.position == GPT.Member ) {
nx.gui.setActive( this.nodSign, "modify", false );
nx.gui.setActive( this.nodBase, "rename", false );
for (let i = 0; i < this.nodOps.children.length; i++) {
const op = this.nodOps.children[i];
if( i == 1 || i == this.nodOps.children.length - 1 ){
nx.gui.setActive( op, "", true );
continue;
}
nx.gui.setActive( op, "", false );
}
} else {
nx.gui.setActive( this.nodSign, "modify", true );
nx.gui.setActive( this.nodBase, "rename", true );
this.nodOps.children.forEach(op => {
nx.gui.setActive( op, "", true );
});
}
},
// 联盟改名
onTouchRename: function() {
let self = this;
let modify = function( _name ) {
self.ctrl.reqRename( _name, ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
return;
}
nx.gui.setString( self.nodBase, "name/txt", _name );
} )
};
let TC = TipController.getInstance();
TC.showInputString( {
txt: this.model.getMyGuildInfo().name,
tip: "GuildInputNameEmpty", limit: [ 4, 12 ], cb: ( _box, _str ) => {
_box.close();
modify( _str );
}
} );
},
// 口号修改
onTouchModifySign: function() {
let self = this;
let modify = function( _sign ) {
self.ctrl.reqModifySign( _sign, ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
return;
}
nx.gui.setString( self.nodSign, "txt", _sign );
} )
};
let TC = TipController.getInstance();
TC.showInputWords( {
txt: this.model.getMyGuildInfo().sign,
tip: "GuildInputSignEmpty", limit: [ 4, 100 ], cb: ( _box, _str ) => {
_box.close();
modify( _str );
}
} );
},
// 一键招募
onTouchRecruit: function() {
// 判空
let info = this.model.getMyGuildInfo();
if( !info ) {
return;
}
// 免费
if( info.recruit_num < 1 ) {
nx.mbox( "GuildRecruitFree", [ 'cancel', 'confirm' ], ( _key, _box ) => {
_box.close();
if( _key == 'confirm' ) {
this.ctrl.reqBroadcast( ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
return;
}
} );
}
} );
return;
}
// 付费
let cost = gdata( "guild_data", "data_const", "recruit_cost" );
let role = RoleController.getInstance().getRoleVo();
if( !cost || !role ) {
return;
}
let txt = nx.text.format( "GuildRecruitPay", cost.val );
nx.mbox( txt, [ 'cancel', 'confirm' ], ( _key, _box ) => {
_box.close();
if( _key == 'confirm' ) {
this.ctrl.reqBroadcast( ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
return;
}
} );
}
} );
},
// 点击成员管理
onTouchMemebers: function() {
// 普通成员浏览
let role = RoleController.getInstance().getRoleVo();
if( role.position == GPT.Member ) {
nx.bridge.createPanel( "WndGuildMemberList" );
return;
}
// 特殊的管理
nx.bridge.createPanel( "WndGuildMemberManager" );
},
// 点击每日獎勵
onTouchDailyReward: function() {
this.ctrl.reqGetDailyReward( ( _ret, _data ) => {
if( !_ret ) {
nx.tbox( _data );
return;
}
_data.mod = this.ctrl;
nx.bridge.createPanel( "WndGuildReward", _data );
});
},
} );