"use strict"; cc._RF.push(module, '2dbf7Am47tNd4tWjYCt9GEt', 'guild_controller'); // Scripts/mod/guild/guild_controller.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-01-14 10:57:08 // -------------------------------------------------------------------- var GuildConst = require("guild_const"); var PathTool = require("pathtool"); var GuildEvent = require("guild_event"); var RoleController = require("role_controller"); var GuildController = cc.Class({ "extends": BaseController, ctor: function ctor() {}, // 初始化配置数据 initConfig: function initConfig() { var GuildModel = require("guild_model"); this.model = new GuildModel(); this.model.initConfig(); }, // 返回当前的model getModel: function getModel() { return this.model; }, // 注册监听事件 registerEvents: function registerEvents() { if (this.login_event_success == null) { this.login_event_success = gcore.GlobalEvent.bind(EventId.EVT_ROLE_CREATE_SUCCESS, function () { gcore.GlobalEvent.unbind(this.login_event_success); this.login_event_success = null; var RoleController = require("role_controller"); this.role_vo = RoleController.getInstance().getRoleVo(); if (this.role_vo) { this.requestInitProtocal(); if (this.role_assets_event == null) { this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) { if (key == "gid") { if (value == 0) { // 这个时候表示退帮了,需要关闭一些窗体 this.openGuildMainWindow(false); this.openGuildMemberWindow(false); this.openGuildDonateWindow(false); } else { // 有公会的时候,如果处于初始窗体,就标识加入或者创建 if (this.init_window) { this.request_open_main_window = true; } this.openGuildInitWindow(false); } this.requestInitProtocal(); } else if (key == "position") { this.model.updateMemberByPosition(value); } }.bind(this)); } } }.bind(this)); } }, // 注册协议接受事件 registerProtocals: function registerProtocals() { this.RegisterProtocal(13500, this.handle13500); // 创建公会 this.RegisterProtocal(13501, this.handle13501); // 公会列表 this.RegisterProtocal(13503, this.handle13503); // 申请加入公会 this.RegisterProtocal(13505, this.handle13505); // 操作申请成员的列表 this.RegisterProtocal(13507, this.handle13507); // 更新申请加入列表 this.RegisterProtocal(13513, this.handle13513); // 从公会中踢人 this.RegisterProtocal(13514, this.handle13514); // 退帮 this.RegisterProtocal(13516, this.handle13516); // 解散公会 this.RegisterProtocal(13518, this.handle13518); // 本公会基础信息 this.RegisterProtocal(13519, this.handle13519); // 本公会成员列表 this.RegisterProtocal(13520, this.handle13520); // 职位设置 this.RegisterProtocal(13521, this.handle13521); // 修改宣言 this.RegisterProtocal(13522, this.handle13522); // 设置申请 this.RegisterProtocal(13523, this.handle13523); // 玩家基础捐献信息 this.RegisterProtocal(13524, this.handle13524); // 捐献返回 this.RegisterProtocal(13542, this.hander13542); // 增删更新成员 this.RegisterProtocal(13558, this.handle13558); // 公会招募广告 this.RegisterProtocal(13565, this.handle13565); // 弹劾 this.RegisterProtocal(13568, this.handle13568); // 修改公会名字 this.RegisterProtocal(13573, this.handle13573); // 公会申请列表红点 this.RegisterProtocal(13574, this.handle13574); // 领取捐献宝箱情况 this.RegisterProtocal(13575, this.handle13575); // 更新当前捐献进度值 this.RegisterProtocal(13576, this.handle13576); // 欢迎新人 this.RegisterProtocal(16900, this.handle16900); this.RegisterProtocal(16901, this.handle16901); this.RegisterProtocal(16902, this.handle16902); this.RegisterProtocal(16903, this.handle16903); this.RegisterProtocal(16904, this.handle16904); }, // 请求公会相关协议 requestInitProtocal: function requestInitProtocal() { if (this.role_vo == null) return; if (this.role_vo.gid == 0) { this.model.clearMyGuildInfo(); } else { this.SendProtocal(13518, {}); this.SendProtocal(13523, {}); this.SendProtocal(16900, {}); if (this.role_vo.position != GuildConst.post_type.member) { this.SendProtocal(13573, {}); } } }, // 外部调用,打开公会的界面,会根据当前是否存在公会而去打开指定的界面 checkOpenGuildWindow: function checkOpenGuildWindow(index) { if (this.role_vo == null || this.role_vo.gid == 0) { this.openGuildInitWindow(true, index); } else { this.openGuildMainWindow(true, index); } }, // 创建查找联盟列表窗体 openGuildInitWindow: function openGuildInitWindow(status, index) { if (!status) { if (this.init_window != null) { this.init_window.close(); this.init_window = null; } } else { if (this.init_window == null) { this.init_window = Utils.createClass("guildinit_window"); } this.init_window.open(index); } }, // 控制主界面 openGuildMainWindow: function openGuildMainWindow(status, index) { if (!status) { if (this.main_window) { this.main_window.close(); this.main_window = null; } } else { if (this.main_window == null) { this.main_window = Utils.createClass("guild_main_window"); } this.main_window.open(index); } }, // 成员界面 openGuildMemberWindow: function openGuildMemberWindow(status) { if (!status) { if (this.member_window) { this.member_window.close(); this.member_window = null; } } else { if (this.member_window == null) { this.member_window = Utils.createClass("guild_member_window"); } this.member_window.open(); } }, // 捐献界面 openGuildDonateWindow: function openGuildDonateWindow(status) { if (!status) { if (this.donate_window) { this.donate_window.close(); this.donate_window = null; } } else { if (this.role_vo == null || !this.role_vo.isHasGuild()) { message(Utils.TI18N("您暂时还没有加入公会")); return; } if (this.donate_window == null) { this.donate_window = Utils.createClass("guild_donate_window"); } this.donate_window.open(); } }, // openGuildApplyWindow: function openGuildApplyWindow(status) { if (!status) { if (this.apply_window) { this.apply_window.close(); this.apply_window = null; } } else { if (this.apply_window == null) { this.apply_window = Utils.createClass("guild_apply_window"); } this.apply_window.open(); } }, //打开公会活跃面板 openGuildActionGoalWindow: function openGuildActionGoalWindow(status) { if (!status) { if (this.goal_window) { this.goal_window.close(); this.goal_window = null; } } else { if (this.goal_window == null) { this.goal_window = Utils.createClass("guild_action_goal_window"); } this.goal_window.open(); } }, //打开公会活跃奖励预览面板 openGuildRewardWindow: function openGuildRewardWindow(status) { if (!status) { if (this.reward_window) { this.reward_window.close(); this.reward_window = null; } } else { if (this.reward_window == null) { this.reward_window = Utils.createClass("guild_reward_window"); } this.reward_window.open(); } }, //公会申请设置面板 openGuildApplySetWindow: function openGuildApplySetWindow(status) { if (!status) { if (this.apply_set_window) { this.apply_set_window.close(); this.apply_set_window = null; } } else { if (this.apply_set_window == null) { this.apply_set_window = Utils.createClass("guild_apply_set_window"); } this.apply_set_window.open(); } }, //职位任免和踢人面板 openGuildOperationPostWindow: function openGuildOperationPostWindow(status, data) { if (!status) { if (this.operation_post_window) { this.operation_post_window.close(); this.operation_post_window = null; } } else { if (this.operation_post_window == null) { this.operation_post_window = Utils.createClass("guild_operation_post_window"); } this.operation_post_window.open(data); } }, //弹劾帮主 openGuildImpeachPostWindow: function openGuildImpeachPostWindow(status) { if (!status) { if (this.impeach_post_window) { this.impeach_post_window.close(); this.impeach_post_window = null; } } else { if (this.impeach_post_window == null) { this.impeach_post_window = Utils.createClass("guild_impeach_post_window"); } this.impeach_post_window.open(); } }, //公会改名面板 openGuildChangeNameWindow: function openGuildChangeNameWindow(status) { if (!status) { if (this.change_name_window) { this.change_name_window.close(); this.change_name_window = null; } } else { if (this.change_name_window == null) { this.change_name_window = Utils.createClass("guild_change_name_window"); } this.change_name_window.open(); } }, //公会宣言修改 openGuildChangeSignWindow: function openGuildChangeSignWindow(status) { if (!status) { if (this.change_sign_window) { this.change_sign_window.close(); this.change_sign_window = null; } } else { if (this.change_sign_window == null) { this.change_sign_window = Utils.createClass("guild_change_sign_window"); } this.change_sign_window.open(); } }, //请求创建公会 //@name:公会名字 //@sign:宣言 //@apply_type:申请类型(0:自动审批 1:手动审批 2:不允许申请) //@apply_lev:最小等级要求 requestCreateGuild: function requestCreateGuild(name, sign, apply_type, apply_lev) { var protocal = {}; protocal.name = name; protocal.sign = sign; protocal.apply_lev = apply_lev || 1; protocal.apply_type = apply_type || 0; this.SendProtocal(13500, protocal); }, //创建公会返回 handle13500: function handle13500(data) { message(data.msg); }, //请求公会列表 //@page:页码 //@flag:是否显示满人的公会 0:不显示 1:显示 //@num:每页显示条数 //@name:如果不为“”表示是搜索 requestGuildList: function requestGuildList(page, flag, num, name) { var protocal = {}; protocal.page = page || 0; protocal.flag = flag || 1; protocal.num = num || 0; protocal.name = name || ""; this.SendProtocal(13501, protocal); }, //获取公会列表 handle13501: function handle13501(data) { this.model.updateGuildList(data.name, data.guilds); }, //申请加入公会 requestJoinGuild: function requestJoinGuild(gid, gsrv_id, type) { if (gid == null || gsrv_id == null) return; var protocal = {}; protocal.gid = gid; protocal.gsrv_id = gsrv_id; protocal.type = type || 1; this.SendProtocal(13503, protocal); }, //请求加入公会返回 handle13503: function handle13503(data) { message(data.msg); if (data.code == 1) this.model.updateGuildApplyStatus(data.gid, data.gsrv_id, data.is_apply); }, //更新自己公会的信息 handle13518: function handle13518(data) { this.model.updateMyGuildInfo(data); // if (this.request_open_main_window == true) { this.request_open_main_window = false; this.openGuildMainWindow(true); } }, //弹劾帮主 send13565: function send13565() { this.SendProtocal(13565, {}); }, handle13565: function handle13565(data) { message(data.msg); }, //请求公会成员列表 requestGuildMemberList: function requestGuildMemberList() { this.SendProtocal(13519, {}); }, //更新整个公会成员列表 handle13519: function handle13519(data) { this.model.updateMyGuildMemberList(data.members, 1); }, handle13523: function handle13523(data) { this.model.updateDonateInfo(data.donate_list); //更新捐献宝箱情况 this.model.updateDonateBoxInfo(data.boxes, data.donate_exp); require("redbag_controller").getInstance().getModel().updateRedBagNum(data.day_send_num, data.day_recv_num); }, //请求公会捐献 requestGuildDonate: function requestGuildDonate(type) { var protocal = {}; protocal.type = type; this.SendProtocal(13524, protocal); }, //公会捐献返回 handle13524: function handle13524(data) { message(data.msg); if (data.code == 1) this.model.setGuildDonateStatus(); }, //更新,增加或者删除成员 hander13542: function hander13542(data) { this.model.updateMyGuildMemberList(data.members, data.type); }, //会长或者副会长处理操作申请列表 requestOperationApply: function requestOperationApply(type, rid, srv_id) { var protocal = {}; protocal.type = type; protocal.rid = rid; protocal.srv_id = srv_id; this.SendProtocal(13505, protocal); }, //操作申请玩家列表返回 handle13505: function handle13505(data) { message(data.msg); if (data.code == 1) this.model.deleteApplyInfo(data.rid, data.srv_id); }, //请求当前申请加入的公会列表 requestGuildApplyList: function requestGuildApplyList(page, num) { var protocal = {}; protocal.page = page; protocal.num = num; this.SendProtocal(13507, protocal); }, //更新申请列表 handle13507: function handle13507(data) { this.model.updateGuildApplyList(data.guids); }, //请求退帮 requestExitGuild: function requestExitGuild() { var role_vo = RoleController.getInstance().getRoleVo(); if (role_vo == null) return; if (role_vo.position == GuildConst.post_type.leader) { //自己是帮主,则是解散公会 var msg = cc.js.formatStr(Utils.TI18N("是否确定解散公会【%s】?"), role_vo.gname); var extend_msg = ""; if (role_vo.guild_quit_time != 0) extend_msg = Utils.TI18N("(解散公会后,会长将在24小时内无法加入其他公会)");else extend_msg = Utils.TI18N("(首次退出或解散公会后,可立即加入其他公会。)"); var CommonAlert = require("commonalert"); CommonAlert.show(msg, Utils.TI18N("确定"), function () { this.SendProtocal(13516, {}); }.bind(this), Utils.TI18N("取消"), null, null, null, { timer: 3, timer_for: true, off_y: 43, title: Utils.TI18N("解散公会"), extend_str: extend_msg, extend_offy: -5, extend_aligment: cc.TEXT_ALIGNMENT_CENTER }); } else { var msg = cc.js.formatStr(Utils.TI18N("是否确定退出公会【%s】?"), role_vo.gname); var extend_msg = ""; if (role_vo.guild_quit_time != 0) extend_msg = Utils.TI18N("(退出公会后12小时内无法加入其他公会)");else extend_msg = Utils.TI18N("(首次退出公会可立即加入其它公会)"); var CommonAlert = require("commonalert"); CommonAlert.show(msg, Utils.TI18N("确定"), function () { this.SendProtocal(13514, {}); }.bind(this), Utils.TI18N("取消"), null, null, null, { timer: 3, timer_for: true, off_y: 43, title: Utils.TI18N("退出公会"), extend_str: extend_msg, extend_offy: -5, extend_aligment: cc.TEXT_ALIGNMENT_CENTER }); } }, //退帮 handle13514: function handle13514(data) { message(data.msg); }, //解散 handle13516: function handle13516(data) { message(data.msg); }, //设置修改申请条件 requestChangeApplySet: function requestChangeApplySet(apply_type, apply_lev) { var protocal = {}; protocal.apply_type = apply_type; protocal.apply_lev = apply_lev; this.SendProtocal(13522, protocal); }, //设置权限返回 handle13522: function handle13522(data) { message(data.msg); if (data.code == 1) this.openGuildApplySetWindow(false); }, //请求修改公会宣言 requestChangeGuildSign: function requestChangeGuildSign(sign) { var protocal = {}; protocal.sign = sign; this.SendProtocal(13521, protocal); }, //公会宣言修改 handle13521: function handle13521(data) { message(data.msg); if (data.code == 1) this.openGuildChangeSignWindow(false); }, //从公会中踢人 requestKickoutMember: function requestKickoutMember(rid, srv_id, name) { var call_back = function () { var protocal = {}; protocal.rid = rid; protocal.srv_id = srv_id; this.SendProtocal(13513, protocal); }.bind(this); var msg = cc.js.formatStr(Utils.TI18N("是否确认将【%s】玩家移除出公会?"), name); var CommonAlert = require("commonalert"); CommonAlert.show(msg, Utils.TI18N("确定"), function () { call_back(); }.bind(this), Utils.TI18N("取消")); }, //踢人返回 handle13513: function handle13513(data) { message(data.msg); if (data.code == 1) this.openGuildOperationPostWindow(false); }, //职位任命 requestOperationPost: function requestOperationPost(rid, srv_id, position) { var protocal = {}; protocal.rid = rid; protocal.srv_id = srv_id; protocal.position = position; this.SendProtocal(13520, protocal); }, handle13520: function handle13520(data) { message(data.msg); if (data.code == 1) this.openGuildOperationPostWindow(false); }, //请求改名 requestChangGuildName: function requestChangGuildName(name) { var protocal = {}; protocal.name = name; this.SendProtocal(13568, protocal); }, //公会改名 handle13568: function handle13568(data) { message(data.msg); if (data.code == 1) this.openGuildChangeNameWindow(false); }, //发送公会招募广告 requestGuildRecruit: function requestGuildRecruit() { var my_info = this.model.getMyGuildInfo(); if (my_info != null) { if (my_info.recruit_num == 0) { var msg = Utils.TI18N("是否确定发布招募公告?\n\n每日首次发布公告免费"); var extend_msg = Utils.TI18N("(每日首次发布公告免费)"); var CommonAlert = require("commonalert"); CommonAlert.show(msg, Utils.TI18N("确定"), function () { this.SendProtocal(13558, {}); }.bind(this), Utils.TI18N("取消"), null, null, null, null); } else { var config = gdata("guild_data", "data_const", "recruit_cost"); var role_vo = RoleController.getInstance().getRoleVo(); if (config && role_vo) { var total = role_vo.gold; var extend_msg = cc.js.formatStr("发布消耗:%s/%s", 15, Utils.getMoneyString(total), config.val); var msg = cc.js.formatStr(Utils.TI18N("是否确定花费%s发布招募广告?\n\n%s"), 15, config.val, extend_msg); var CommonAlert = require("commonalert"); var res = PathTool.getItemRes(15); CommonAlert.show(msg, Utils.TI18N("确定"), function () { this.SendProtocal(13558, {}); }.bind(this), Utils.TI18N("取消"), null, 2, null, { resArr: [res] }); } } } }, //招募广告返回 handle13558: function handle13558(data) { message(data.msg); }, //公会申请红点 handle13573: function handle13573(data) { this.model.updateGuildRedStatus(GuildConst.red_index.apply, data.code == 1); }, //有玩家申请加入的提示 setApplyListStatus: function setApplyListStatus(data) { this.model.updateGuildRedStatus(GuildConst.red_index.apply, true); }, //请求领取指定捐献宝箱 requestDonateBoxRewards: function requestDonateBoxRewards(box_id) { var protocal = {}; protocal.box_id = box_id; this.SendProtocal(13574, protocal); }, //领取捐献宝箱返回 handle13574: function handle13574(data) { message(data.msg); if (data.code == 1) this.model.setDonateBoxStatus(data.box_id); }, //更新捐献进度值 handle13575: function handle13575(data) { this.model.updateDonateActivity(data.donate_exp); }, welcomeNewMember: function welcomeNewMember(rid, srv_id) { var protocal = {}; protocal.rid = rid; protocal.srv_id = srv_id; this.SendProtocal(13576, protocal); }, handle13576: function handle13576(data) { message(data.msg); }, //--------------公会活跃 //基本信息 send16900: function send16900() { this.SendProtocal(16900, {}); }, handle16900: function handle16900(data) { this.model.updataGuildActionRedStatus(data); gcore.GlobalEvent.fire(GuildEvent.UpdataGuildGoalBasicData, data); }, //任务信息 send16901: function send16901() { this.SendProtocal(16901, {}); }, handle16901: function handle16901(data) { gcore.GlobalEvent.fire(GuildEvent.UpdataGuildGoalTaskData, data); }, //单条任务信息 handle16902: function handle16902(data) { gcore.GlobalEvent.fire(GuildEvent.UpdataGuildGoalSingleTaskData, data); }, //提交任务 send16903: function send16903(id) { var protocal = {}; protocal.id = id; this.SendProtocal(16903, protocal); }, handle16903: function handle16903(data) { message(data.msg); }, send16904: function send16904() { this.SendProtocal(16904, {}); }, handle16904: function handle16904(data) { message(data.msg); }, getGuildMainRootWnd: function getGuildMainRootWnd() { if (this.main_window) { return this.main_window.root_wnd; } } }); module.exports = GuildController; cc._RF.pop();