350 lines
10 KiB
JavaScript
350 lines
10 KiB
JavaScript
// --------------------------------------------------------------------
|
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
|
// @description:
|
|
// 这里填写详细说明,主要填写该模块的功能简要
|
|
// <br/>Create: 2019-07-29 10:38:42
|
|
// --------------------------------------------------------------------
|
|
const BridgeClass = require( "bridge.class" );
|
|
var RoleController = require("role_controller")
|
|
var TimeTool = require("timetool")
|
|
var ElitematchController = require("pvprank.mod")
|
|
var LadderEvent = require("ladder_event")
|
|
var ElitematchModel = cc.Class({
|
|
extends: BridgeClass,
|
|
ctor: function () {
|
|
this.ctrl = arguments[0];
|
|
},
|
|
|
|
properties: {
|
|
},
|
|
|
|
initConfig: function () {
|
|
//當前狀態 賦值 model.state = data.state
|
|
this.state = null
|
|
|
|
// --當前段位
|
|
this.cur_elite_lev = 1
|
|
// --當前排名 0表示未上名
|
|
this.cur_elite_rank = 0
|
|
|
|
// -- 紅點
|
|
this.redPoint = true
|
|
|
|
// --24900協議內容
|
|
this.scdata = null
|
|
|
|
// --24905協議內容
|
|
this.scdata24905 = null
|
|
// --戰令信息
|
|
this.orderaction_data = null
|
|
this.orderaction_first_red_status = 0 // 0:沒紅點 1:有紅點
|
|
},
|
|
|
|
setSCData(scdata){
|
|
if (this.scdata == null) {
|
|
this.scdata = scdata
|
|
}else{
|
|
for (let k in scdata) {
|
|
let v = scdata[k];
|
|
if (this.scdata[k]) {
|
|
this.scdata[k] = v
|
|
if (k == "rmb_status") {
|
|
this.setGiftStatus(v)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
getSCData( ){
|
|
return this.scdata || {}
|
|
},
|
|
|
|
getEliteLev(){
|
|
if (!this.scdata) return 1 ;
|
|
return this.scdata.lev
|
|
},
|
|
|
|
getEliteRank(){
|
|
if (!this.scdata) return 0;
|
|
return this.scdata.rank
|
|
},
|
|
|
|
setRedPoint(redPoint){
|
|
this.redPoint = redPoint
|
|
},
|
|
|
|
//活動總紅點
|
|
getElitematchTotalRedPoint(){
|
|
let is_open = this.checkElitematchIsOpen(true).is_open;
|
|
if (is_open) {
|
|
|
|
//有可以領的紅點
|
|
if (this.getRewardRedpoint()) {
|
|
return true
|
|
}
|
|
|
|
//戰令紅點
|
|
if (this.getOrderactionRedpoint()) {
|
|
return true
|
|
}
|
|
|
|
//未開戰不顯示
|
|
if (this.scdata24905 && this.scdata24905.state == 0) {
|
|
return false
|
|
}
|
|
//匹配次數夠了
|
|
if (this.getMatchCountRedpoint()) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
|
|
//獲取匹配次數紅點
|
|
getMatchCountRedpoint(){
|
|
if ( !this.scdata )return false;
|
|
|
|
if( this.scdata.day_combat_count > 0 ){
|
|
return true
|
|
}
|
|
return false
|
|
},
|
|
|
|
//獲取獎勵紅點
|
|
getRewardRedpoint(){
|
|
if( ! this.scdata) return false;
|
|
for (let i in this.scdata.lev_reward) {
|
|
let v = this.scdata.lev_reward[i]
|
|
if( v.flag == 1 ){ //可領
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
|
|
setEliteMatchFightTime(data){
|
|
if (this.scdata24905 == null ){
|
|
this.scdata24905 = data
|
|
}else{
|
|
for (let k in data) {
|
|
let v = data[k]
|
|
this.scdata24905[k] = v
|
|
}
|
|
}
|
|
if (this.scdata24905.end_time != 0) {
|
|
if (this.time_ticket == null) {
|
|
this.time_ticket = gcore.Timer.set(()=>{
|
|
this.scdata24905.end_time = this.scdata24905.end_time -1
|
|
if (this.scdata24905.end_time <= 0) {
|
|
this.clearTimeTicket()
|
|
ElitematchController.getInstance().sender24905()
|
|
}
|
|
},1000,-1)
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
clearTimeTicket(){
|
|
if (this.time_ticket) {
|
|
gcore.Timer.del(this.time_ticket)
|
|
this.time_ticket = null
|
|
}
|
|
},
|
|
|
|
//設置更新equip紅點的記錄
|
|
setUpdateRedPoint(bool){
|
|
this.is_redpoint_24900 = bool
|
|
this.is_redpoint_24905 = bool
|
|
this.is_redpoint_orderaction = bool
|
|
},
|
|
|
|
setSCDataBack24900(){
|
|
this.is_redpoint_24900 = true
|
|
this.checkRedPoint()
|
|
},
|
|
setSCDataBack24905(){
|
|
this.is_redpoint_24905 = true
|
|
this.checkRedPoint()
|
|
},
|
|
setSCDataBackOrderaction(){
|
|
this.is_redpoint_orderaction = true
|
|
this.checkRedPoint()
|
|
},
|
|
|
|
//need_check --必須檢測
|
|
checkRedPoint(need_check){
|
|
if( (this.is_redpoint_24905 && this.is_redpoint_24900 && this.is_redpoint_orderaction) || need_check) {
|
|
gcore.GlobalEvent.fire(LadderEvent.UpdateLadderRedStatus)
|
|
let status = this.getElitematchTotalRedPoint();
|
|
}
|
|
},
|
|
|
|
// -- 精英大賽是否開啟
|
|
// --return 是否開啟 , 限制類型 , 如果未開啟會返回: 0 表示段位開啟未開啟 1. 表示 等級不足 2 表示世界等級不足
|
|
checkElitematchIsOpen( not_tips ){
|
|
if( this.scdata && this.scdata.state == 0) {
|
|
if (!not_tips) {
|
|
nx.tbox(nx.text.getKey("lab_notOpen"))
|
|
}
|
|
return {is_open:false,limit_type: 0 ,desc:nx.text.getKey("lab_notOpen")}
|
|
}
|
|
|
|
// 個人等級限制
|
|
let role_lv_cfg = game.configs.arena_elite_data.data_elite_const["open_person_lev_limit"]
|
|
let role_vo = RoleController.getInstance().getRoleVo()
|
|
if (role_vo && role_lv_cfg && role_vo.lev < role_lv_cfg.val) {
|
|
if( !not_tips ){
|
|
nx.tbox(role_lv_cfg.desc)
|
|
}
|
|
return {is_open:false,limit_type: 1 ,desc:role_lv_cfg.desc}
|
|
}
|
|
// 世界等級限制
|
|
let world_lv_cfg = game.configs.arena_elite_data.data_elite_const["open_world_lev_limit"]
|
|
let world_lev = RoleController.getInstance().getModel().getWorldLev()
|
|
if (world_lev && world_lv_cfg && world_lev < world_lv_cfg.val) {
|
|
if( !not_tips ){
|
|
nx.tbox(world_lv_cfg.desc)
|
|
}
|
|
return {is_open:false,limit_type: 2 ,desc:world_lv_cfg.desc}
|
|
}
|
|
return {is_open:true}
|
|
},
|
|
//獲取賽季
|
|
setElitePeriod(period){
|
|
this.elite_period = period
|
|
},
|
|
getElitePeriod(){
|
|
return this.elite_period || 1
|
|
},
|
|
//獲取賽季排行
|
|
|
|
|
|
// --獲取每天開啟精英賽的剩餘時間
|
|
// --return is_open, time
|
|
// --如果 is_open = true time 表示剩餘結束
|
|
// --如果 is_open = false time 表示多少秒後開啟
|
|
getOpenMatchLessTime(){
|
|
// --開始時間 {12,0,0}
|
|
let open_time_val = game.configs.arena_elite_data.data_elite_const["open_time"].val
|
|
// --開始持續秒數
|
|
let max_times = game.configs.arena_elite_data.data_elite_const["open_times"].val
|
|
|
|
let zero_time = TimeTool.getToDayZeroTime()
|
|
|
|
let h = open_time_val[0] || 0
|
|
let m = open_time_val[1] || 0
|
|
let s = open_time_val[2] || 0
|
|
|
|
let temp_time = h * 60 * 60 + m * 60 + s
|
|
// --開始時間
|
|
let open_time = zero_time + temp_time
|
|
// --結束時間
|
|
let end_time = open_time + max_times
|
|
|
|
let cur_time = client.socket.getTime()
|
|
let is_open = true
|
|
let time = 0
|
|
if (open_time > cur_time) {
|
|
is_open = false
|
|
time = open_time - cur_time
|
|
}else if (cur_time > end_time) {
|
|
// --說明需要過天了
|
|
let tomorrow_time = zero_time + TimeTool.day2s()
|
|
is_open = false
|
|
time = tomorrow_time - cur_time + temp_time
|
|
}else{
|
|
is_open = true
|
|
time = end_time - cur_time
|
|
}
|
|
return {is_open:true, time:time}
|
|
},
|
|
|
|
// --------------------------------戰令-----------------------------------
|
|
setOrderactionData(data){
|
|
this.orderaction_data = data
|
|
if (data) {
|
|
this.setGiftStatus(data.rmb_status)
|
|
}
|
|
},
|
|
|
|
// --獲取當前週期
|
|
getCurPeriod(){
|
|
if (this.orderaction_data && this.orderaction_data.period) {
|
|
return this.orderaction_data.period
|
|
}
|
|
return 1
|
|
},
|
|
|
|
// --獲取特權狀態
|
|
getGiftStatus(){
|
|
if (this.rmb_status) {
|
|
return this.rmb_status
|
|
}
|
|
return 0
|
|
},
|
|
|
|
getLevShowData(lev){
|
|
if (this.orderaction_data && this.orderaction_data.list && this.orderaction_data.list[lev]) {
|
|
return this.orderaction_data.list[lev]
|
|
}
|
|
return null
|
|
},
|
|
|
|
// --獲取勝場
|
|
getWinCounts(){
|
|
if (this.orderaction_data && this.orderaction_data.win_count) {
|
|
return this.orderaction_data.win_count
|
|
}
|
|
return 0
|
|
},
|
|
|
|
getCurDay(){
|
|
if (this.orderaction_data && this.orderaction_data.cur_day) {
|
|
return this.orderaction_data.cur_day
|
|
}
|
|
return 1
|
|
},
|
|
|
|
setOrderactionRedStatus(status){
|
|
this.orderaction_first_red_status = status
|
|
},
|
|
|
|
// --設置特權狀態
|
|
setGiftStatus(status){
|
|
this.rmb_status = status
|
|
},
|
|
|
|
// --獲取戰令紅點
|
|
getOrderactionRedpoint(){
|
|
if (this.orderaction_first_red_status == 1) {
|
|
return true
|
|
}
|
|
|
|
if (!this.orderaction_data) return false;
|
|
|
|
let lev_reward_list = game.configs.arena_elite_data.data_lev_reward_list
|
|
if (lev_reward_list && lev_reward_list[this.orderaction_data.period]) {
|
|
for (let i in lev_reward_list[this.orderaction_data.period]) { //this.orderaction_data.list
|
|
let v = lev_reward_list[this.orderaction_data.period][i]
|
|
let status = 0
|
|
let rmb_status = 0
|
|
let lev_list = this.getLevShowData(v.lev)
|
|
if (lev_list) {
|
|
status = lev_list.award_status
|
|
rmb_status = lev_list.rmb_award_status
|
|
}
|
|
if( v.lev <= this.orderaction_data.lev) {
|
|
if (status == 0) { //可領
|
|
return true
|
|
}else if (rmb_status == 0 && this.orderaction_data.rmb_status == 1) { //可領
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
}); |