"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();
|