"use strict"; cc._RF.push(module, 'e3e73qrgAxPZb0kkCHS45i4', 'guild_model'); // Scripts/mod/guild/base/guild_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-01-14 10:57:08 // -------------------------------------------------------------------- var BridgeClass = require("bridge.class"); var GuildListVo = require("guild_list_vo"); var GuildConst = require("guild_const"); var GuildEvent = require("guild_event"); var GuildMyInfoVo = require("guild_my_info_vo"); var RoleController = require("role_controller"); var GuildMemberVo = require("guild_member_vo"); var GuildController = require("guild_controller"); var GuildModel = cc.Class({ "extends": BridgeClass, ctor: function ctor() { this.ctrl = GuildController.getInstance(); this.guild_cache_list = {}; // 缓存的当前服务器列表 this.apply_join_list = {}; // 公会申请列表 this.donate_sum = 0; // 今天已经捐献的次数 this.guild_member_list = {}; // 成员列表 this.guild_list = []; // 当前所有的公会列表 this.guild_search_list = []; // 当前待查找的公会列表 this.my_guild_assistant = {}; // 当前副会长的数据 this.donate_rewards = []; // 捐献活跃宝箱清空 }, properties: {}, initConfig: function initConfig() { this.donate_exp = 0; }, updateGuildList: function updateGuildList(name, data_list) { if (name == "") { this.guild_list = []; for (var i in data_list) { var v = data_list[i]; var guild_vo = this.guild_cache_list[Utils.getNorKey(v.gid, v.gsrv_id)]; if (guild_vo == null) { guild_vo = new GuildListVo(); this.guild_cache_list[Utils.getNorKey(v.gid, v.gsrv_id)] = guild_vo; } guild_vo.updateData(v); this.guild_list.push(guild_vo); } } else { this.guild_search_list = []; for (var i in data_list) { var v = data_list[i]; var guild_vo = this.guild_cache_list[Utils.getNorKey(v.gid, v.gsrv_id)]; if (guild_vo == null) { guild_vo = new GuildListVo(); this.guild_cache_list[Utils.getNorKey(v.gid, v.gsrv_id)] = guild_vo; } guild_vo.updateData(v); this.guild_search_list.push(guild_vo); } } var type = GuildConst.ListType.Total; var guild_list = this.guild_list; if (name != "") { type = GuildConst.ListType.Search; guild_list = this.guild_search_list; } gcore.GlobalEvent.fire(GuildEvent.UpdateGuildList, type, guild_list); }, //申请某个公会的返回 updateGuildApplyStatus: function updateGuildApplyStatus(gid, gsrv_id, is_apply) { var guild_list_vo = this.guild_cache_list[Utils.getNorKey(gid, gsrv_id)]; if (guild_list_vo != null) guild_list_vo.setGuildAttribute("is_apply", is_apply); }, //更新自己公会的基础信息 updateMyGuildInfo: function updateMyGuildInfo(data) { if (this.my_guild_info == null) this.my_guild_info = new GuildMyInfoVo(); this.my_guild_info.updateData(data); }, // 清楚联盟相关缓存数据 clearMyGuildInfo: function clearMyGuildInfo() { this.my_guild_info = null; this.my_guild_assistant = {}; this.guild_member_list = {}; this.donate_rewards = []; // 提示关闭(暂时分开设置) nx.mTip.openTip("guild.donate.tip", false); nx.mTip.openTip("guild.donate.reward", false); nx.mTip.openTip("guild.reqJoin", false); nx.mTip.openTip("guild.active.lvup", false); nx.mTip.openTip("guild.dailyReward", false); }, //获取自己公会信息 getMyGuildInfo: function getMyGuildInfo() { return this.my_guild_info; }, //更新成员列表,增删 //type:"0:更新 1:添加 2:删除" updateMyGuildMemberList: function updateMyGuildMemberList(data_list, type) { var role_vo = RoleController.getInstance().getRoleVo(); if (role_vo == null) return; if (type == 2) { for (var i in data_list) { var v = data_list[i]; this.guild_member_list[Utils.getNorKey(v.rid, v.srv_id)] = null; if (this.my_guild_assistant[Utils.getNorKey(v.rid, v.srv_id)] != null) { this.my_guild_assistant[Utils.getNorKey(v.rid, v.srv_id)] = null; //这里抛出时间更新副会长的数量吧 if (role_vo.position != GuildConst.PositionType.Member) gcore.GlobalEvent.fire(GuildEvent.UpdateAssistantNumEvent); } } } else { var member_vo = null; for (var i in data_list) { var v = data_list[i]; member_vo = this.guild_member_list[Utils.getNorKey(v.rid, v.srv_id)]; //如果之前存在副会长,但是现在没有了的话,就移除掉 if (this.my_guild_assistant[Utils.getNorKey(v.rid, v.srv_id)] != null) { if (v.post != GuildConst.PositionType.Assistant) { this.my_guild_assistant[Utils.getNorKey(v.rid, v.srv_id)] = null; if (role_vo.position != GuildConst.PositionType.Member) gcore.GlobalEvent.fire(GuildEvent.UpdateAssistantNumEvent); } } else { if (v.post == GuildConst.PositionType.Assistant) { this.my_guild_assistant[Utils.getNorKey(v.rid, v.srv_id)] = v; if (role_vo.position != GuildConst.PositionType.Member) gcore.GlobalEvent.fire(GuildEvent.UpdateAssistantNumEvent); } } if (member_vo == null) { member_vo = new GuildMemberVo(); this.guild_member_list[Utils.getNorKey(v.rid, v.srv_id)] = member_vo; } if (v.is_self == null) { v.is_self = RoleController.getInstance().checkIsSelf(v.srv_id, v.rid); //当前是不是自己 } v.role_post = role_vo.position; member_vo.updateData(v); } } gcore.GlobalEvent.fire(GuildEvent.UpdateMyMemberListEvent, type); }, //自己职位变化的时候更改一下成员列表里面的自己职位数据 updateMemberByPosition: function updateMemberByPosition(value) { if (this.guild_member_list != null) { for (var k in this.guild_member_list) { this.guild_member_list[k].setGuildAttribute("role_post", value); } } }, //获取当前副会长的总数 getAssistantSum: function getAssistantSum() { if (this.my_guild_assistant == null) return; var sum = 0; for (var k in this.my_guild_assistant) { if (this.my_guild_assistant[k] != null) sum = sum + 1; } return sum; }, //获取成员列表 getGuildMemberList: function getGuildMemberList() { var member_list = []; for (var k in this.guild_member_list) { if (this.guild_member_list[k] != null) member_list.push(this.guild_member_list[k]); } if (member_list.length > 0) { member_list.sort(Utils.tableUpperSorter(["online", "post_sort", "donate"])); } return member_list; }, //获取当前申请列表,按照在线,战力以及vip等级从打到小排序 getGuildApplyList: function getGuildApplyList() { var apply_list = []; for (var k in this.apply_join_list) { if (this.apply_join_list[k] != null) apply_list.push(this.apply_join_list[k]); } if (apply_list.length > 0) apply_list.sort(Utils.tableUpperSorter(["is_online", "power", "vip_lev"])); return apply_list; }, // =========================================================================== // 工会捐献 // =========================================================================== // 更新玩家捐献情况 updateDonateInfo: function updateDonateInfo(data_list) { this.donate_sum = 0; this.donate_list = []; for (var i in data_list) { var v = data_list[i]; this.donate_list[v.type] = v.num; this.donate_sum = this.donate_sum + v.num; } gcore.GlobalEvent.fire(GuildEvent.UpdateDonateInfo); this.freshDonateTips(true); }, // 这里表示捐献成功了 setGuildDonateStatus: function setGuildDonateStatus() { this.donate_sum = this.donate_sum + 1; this.freshDonateTips(); }, // 判断某一个捐献状态 checkDonateStatus: function checkDonateStatus(type) { var num = this.donate_list[type]; return [this.donate_sum > 0, num && num > 0]; }, // 捐献活跃宝箱情况 updateDonateBoxInfo: function updateDonateBoxInfo(boxes, donate_exp) { // 当前公会捐献活跃度 this.donate_exp = donate_exp; this.donate_rewards = {}; for (var i in boxes) { this.donate_rewards[boxes[i].box_id] = true; } this.freshDonateTips(); }, // 设置某个捐献宝箱的状态 setDonateBoxStatus: function setDonateBoxStatus(box_id) { if (this.donate_rewards == null) { this.donate_rewards = {}; } this.donate_rewards[box_id] = true; gcore.GlobalEvent.fire(GuildEvent.UpdateDonateBoxStatus, box_id); this.freshDonateTips(); }, // 别人捐献的时候更新当前捐献进度,可能同步会有红点提示 updateDonateActivity: function updateDonateActivity(value) { this.donate_exp = value; gcore.GlobalEvent.fire(GuildEvent.UpdateDonateBoxStatus); this.freshDonateTips(); }, // 捐献提示更新 freshDonateTips: function freshDonateTips(_can) { if (!game.configs.guild_data) { return; } // 可捐献 if (_can) { var tipCan = this.donate_sum == 0; nx.mTip.openTip("guild.donate.tip", tipCan); } // 有奖励 var tipReward = false; var exp = this.donate_exp || 0; var boxes = game.configs.guild_data.data_donate_box; for (var id in boxes) { var box = boxes[id]; if (exp >= box.box_val && !this.donate_rewards[id]) { tipReward = true; break; } } nx.mTip.openTip("guild.donate.reward", tipReward); }, // =========================================================================== // 工会管理 // =========================================================================== // 更新申请列表, updateApplyJoinList: function updateApplyJoinList(data_list) { this.apply_join_list = {}; for (var i in data_list) { var v = data_list[i]; var key = Utils.getNorKey(v.rid, v.srv_id); this.apply_join_list[key] = v; } this.freshApplyJoinTips(); }, // 处理完成某个玩家申请请求之后,在总的申请列表中删除这个数据 deleteApplyInfo: function deleteApplyInfo(rid, srv_id) { var key = Utils.getNorKey(rid, srv_id); delete this.apply_join_list[key]; this.freshApplyJoinTips(); }, // 更新提示 freshApplyJoinTips: function freshApplyJoinTips() { var tip = false; if (nx.dt.objNEmpty(this.apply_join_list)) { tip = true; } nx.mTip.openTip("guild.reqJoin", tip); }, // =========================================================================== // 工会活跃 // =========================================================================== // 更新提示 freshActiveTips: function freshActiveTips(_data) { if (!game.configs.guild_quest_data) { return; } var tip = false; if (_data) { var DATA = game.configs.guild_quest_data.data_lev_data; var from = DATA[_data.lev]; var next = DATA[_data.lev + 1]; if (from && next && _data.exp >= from.exp) { tip = true; } } nx.mTip.openTip("guild.active.lvup", tip); } }); cc._RF.pop();