"use strict"; cc._RF.push(module, '106ecVVHAlFFK55J8Q1kOck', 'halidom_model'); // Scripts/mod/home/base_kernel/halidom_model.js "use strict"; var BridgeClass = require("bridge.class"); var HalidomConst = require("halidom_const"); var HeroController = require("hero_controller"); var HalidomController = require("halidom_controller"); var RoleController = require("role_controller"); var HalidomEvent = require("halidom_event"); var HeroConst = require("hero_const"); var HalidomModel = cc.Class({ "extends": BridgeClass, ctor: function ctor() { this.ctrl = HalidomController.getInstance(); }, properties: {}, initConfig: function initConfig() { this.all_halidom_data = []; this.halidom_red_list = []; }, // 设置圣物数据 setAllHalidomData: function setAllHalidomData(data_list) { this.all_halidom_data = []; for (var k in data_list) { var hData = data_list[k]; var HalidomVo = require('halidom_vo'); var halidom_vo = new HalidomVo(); halidom_vo.updateData(hData); this.all_halidom_data.push(halidom_vo); } }, // 更新某一圣物数据(也可能是新增) updateHalidomData: function updateHalidomData(data) { var is_have = false; for (var k in this.all_halidom_data) { var halidom_vo = this.all_halidom_data[k]; if (halidom_vo.id == data.id) { is_have = true; halidom_vo.updateData(data); break; } } if (!is_have) { var HalidomVo = require('halidom_vo'); var _halidom_vo = new HalidomVo(); _halidom_vo.updateData(data); this.all_halidom_data.push(_halidom_vo); } return is_have; }, getAllHaildomData: function getAllHaildomData() { return this.all_halidom_data; }, // 根据id获取圣物数据 getHalidomDataById: function getHalidomDataById(id) { for (var k in this.all_halidom_data) { var halidom_vo = this.all_halidom_data[k]; if (halidom_vo.id == id) { return halidom_vo; } } return {}; }, // 根据阵营id获取圣物数据 getHalidomDataByCampType: function getHalidomDataByCampType(camp_type) { for (var k in this.all_halidom_data) { var halidom_vo = this.all_halidom_data[k]; var halidom_cfg = game.configs.halidom_data.data_base[halidom_vo.id]; if (halidom_cfg && halidom_cfg.camp == camp_type) { return halidom_vo; } } }, // 根据id判断圣物是否解锁 checkHalidomIsUnlock: function checkHalidomIsUnlock(id) { var is_unlock = false; for (var k in this.all_halidom_data) { var halidom_vo = this.all_halidom_data[k]; if (halidom_vo.id == id) { is_unlock = true; break; } } return is_unlock; }, // 获取圣物是否开启 checkHalidomIsOpen: function checkHalidomIsOpen(not_tips) { if (!game.configs.halidom_data) { return; } var role_vo = RoleController.getInstance().getRoleVo(); if (game.configs.halidom_data) { var _limit_lv_cfg = game.configs.halidom_data.data_const["halidom_open_lev"]; if (_limit_lv_cfg && role_vo && _limit_lv_cfg.val <= role_vo.lev) { return true; } } if (!not_tips && limit_lv_cfg) { nx.tbox(limit_lv_cfg.desc); } return false; }, //@ 红点相关 updateHalidomRedStatus: function updateHalidomRedStatus(bid, status) { this.halidom_red_list[bid] = status; gcore.GlobalEvent.fire(HalidomEvent.Update_Halidom_Red_Event, bid, status); }, getHalidomRedStatus: function getHalidomRedStatus() { var red_status = false; for (var bid in this.halidom_red_list) { var status = this.halidom_red_list[bid]; if (status == true) { red_status = true; break; } } return red_status; }, // 获取圣物红点状态 getHalidomRedStatusByRedBid: function getHalidomRedStatusByRedBid(bid) { return this.halidom_red_list[bid] || false; }, // 计算一下红点数据 calculateHalidomRedStatus: function calculateHalidomRedStatus() { // if( !game.configs.halidom_data ){ // return; // } // if (!this.checkHalidomIsOpen(true)) return; // for (let k in this.all_halidom_data) { // let halidom_vo = this.all_halidom_data[k]; // halidom_vo.checkHalidomRedStatus(); // } }, checkHalidomRedStatus: function checkHalidomRedStatus() { if (!this.checkHalidomIsOpen(true)) return; if (!game.configs.halidom_data) { return; } //是否有可以解锁的圣物 var unlock_red_status = false; for (var k in game.configs.halidom_data.data_base) { var v = game.configs.halidom_data.data_base[k]; if (this.checkHalidomIsCanUnlock(v.id)) { unlock_red_status = true; break; } } this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Unlock, unlock_red_status); //是否有可以升级的圣物 var lvup_red_status = false; for (var _k in this.all_halidom_data) { var halidom_vo = this.all_halidom_data[_k]; if (halidom_vo.getRedStatusByType(HalidomConst.Red_Type.Lvup)) { lvup_red_status = true; break; } } this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Lvup, lvup_red_status); // 是否有可以进阶的圣物 var step_red_status = false; for (var _k2 in this.all_halidom_data) { var _halidom_vo2 = this.all_halidom_data[_k2]; if (_halidom_vo2.getRedStatusByType(HalidomConst.Red_Type.Step)) { step_red_status = true; break; } } this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Step, step_red_status); }, // 根据圣物id判断是否满足解锁条件 checkHalidomIsCanUnlock: function checkHalidomIsCanUnlock(id) { var is_can_unlock = false; if (this.checkHalidomIsOpen(true) && !this.checkHalidomIsUnlock(id)) { var base_cfg = game.configs.halidom_data.data_base[id]; if (base_cfg) { is_can_unlock = true; var hero_array = HeroController.getInstance().getModel().getAllHeroArray(); var hero_size = hero_array.length; for (var k in base_cfg.loss) { var v = base_cfg.loss[k]; var camp = v[1]; var star = v[2]; var num = v[3]; var have_num = 0; for (var i = 1; i <= hero_size; i++) { var hero_vo = hero_array[i - 1]; if (hero_vo.is_lock == 0 && hero_vo.is_in_form == 0 && hero_vo.camp_type == camp && hero_vo.star == star) { have_num = have_num + 1; } if (have_num >= num) { break; } } if (have_num < num) { is_can_unlock = false; break; } } } } return is_can_unlock; } }); cc._RF.pop();