146 lines
5.2 KiB
JavaScript
146 lines
5.2 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, '9f3a3EwIxpMW5IWDehXGqao', 'crosschampion_model');
|
||
|
|
// Scripts/mod/pvp/crosschampion/crosschampion_model.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
||
|
|
// @description:
|
||
|
|
// 这里填写详细说明,主要填写该模块的功能简要
|
||
|
|
// <br/>Create: 2019-07-29 10:38:42
|
||
|
|
// --------------------------------------------------------------------
|
||
|
|
var BridgeClass = require("bridge.class");
|
||
|
|
var ArenaEvent = require("arena_event");
|
||
|
|
var ArenaConst = require("arena_const");
|
||
|
|
var RoleController = require("role_controller");
|
||
|
|
var CrosschampionConst = require("crosschampion_const");
|
||
|
|
var CrosschampionEvent = require("crosschampion_event");
|
||
|
|
var CrosschampionModel = cc.Class({
|
||
|
|
"extends": BridgeClass,
|
||
|
|
ctor: function ctor() {
|
||
|
|
this.ctrl = arguments[0];
|
||
|
|
},
|
||
|
|
properties: {},
|
||
|
|
initConfig: function initConfig() {
|
||
|
|
this.champion_red_list = {}; // 紅點數據
|
||
|
|
},
|
||
|
|
// 跨服冠軍賽基礎數據
|
||
|
|
updateChampionBaseInfo: function updateChampionBaseInfo(data) {
|
||
|
|
var self = this;
|
||
|
|
self.base_info = data;
|
||
|
|
gcore.GlobalEvent.fire(ArenaEvent.UpdateChampionBaseInfoEvent, data);
|
||
|
|
},
|
||
|
|
getBaseInfo: function getBaseInfo() {
|
||
|
|
return this.base_info;
|
||
|
|
},
|
||
|
|
//跨服冠軍賽個人數據
|
||
|
|
setRoleInfo: function setRoleInfo(data) {
|
||
|
|
this.role_info = data;
|
||
|
|
gcore.GlobalEvent.fire(ArenaEvent.UpdateChampionRoleInfoEvent, data);
|
||
|
|
},
|
||
|
|
getRoleInfo: function getRoleInfo() {
|
||
|
|
return this.role_info;
|
||
|
|
},
|
||
|
|
// 我的跨服冠軍賽狀態
|
||
|
|
getMyMatchStatus: function getMyMatchStatus() {
|
||
|
|
var self = this;
|
||
|
|
if (self.base_info && self.role_info) {
|
||
|
|
if (self.base_info.step == ArenaConst.champion_step.unopened) {
|
||
|
|
return ArenaConst.champion_my_status.unopened;
|
||
|
|
} else if (self.base_info.step == ArenaConst.champion_step.score && self.base_info.step_status == ArenaConst.champion_step_status.unopened) {
|
||
|
|
return ArenaConst.champion_my_status.unopened;
|
||
|
|
} else if (self.role_info.rank == 0) {
|
||
|
|
return ArenaConst.champion_my_status.unjoin;
|
||
|
|
} else {
|
||
|
|
return ArenaConst.champion_my_status.in_match;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return ArenaConst.champion_my_status.unopened;
|
||
|
|
},
|
||
|
|
// 當前周冠軍賽是否是未開啟狀態
|
||
|
|
getOpenCrosschampionViewStatus: function getOpenCrosschampionViewStatus() {
|
||
|
|
var self = this;
|
||
|
|
if (self.base_info && (self.base_info.step != ArenaConst.champion_step.match_8 || self.base_info.step_status != ArenaConst.champion_step_status.over)) {
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
},
|
||
|
|
// 獲取跨服冠軍賽功能是否開啟
|
||
|
|
checkCrossChampionIsOpen: function checkCrossChampionIsOpen(nottips) {
|
||
|
|
var is_open = false;
|
||
|
|
var role_vo = RoleController.getInstance().getRoleVo();
|
||
|
|
var limit_cfg = game.configs.arena_cluster_champion_data.data_const["guess_lev_limit"];
|
||
|
|
if (limit_cfg && role_vo && role_vo.lev >= limit_cfg.val) {
|
||
|
|
is_open = true;
|
||
|
|
}
|
||
|
|
if (is_open == false && limit_cfg && !nottips) {
|
||
|
|
// nx.mbox(limit_cfg.desc,["cancel","confirm"]);
|
||
|
|
}
|
||
|
|
return is_open;
|
||
|
|
},
|
||
|
|
// 前三名角色數據
|
||
|
|
setTopThreeRoleData: function setTopThreeRoleData(data) {
|
||
|
|
this.top_three_role_data = data || {};
|
||
|
|
this.checkTopThreeWorshipRedStatus();
|
||
|
|
},
|
||
|
|
saveTopThreeRoleData: function saveTopThreeRoleData(_data) {
|
||
|
|
this.top_three_role_datas = _data || {};
|
||
|
|
},
|
||
|
|
getThreeDatas: function getThreeDatas() {
|
||
|
|
return this.top_three_role_datas;
|
||
|
|
},
|
||
|
|
updateTopThreeRoleWorshipStatus: function updateTopThreeRoleWorshipStatus(rid, srv_id) {
|
||
|
|
if (this.top_three_role_data) {
|
||
|
|
for (var k in this.top_three_role_data) {
|
||
|
|
var v = this.top_three_role_data[k];
|
||
|
|
if (v.rid == rid && v.srv_id == srv_id) {
|
||
|
|
v.worship_status = 1;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
this.checkTopThreeWorshipRedStatus();
|
||
|
|
},
|
||
|
|
checkTopThreeWorshipRedStatus: function checkTopThreeWorshipRedStatus() {
|
||
|
|
var self = this;
|
||
|
|
var red_status = false;
|
||
|
|
if (self.top_three_role_data) {
|
||
|
|
var role_vo = RoleController.getInstance().getRoleVo();
|
||
|
|
for (var k in self.top_three_role_data) {
|
||
|
|
var v = this.top_three_role_data[k];
|
||
|
|
if (v.worship_status == 0 && role_vo && !role_vo.isSameRole(v.srv_id, v.rid)) {
|
||
|
|
red_status = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
self.updateCrosschampionRedStatus(CrosschampionConst.Red_Type.Worship, red_status);
|
||
|
|
},
|
||
|
|
// 紅點相關
|
||
|
|
updateCrosschampionRedStatus: function updateCrosschampionRedStatus(bid, status) {
|
||
|
|
var self = this;
|
||
|
|
var _status = self.champion_red_list[bid];
|
||
|
|
if (_status == status) return;
|
||
|
|
self.champion_red_list[bid] = status;
|
||
|
|
var red_status = self.checkCrosschampionRedStatus();
|
||
|
|
gcore.GlobalEvent.fire(CrosschampionEvent.Update_Red_Status_Event, bid, status);
|
||
|
|
},
|
||
|
|
checkCrosschampionRedStatus: function checkCrosschampionRedStatus() {
|
||
|
|
var status = false;
|
||
|
|
for (var k in this.champion_red_list) {
|
||
|
|
var v = this.champion_red_list[k];
|
||
|
|
if (v) {
|
||
|
|
status = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return status;
|
||
|
|
},
|
||
|
|
// 根據紅點類型獲取紅點狀態
|
||
|
|
getCrossarenaRedStatus: function getCrossarenaRedStatus(red_type) {
|
||
|
|
return this.champion_red_list[red_type] || false;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
cc._RF.pop();
|