"use strict"; cc._RF.push(module, '63353o0oUxMXLyGJQRMY0+Z', 'guildboss_model'); // Scripts/mod/guildboss/guildboss_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-01-24 17:44:54 // -------------------------------------------------------------------- var GuildEvent = require("guild_event"); // var ActivityController = require("activity_controller"); var MainuiController = require("mainui_controller"); var MainuiConst = require("mainui_const"); var MainuiController = require("mainui_controller"); var GuildbossEvent = require("guildboss_event"); var GuildConst = require("guild_const"); var GuildbossModel = cc.Class({ "extends": BaseClass, ctor: function ctor() { var ctrl = require("guildboss_controller"); this.ctrl = ctrl.getInstance(); }, properties: {}, initConfig: function initConfig() { this.guildboss_red_list = {}; this.role_rank_list = {}; //319排行协议列表 }, //退出公会的时候清空掉相关的数据 clearGuildBossInfo: function clearGuildBossInfo() { this.base_info = {}; //基础信息 this.first_pass_list = {}; //公会boss首通奖励 this.day_bos_list = {}; //每日宝箱 this.guildboss_red_list = {}; //公会红点相关,主要包含了首通奖励红点,每日击杀红点以及拥有次数的红点 this._initFirstPassData = {}; //首通 }, updateGuildRedStatus: function updateGuildRedStatus(bid, status) { RedMgr.getInstance().addCalHandler(function () { var base_data = Config.function_data.data_base; var bool = MainuiController.getInstance().checkIsOpenByActivate(base_data[6].activate); if (bool == false) return; var _status = this.guildboss_red_list[bid]; if (_status == status) return; this.guildboss_red_list[bid] = status; //更新场景红点状态 cc.log("更新场景红点状态", MainuiConst.btn_index.guild, { bid: bid, status: status }); MainuiController.getInstance().setBtnRedPoint(MainuiConst.btn_index.guild, { bid: bid, status: status }); //限时活动 var limitRed = false; if (this.base_info && this.base_info.count) {} // if (ActivityController.getInstance().getBossActivityDoubleTime() == true && this.base_info.count > 0) { // limitRed = true; // } //事件用于同步更新公会主ui的红点 gcore.GlobalEvent.fire(GuildEvent.UpdateGuildRedStatus, bid, status); }.bind(this), RedIds.GuildBoss); }, //公会副本是否有红点状态 checkGuildDunRedStatus: function checkGuildDunRedStatus() { for (var k in this.guildboss_red_list) { var v = this.guildboss_red_list[k]; if (v == true) return true; } return false; }, //根据类型获取红点, getRedStatusByType: function getRedStatusByType(type) { return this.guildboss_red_list[type]; }, //公会副本基础信息,或者清除 updateGuildDunBaseInfo: function updateGuildDunBaseInfo(data) { var need_update_red_status = false; if (this.base_info == null || this.base_info.count != data.count) { need_update_red_status = true; } this.base_info = data; // fid:当前id max_id:历史最高副本id count:剩余挑战次数 type:重置类型(0:正常 1:章节回退)buy_count:购买次数 gcore.GlobalEvent.fire(GuildbossEvent.UpdateGuildDunBaseInfo); //判断一下当前的Boss是否能打 //更新红点 if (need_update_red_status == true) { this.updateGuildRedStatus(GuildConst.red_index.boss_times, this.base_info.count > 0); } }, //获取挑战次数 getChangeCount: function getChangeCount() { if (this.base_info) { if (!this.base_info.count) { return false; } if (this.base_info.count > 0) return true;else return false; } }, //获取基础信息 getBaseInfo: function getBaseInfo() { return this.base_info; }, //更新剩余挑战次数以及购买次数 //FALSE为普通购买TRUE为挑战购买 updateBaseWithTimes: function updateBaseWithTimes(count, buy_count, buy_type) { if (this.base_info == null) this.base_info = {}; this.base_info.count = count; this.base_info.buy_count = buy_count; gcore.GlobalEvent.fire(GuildbossEvent.UpdateGuildBossChallengeTimes, buy_type); //更新红点 this.updateGuildRedStatus(GuildConst.red_index.boss_times, this.base_info.count > 0); }, getFirstPassRewardList: function getFirstPassRewardList() { var return_list = []; //0:未达成 var return_list1 = []; //1:可领取 var return_list2 = []; //2:已领取 if (!this._initFirstPassData.award_list) return; for (var i in this._initFirstPassData.award_list) { var v = this._initFirstPassData.award_list[i]; if (v.status == 0) { return_list.push(v); } else if (v.status == 1) { return_list1.push(v); } else if (v.status == 3) { return_list2.push(v); } } if (return_list.length != 0) { for (var i in return_list) { var v = return_list[i]; return_list1.push(v); } } if (return_list2.length != 0) { for (var i in return_list2) { var v = return_list[i]; return_list1.push(v); } } }, //根据排名获取伤害排名奖励 getRankAward: function getRankAward(rank) { rank = rank || 1; for (var k in Config.guild_dun_data.data_rank_reward) { var v = gdata("guild_dun_data", "data_rank_reward", [k]); if (v.rank1 < rank && rank <= v.rank2) return v.award; } return []; }, //初始化每日宝箱奖励的 initDayBoxRewardsStatus: function initDayBoxRewardsStatus(data_list) { this.day_bos_list = {}; for (var i = 1; i <= Config.guild_dun_data.data_chapter_box_length; i++) { this.day_bos_list[i] = 0; } var red_status = false; for (var i in data_list) { var v = data_list[i]; this.day_bos_list[v.fid] = v.num; if (v.num > 0 && red_status == false) { red_status = true; } } gcore.GlobalEvent.fire(GuildbossEvent.UpdateBoxRewardsStatus); }, //更新指定宝箱数量 updateBoxRewards: function updateBoxRewards(fid, num) { if (this.day_bos_list[fid] == null) return; this.day_bos_list[fid] = num; }, //返回击杀宝箱的数量状态 getBoxRewardList: function getBoxRewardList() { return this.day_bos_list || {}; }, //保存排行榜协议 setRaknRoleList: function setRaknRoleList(list) { this.role_rank_list = list; }, //获取前三个 getRaknRoleTopThreeList: function getRaknRoleTopThreeList() { var list = [{ rank: 1, name: Utils.TI18N("虚位以待") }, { rank: 2, name: Utils.TI18N("虚位以待") }, { rank: 3, name: Utils.TI18N("虚位以待") }]; if (this.role_rank_list.rank_list && Utils.next(this.role_rank_list.rank_list || {}) != null) { var rank_list = this.role_rank_list.rank_list; for (var i in rank_list) { var v = rank_list[i]; for (var i2 in list) { var v1 = list[i2]; if (v.rank == v1.rank) { list[i2] = v; } } } } return list; } }); cc._RF.pop();