"use strict"; cc._RF.push(module, 'a3d57k/pSBDYLi2DcL+pva4', 'arenateam_model'); // Scripts/mod/pvp/arenateam/arenateam_model.js "use strict"; /* 這裡填寫簡要說明(必填), @author: lwc@syg.com(必填, 創建模塊的人員) @editor: xxx@syg.com(必填, 後續維護以及修改的人員) @description: 組隊競技場 後端 鋒林 策劃 康傑
Create: 2019-09-28 */ var BridgeClass = require("bridge.class"); var RoleController = require("role_controller"); var ArenateamEvent = require("arenateam_event"); var ArenateamModel = cc.Class({ "extends": BridgeClass, ctor: function ctor() { // this.ctrl = arguments[0] //我的隊伍信息 this.my_team_info = null; //我的詳細隊伍信息 this.my_team_details_info = null; }, initConfig: function initConfig() {}, //主界面的紅點 checkArenateamTotalRedPoint: function checkArenateamTotalRedPoint(need_check) { var redpoint = false; if (this.my_team_info) { //1:開啟組隊 2:開啟挑戰 if (this.my_team_info.state == 1 || this.my_team_info.state == 2) { for (var k in this.my_team_info.award_list) { if (this.my_team_info.award_list[k].status == 1) { redpoint = true; break; } } // if (this.login_data){ if (!redpoint) { redpoint = this.is_report_red; } if (!redpoint) { //隊員數量不滿足紅點 if (this.my_team_info && this.my_team_info.team_members.length < 3) { redpoint = this.is_apply_red; } } if (!redpoint) { redpoint = this.is_invitation_red; } if (!redpoint) { redpoint = this.is_chat_red; } // } else if (this.my_team_info.state == 4 || this.my_team_info.state == 3) { //結算期 和 排行展示時期 //結算期只需要判斷 寶箱和戰報紅點 for (var _k in this.my_team_info.award_list) { if (this.my_team_info.award_list[_k].status == 1) { redpoint = true; break; } } if (!redpoint) { redpoint = this.is_report_red; } } if (need_check) { gcore.GlobalEvent.fire(ArenateamEvent.ARENATEAM_ALL_RED_POINT_EVENT); } if (!redpoint) { redpoint = false; } } return redpoint; } }, updateLoginRedpoint: function updateLoginRedpoint(data) { if (!data) { return; } this.login_data = data; for (var k in data.point) { var v = data.point[k]; if (v.type == 1) //戰報紅點 this.is_report_red = v.state == 1;else if (v.type == 2) //申請紅點 this.is_apply_red = v.state == 1;else if (v.type == 3) //被邀請紅點 this.is_invitation_red = v.state == 1;else if (v.type == 4) //新的聊天 this.is_chat_red = v.state == 1; } this.checkArenateamTotalRedPoint(true); }, //設置紅點類型 setIsReportRedpoint: function setIsReportRedpoint(status) { this.is_report_red = status; this.checkArenateamTotalRedPoint(true); }, setIsApplayRedpoint: function setIsApplayRedpoint(status) { this.is_apply_red = status; this.checkArenateamTotalRedPoint(true); }, setIsInvitationRedpoint: function setIsInvitationRedpoint(status) { this.is_invitation_red = status; this.checkArenateamTotalRedPoint(true); }, setIsChatRedpoint: function setIsChatRedpoint(status) { this.is_chat_red = status; this.checkArenateamTotalRedPoint(true); }, getMyTeamInfo: function getMyTeamInfo() { return this.my_team_info; }, setMyTeamInfo: function setMyTeamInfo(my_team_info) { this.my_team_info = my_team_info; this.checkArenateamTotalRedPoint(true); }, updateRewardInfo: function updateRewardInfo(id) { if (this.my_team_info && id) { for (var k in this.my_team_info.award_list) { var v = this.my_team_info.award_list[k]; // for (i, v in ipairs(this.my_team_info.award_list)) { if (v.award_id == id) { v.status = 2; } } this.checkArenateamTotalRedPoint(true); } }, setMyTeamDetailsInfo: function setMyTeamDetailsInfo(data) { if (data.tid == 0) this.my_team_details_info = null;else this.my_team_details_info = data; }, getMyTeamDetailsInfo: function getMyTeamDetailsInfo() { return this.my_team_details_info; }, //是否已有隊伍 isHaveTeam: function isHaveTeam() { if (this.my_team_info && this.my_team_info.tid != 0) { return true; } return false; }, updateRankInfo: function updateRankInfo(data) { this.rank_data = data; }, getRankData: function getRankData() { return this.rank_data; }, checkArenaTeamIsOpen: function checkArenaTeamIsOpen(not_tips) { var role_lv_cfg = game.configs.arena_team_data.data_const["open_lev"]; var role_vo = RoleController.getInstance().getRoleVo(); if (role_vo && role_lv_cfg && role_vo.lev < role_lv_cfg.val) { if (!not_tips) { message(role_lv_cfg.desc); } return false, 1, role_lv_cfg.desc; } return true; }, //判斷玩家是否是隊長 isLeader: function isLeader() { if (this.my_team_info) { var team_members = this.my_team_info.team_members; for (var k in team_members) { var v = team_members[k]; for (var i in v.ext) { var data = v.ext[i]; if (data.extra_key == 1 && data.extra_val == 1) { var role_vo = RoleController.getInstance().getRoleVo(); if (role_vo && v.rid == role_vo.rid && v.sid == role_vo.srv_id) { //是隊長 return true; } } } } } return false; }, getTimeStep: function getTimeStep() { if (this.time_step) { return this.time_step; } return 0; }, startTimeTicket: function startTimeTicket() { if (this.refresh_cd == null) { this.refresh_cd = 10; var config = game.configs.arena_team_data.data_const.refresh_cd; if (config) { this.refresh_cd = config.val; } } this.time_step = this.refresh_cd; var _callback = function _callback() { this.time_step = this.time_step - 1; gcore.GlobalEvent.fire(ArenateamEvent.ARENATEAM_TIMER_EVENT, this.time_step); if (this.time_step <= 0) { this.clearTimeTicket(); } }; this.time_ticket = gcore.Timer.set(_callback, 1, -1); }, clearTimeTicket: function clearTimeTicket() { if (this.time_ticket != null) { gcore.Timer.del(this.time_ticket); this.time_ticket = null; } } }); cc._RF.pop();