Files
fc/dev/project/assets/Scripts/mod/pvp/ladder/ladder_model.js
T
2026-05-23 22:10:14 +08:00

158 lines
4.6 KiB
JavaScript

// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
// 跨服天梯model
// <br/>Create: 2019-07-24 10:23:54
// --------------------------------------------------------------------
const BridgeClass = require( "bridge.class" );
var RoleController = require("role_controller");
var LadderModel = cc.Class({
extends: BridgeClass,
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 game.configs.sky_ladder_data.data_buy_num) {
let v = game.configs.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 = game.configs.sky_ladder_data.data_const.join_min_lev;
if (config && config.val <= role_vo.lev) {
return { bool: false }
} else {
if (!not_tips) {
nx.tbox(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();
// //更新天梯界面红点
// 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
}
});