// -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 跨服天梯model //
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 } });