"use strict"; cc._RF.push(module, '4e4416e2MdPr7t+VKSWJI2U', 'halidom_vo'); // Scripts/mod/home/base_kernel/halidom_vo.js "use strict"; var HeroController = require("hero_controller"); var BackpackController = require("backpack_controller"); var HalidomConst = require("halidom_const"); var HalidomVo = cc.Class({ "extends": gcore.BaseEvent, ctor: function ctor() { this.id = 0; // 圣物id this.lev = 0; // 圣物等级 this.exp = 0; // 圣物经验值 this.step = 0; // 圣物阶数 this.all_attr = []; // 圣物属性值 this.red_status_list = []; // 圣物红点 }, //////////////// updateData: function updateData(data) { for (var key in data) { var value = data[key]; this[key] = value; } this.dispatchUpdateAttrByKey(); // this.checkHalidomRedStatus() }, dispatchUpdateAttrByKey: function dispatchUpdateAttrByKey() {}, // 检测红点数据 checkHalidomRedStatus: function checkHalidomRedStatus() { // 升级 var self = this; var is_can_lvup = false; var max_lv = game.configs.halidom_data.data_max_lev[this.id]; var all_lv_cfg = game.configs.halidom_data.data_lvup[this.id]; if (this.lev < max_lv && all_lv_cfg) { var lv_cfg = all_lv_cfg[this.lev]; if (lv_cfg) { is_can_lvup = true; for (var k in lv_cfg.loss) { var v = lv_cfg.loss[k]; var bid = v[0]; var num = v[1]; var have_num = BackpackController.getInstance().getModel().getItemNumByBid(bid); if (have_num < num) { is_can_lvup = false; break; } } } } this.red_status_list[HalidomConst.Red_Type.Lvup] = is_can_lvup; // 进阶 var is_can_step = false; var max_step = game.configs.halidom_data.data_max_step[this.id]; var all_step_cfg = game.configs.halidom_data.data_step[this.id]; if (this.step < max_step && all_step_cfg) { var step_cfg = all_step_cfg[this.step + 1]; if (step_cfg) { // 是否满足进阶条件 is_can_step = true; for (var i in step_cfg.conds) { var _v = step_cfg.conds[i]; if (_v[0] == "lev" && _v[1] && self.lev < _v[1]) { is_can_step = false; } } // 道具消耗是否满足 if (is_can_step) { for (var a in step_cfg.loss_items) { var _v2 = step_cfg.loss_items[a]; var _bid = _v2[0]; var _num = _v2[1]; var _have_num = BackpackController.getInstance().getModel().getItemNumByBid(_bid); if (_have_num < _num) { is_can_step = false; break; } } } var hero_array = HeroController.getInstance().getModel().getAllHeroArray(); var hero_size = hero_array.length; // 指定英雄消耗 if (is_can_step) { for (var _k in step_cfg.loss_fixed) { var _v3 = step_cfg.loss_fixed[_k]; var _bid2 = _v3[0]; var star = _v3[1]; var _num2 = _v3[2]; var _have_num2 = 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.bid == _bid2 && hero_vo.star == star) { _have_num2 = _have_num2 + 1; } if (_have_num2 >= _num2) { break; } } if (_have_num2 < _num2) { is_can_step = false; break; } } } // 随机英雄消耗 if (is_can_step) { for (var _k2 in step_cfg.loss_rand) { var _v4 = step_cfg.loss_rand[_k2]; var camp = _v4[0]; var _star = _v4[1]; var _num3 = _v4[2]; var _have_num3 = 0; for (var _i2 = 1; _i2 <= hero_size; _i2++) { var _hero_vo = hero_array[_i2 - 1]; if (_hero_vo.is_lock == 0 && _hero_vo.is_in_form == 0 && _hero_vo.camp_type == camp && _hero_vo.star == _star) { _have_num3 = _have_num3 + 1; } if (_have_num3 >= _num3) { break; } } if (_have_num3 < _num3) { is_can_step = false; break; } } } } } this.red_status_list[HalidomConst.Red_Type.Step] = is_can_step; }, // 获取根据类型圣物红点状态 getRedStatusByType: function getRedStatusByType(red_type) { return this.red_status_list[red_type] || false; } }); HalidomVo.prototype.UPDATE_HALIDOM_ATTR = "UPDATE_HALIDOM_ATTR"; module.exports = HalidomVo; cc._RF.pop();