// -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
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 } });