"use strict";
|
cc._RF.push(module, '63353o0oUxMXLyGJQRMY0+Z', 'guildboss_model');
|
// Scripts/mod/guildboss/guildboss_model.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里填写详细说明,主要填写该模块的功能简要
|
// <br/>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();
|