"use strict"; cc._RF.push(module, '9f3a3EwIxpMW5IWDehXGqao', 'crosschampion_model'); // Scripts/mod/pvp/crosschampion/crosschampion_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
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();