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
// --------------------------------------------------------------------
// @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 () {
    },
 
    properties: {
    },
 
    initConfig: function () {
        this.myBaseInfo = {};      // 个人数据
        this.enemyListData = [];      // 挑战对手数据
        this.ladderOpenStatus = 0; // 天梯是否开启
 
        this.guildwar_red_list = {};    // 红点数据
    },
 
    //个人数据
    setLadderMyBaseInfo: function (data) {
        this.myBaseInfo = data;
    },
 
    getLadderMyBaseInfo: function () {
        return this.myBaseInfo;
    },
 
    //获取剩余挑战次数
    getLeftChallengeCount: function () {
        if (this.myBaseInfo) {
            return this.myBaseInfo.can_combat_num || 0;
        }
        return 0
    },
 
    //获取今日购买次数
    getTodayBuyCount: function () {
        if (this.myBaseInfo) {
            return this.myBaseInfo.buy_combat_num || 0;
        }
        return 0
    },
 
    //获取今日剩余购买次数
    getTodayLeftBuyCount: function () {
        let role_vo = RoleController.getInstance().getRoleVo();
        let buy_count = this.myBaseInfo.buy_combat_num || 0;
        let max_count = 0;
        for (let k in Config.sky_ladder_data.data_buy_num) {
            let v = Config.sky_ladder_data.data_buy_num[k];
            if (v.vip <= role_vo.vip_lev) {
                max_count = max_count + 1;
            }
        }
        let left_count = max_count - buy_count;
        if (left_count < 0) {
            left_count = 0;
        }
        return left_count
    },
 
    //设置挑战对手数据
    setLadderEnemyListData: function (data) {
        this.enemyListData = data || {};
    },
 
    updateLadderEnemyListData: function (data) {
        data = data || {};
        for (let k in data) {
            let newData = data[k];
            for (let _ in this.enemyListData) {
                let oldData = this.enemyListData[_];
                if (newData.idx == oldData.idx) {
                    for (let key in newData) {
                        oldData[key] = newData[key];
                    }
                    break
                }
            }
        }
    },
 
    getLadderEnemyListData: function () {
        return this.enemyListData
    },
 
    getLadderEnemyDataByIndex: function (index) {
        let enemy_data = {};
        for (let k in this.enemyListData) {
            let eData = this.enemyListData[k];
            if (eData.idx == index) {
                enemy_data = eData;
                break
            }
        }
        return enemy_data
    },
 
    //天梯是否开启
    setLadderOpenStatus: function (status) {
        this.ladderOpenStatus = status;
    },
 
    //天梯活动是否开启
    getLadderIsOpen: function () {
        return this.ladderOpenStatus && this.ladderOpenStatus == 1;
    },
 
    //是否满足天梯功能开启条件 not_tips 不飘字提示
    getLadderOpenStatus: function (not_tips) {
        not_tips = not_tips || false;
        let role_vo = RoleController.getInstance().getRoleVo();
        let 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 (bid, status) {
        RedMgr.getInstance().addCalHandler(function () {
            let _status = this.guildwar_red_list[bid];
            if (_status == status) return
            this.guildwar_red_list[bid] = status;
            //更新主界面图标红点
            let 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 (redType) {
        return this.guildwar_red_list[redType] || false
    },
 
    checkLadderRedStatus: function () {
        for (let k in this.guildwar_red_list) {
            let v = this.guildwar_red_list[k];
            if (v == true) {
                return true
            }
        }
        return false
    }
});