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
"use strict";
cc._RF.push(module, '50728I/mu9Dq5gNFyfCbUPi', 'ladder_model');
// Scripts/mod/ladder/ladder_model.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      跨服天梯model
// <br/>Create: 2019-07-24 10:23:54
// --------------------------------------------------------------------
var RoleController = require("role_controller");
 
var MainSceneController = require("mainscene_controller");
 
var SceneConst = require("scene_const");
 
var LadderEvent = require("ladder_event");
 
var LadderModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {},
  properties: {},
  initConfig: function initConfig() {
    this.myBaseInfo = {}; // 个人数据
 
    this.enemyListData = []; // 挑战对手数据
 
    this.ladderOpenStatus = 0; // 天梯是否开启
 
    this.guildwar_red_list = {}; // 红点数据
  },
  //个人数据
  setLadderMyBaseInfo: function setLadderMyBaseInfo(data) {
    this.myBaseInfo = data;
  },
  getLadderMyBaseInfo: function getLadderMyBaseInfo() {
    return this.myBaseInfo;
  },
  //获取剩余挑战次数
  getLeftChallengeCount: function getLeftChallengeCount() {
    if (this.myBaseInfo) {
      return this.myBaseInfo.can_combat_num || 0;
    }
 
    return 0;
  },
  //获取今日购买次数
  getTodayBuyCount: function getTodayBuyCount() {
    if (this.myBaseInfo) {
      return this.myBaseInfo.buy_combat_num || 0;
    }
 
    return 0;
  },
  //获取今日剩余购买次数
  getTodayLeftBuyCount: function getTodayLeftBuyCount() {
    var role_vo = RoleController.getInstance().getRoleVo();
    var buy_count = this.myBaseInfo.buy_combat_num || 0;
    var max_count = 0;
 
    for (var k in Config.sky_ladder_data.data_buy_num) {
      var v = Config.sky_ladder_data.data_buy_num[k];
 
      if (v.vip <= role_vo.vip_lev) {
        max_count = max_count + 1;
      }
    }
 
    var left_count = max_count - buy_count;
 
    if (left_count < 0) {
      left_count = 0;
    }
 
    return left_count;
  },
  //设置挑战对手数据
  setLadderEnemyListData: function setLadderEnemyListData(data) {
    this.enemyListData = data || {};
  },
  updateLadderEnemyListData: function updateLadderEnemyListData(data) {
    data = data || {};
 
    for (var k in data) {
      var newData = data[k];
 
      for (var _ in this.enemyListData) {
        var oldData = this.enemyListData[_];
 
        if (newData.idx == oldData.idx) {
          for (var key in newData) {
            oldData[key] = newData[key];
          }
 
          break;
        }
      }
    }
  },
  getLadderEnemyListData: function getLadderEnemyListData() {
    return this.enemyListData;
  },
  getLadderEnemyDataByIndex: function getLadderEnemyDataByIndex(index) {
    var enemy_data = {};
 
    for (var k in this.enemyListData) {
      var eData = this.enemyListData[k];
 
      if (eData.idx == index) {
        enemy_data = eData;
        break;
      }
    }
 
    return enemy_data;
  },
  //天梯是否开启
  setLadderOpenStatus: function setLadderOpenStatus(status) {
    this.ladderOpenStatus = status;
  },
  //天梯活动是否开启
  getLadderIsOpen: function getLadderIsOpen() {
    return this.ladderOpenStatus && this.ladderOpenStatus == 1;
  },
  //是否满足天梯功能开启条件 not_tips 不飘字提示
  getLadderOpenStatus: function getLadderOpenStatus(not_tips) {
    not_tips = not_tips || false;
    var role_vo = RoleController.getInstance().getRoleVo();
    var config = config.sky_ladder_data.data_const.join_min_lev;
 
    if (config && config.val <= role_vo.lev) {
      return {
        bool: false
      };
    } else {
      if (!not_tips) {
        message(config.desc);
      }
 
      return {
        bool: false,
        desc: config.desc
      };
    }
  },
  //更新天梯红点
  updateLadderRedStatus: function updateLadderRedStatus(bid, status) {
    RedMgr.getInstance().addCalHandler(function () {
      var _status = this.guildwar_red_list[bid];
      if (_status == status) return;
      this.guildwar_red_list[bid] = status; //更新主界面图标红点
 
      var ladder_status = this.checkLadderRedStatus();
      MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.ladder, {
        bid: CrossgroundConst.Red_Type.ladder,
        status: ladder_status
      }); //更新天梯界面红点
 
      gcore.GlobalEvent.fire(LadderEvent.UpdateLadderRedStatus, bid, status);
    }.bind(this), RedIds.Ladder);
  },
  checkRedIsShowByRedType: function checkRedIsShowByRedType(redType) {
    return this.guildwar_red_list[redType] || false;
  },
  checkLadderRedStatus: function checkLadderRedStatus() {
    for (var k in this.guildwar_red_list) {
      var v = this.guildwar_red_list[k];
 
      if (v == true) {
        return true;
      }
    }
 
    return false;
  }
});
 
cc._RF.pop();