difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
"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();