Files
fc/dev/project/assets/Scripts/mod/guild/boss/guildboss_model.js
T
2026-05-23 22:10:14 +08:00

190 lines
6.3 KiB
JavaScript

// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
// 这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-01-24 17:44:54
// --------------------------------------------------------------------
const BridgeClass = require( "bridge.class" );
var GuildbossEvent = require("guildboss_event");
var GuildConst = require("guild_const");
var GuildbossModel = cc.Class({
extends: BridgeClass,
ctor: function () {
var ctrl = require("guildboss_controller");
this.ctrl = ctrl.getInstance();
},
properties: {
},
initConfig: function () {
this.guildboss_red_list = {};
this.role_rank_list = {};//319排行协议列表
},
//退出公会的时候清空掉相关的数据
clearGuildBossInfo: function () {
this.base_info = {};//基础信息
this.first_pass_list = {};//公会boss首通奖励
this.day_bos_list = {};//每日宝箱
this.guildboss_red_list = {};//公会红点相关,主要包含了首通奖励红点,每日击杀红点以及拥有次数的红点
this._initFirstPassData = {};//首通
},
updateGuildRedStatus: function (bid, status) {
},
//公会副本是否有红点状态
checkGuildDunRedStatus: function () {
for (var k in this.guildboss_red_list) {
var v = this.guildboss_red_list[k];
if (v == true)
return true
}
return false
},
//根据类型获取红点,
getRedStatusByType: function (type) {
return this.guildboss_red_list[type];
},
//公会副本基础信息,或者清除
updateGuildDunBaseInfo: function (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 () {
if (this.base_info) {
if (!this.base_info.count) {
return false
}
if (this.base_info.count > 0)
return true
else
return false
}
},
//获取基础信息
getBaseInfo: function () {
return this.base_info;
},
//更新剩余挑战次数以及购买次数
//FALSE为普通购买TRUE为挑战购买
updateBaseWithTimes: function (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 () {
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 (rank) {
rank = rank || 1;
for (var k in game.configs.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 (data_list) {
this.day_bos_list = {};
for (var i = 1; i <= game.configs.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 (fid, num) {
if (this.day_bos_list[fid] == null) return
this.day_bos_list[fid] = num;
},
//返回击杀宝箱的数量状态
getBoxRewardList:function(){
return this.day_bos_list || {};
},
//保存排行榜协议
setRaknRoleList:function(list){
this.role_rank_list = list;
},
//获取前三个
getRaknRoleTopThreeList:function(){
var list = [{rank:1,name:nx.text.getKey("lab_arena_loop_rank_sit_tip")},{rank:2,name:nx.text.getKey("lab_arena_loop_rank_sit_tip")},{rank:3,name:nx.text.getKey("lab_arena_loop_rank_sit_tip")}];
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
}
});