"use strict"; cc._RF.push(module, '30f91m18fpLTbGMomFF2JZn', 'elitematch_model'); // Scripts/mod/pvp/rank/elitematch_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-07-29 10:38:42 // -------------------------------------------------------------------- var 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 ctor() { this.ctrl = arguments[0]; }, properties: {}, initConfig: function initConfig() { //當前狀態 賦值 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: function setSCData(scdata) { if (this.scdata == null) { this.scdata = scdata; } else { for (var k in scdata) { var v = scdata[k]; if (this.scdata[k]) { this.scdata[k] = v; if (k == "rmb_status") { this.setGiftStatus(v); } } } } }, getSCData: function getSCData() { return this.scdata || {}; }, getEliteLev: function getEliteLev() { if (!this.scdata) return 1; return this.scdata.lev; }, getEliteRank: function getEliteRank() { if (!this.scdata) return 0; return this.scdata.rank; }, setRedPoint: function setRedPoint(redPoint) { this.redPoint = redPoint; }, //活動總紅點 getElitematchTotalRedPoint: function getElitematchTotalRedPoint() { var 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: function getMatchCountRedpoint() { if (!this.scdata) return false; if (this.scdata.day_combat_count > 0) { return true; } return false; }, //獲取獎勵紅點 getRewardRedpoint: function getRewardRedpoint() { if (!this.scdata) return false; for (var i in this.scdata.lev_reward) { var v = this.scdata.lev_reward[i]; if (v.flag == 1) { //可領 return true; } } return false; }, setEliteMatchFightTime: function setEliteMatchFightTime(data) { var _this = this; if (this.scdata24905 == null) { this.scdata24905 = data; } else { for (var k in data) { var v = data[k]; this.scdata24905[k] = v; } } if (this.scdata24905.end_time != 0) { if (this.time_ticket == null) { this.time_ticket = gcore.Timer.set(function () { _this.scdata24905.end_time = _this.scdata24905.end_time - 1; if (_this.scdata24905.end_time <= 0) { _this.clearTimeTicket(); ElitematchController.getInstance().sender24905(); } }, 1000, -1); } } }, clearTimeTicket: function clearTimeTicket() { if (this.time_ticket) { gcore.Timer.del(this.time_ticket); this.time_ticket = null; } }, //設置更新equip紅點的記錄 setUpdateRedPoint: function setUpdateRedPoint(bool) { this.is_redpoint_24900 = bool; this.is_redpoint_24905 = bool; this.is_redpoint_orderaction = bool; }, setSCDataBack24900: function setSCDataBack24900() { this.is_redpoint_24900 = true; this.checkRedPoint(); }, setSCDataBack24905: function setSCDataBack24905() { this.is_redpoint_24905 = true; this.checkRedPoint(); }, setSCDataBackOrderaction: function setSCDataBackOrderaction() { this.is_redpoint_orderaction = true; this.checkRedPoint(); }, //need_check --必須檢測 checkRedPoint: function checkRedPoint(need_check) { if (this.is_redpoint_24905 && this.is_redpoint_24900 && this.is_redpoint_orderaction || need_check) { gcore.GlobalEvent.fire(LadderEvent.UpdateLadderRedStatus); var status = this.getElitematchTotalRedPoint(); } }, // -- 精英大賽是否開啟 // --return 是否開啟 , 限制類型 , 如果未開啟會返回: 0 表示段位開啟未開啟 1. 表示 等級不足 2 表示世界等級不足 checkElitematchIsOpen: function 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") }; } // 個人等級限制 var role_lv_cfg = game.configs.arena_elite_data.data_elite_const["open_person_lev_limit"]; var 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 }; } // 世界等級限制 var world_lv_cfg = game.configs.arena_elite_data.data_elite_const["open_world_lev_limit"]; var 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: function setElitePeriod(period) { this.elite_period = period; }, getElitePeriod: function getElitePeriod() { return this.elite_period || 1; }, //獲取賽季排行 // --獲取每天開啟精英賽的剩餘時間 // --return is_open, time // --如果 is_open = true time 表示剩餘結束 // --如果 is_open = false time 表示多少秒後開啟 getOpenMatchLessTime: function getOpenMatchLessTime() { // --開始時間 {12,0,0} var open_time_val = game.configs.arena_elite_data.data_elite_const["open_time"].val; // --開始持續秒數 var max_times = game.configs.arena_elite_data.data_elite_const["open_times"].val; var zero_time = TimeTool.getToDayZeroTime(); var h = open_time_val[0] || 0; var m = open_time_val[1] || 0; var s = open_time_val[2] || 0; var temp_time = h * 60 * 60 + m * 60 + s; // --開始時間 var open_time = zero_time + temp_time; // --結束時間 var end_time = open_time + max_times; var cur_time = client.socket.getTime(); var is_open = true; var time = 0; if (open_time > cur_time) { is_open = false; time = open_time - cur_time; } else if (cur_time > end_time) { // --說明需要過天了 var 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: function setOrderactionData(data) { this.orderaction_data = data; if (data) { this.setGiftStatus(data.rmb_status); } }, // --獲取當前週期 getCurPeriod: function getCurPeriod() { if (this.orderaction_data && this.orderaction_data.period) { return this.orderaction_data.period; } return 1; }, // --獲取特權狀態 getGiftStatus: function getGiftStatus() { if (this.rmb_status) { return this.rmb_status; } return 0; }, getLevShowData: function getLevShowData(lev) { if (this.orderaction_data && this.orderaction_data.list && this.orderaction_data.list[lev]) { return this.orderaction_data.list[lev]; } return null; }, // --獲取勝場 getWinCounts: function getWinCounts() { if (this.orderaction_data && this.orderaction_data.win_count) { return this.orderaction_data.win_count; } return 0; }, getCurDay: function getCurDay() { if (this.orderaction_data && this.orderaction_data.cur_day) { return this.orderaction_data.cur_day; } return 1; }, setOrderactionRedStatus: function setOrderactionRedStatus(status) { this.orderaction_first_red_status = status; }, // --設置特權狀態 setGiftStatus: function setGiftStatus(status) { this.rmb_status = status; }, // --獲取戰令紅點 getOrderactionRedpoint: function getOrderactionRedpoint() { if (this.orderaction_first_red_status == 1) { return true; } if (!this.orderaction_data) return false; var lev_reward_list = game.configs.arena_elite_data.data_lev_reward_list; if (lev_reward_list && lev_reward_list[this.orderaction_data.period]) { for (var i in lev_reward_list[this.orderaction_data.period]) { //this.orderaction_data.list var v = lev_reward_list[this.orderaction_data.period][i]; var status = 0; var rmb_status = 0; var 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; } }); cc._RF.pop();