(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/stronger/stronger_model.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; cc._RF.push(module, '231aef4fC1Mf6405z4vt63b', 'stronger_model'); // Scripts/mod/stronger/stronger_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-03-29 11:43:16 // -------------------------------------------------------------------- var BattleDramaController = require("battle_drama_controller"); var GuildController = require("guild_controller"); var RoleController = require("role_controller"); var StrongerModel = cc.Class({ "extends": BaseClass, ctor: function ctor() {}, properties: {}, initConfig: function initConfig() { this.scroe_list = {}; //-- 我的伙伴评分数据 this.max_list = {}; //-- 本服最强评分数据 }, // --设置伙伴的评分数据 setDataByBid: function setDataByBid(data) { var self = this; if (!self.scroe_list[data.partner_bid]) { self.scroe_list[data.partner_bid] = {}; } self.scroe_list[data.partner_bid] = data.partner_score; //--伙伴评分 if (!self.max_list[data.partner_bid]) { self.max_list[data.partner_bid] = {}; } self.max_list[data.partner_bid] = data.stronger_partner_score; //--最强伙伴评分 }, //--返回英雄的总评/本服最强 getTotalAndMaxValByBid: function getTotalAndMaxValByBid(bid) { var self = this; var total = 0; if (self.scroe_list[bid]) { for (var k = 0; k < self.scroe_list[bid].length; ++k) { var v = self.scroe_list[bid][k]; total += v.val; } } var max = 0; if (self.max_list[bid]) { for (var _k = 0; _k < self.max_list[bid].length; ++_k) { var _v = self.max_list[bid][_k]; max += _v.val; } } return { total: total, max: max }; }, // -- 根据英雄bid获取变强相关数据 getStrongerValByBid: function getStrongerValByBid(bid, stronger_id) { var scroe_data = this.scroe_list[bid] || {}; var max_data = this.max_list[bid] || {}; var scroe_val = 0; var max_val = 0; for (var k = 0; k < scroe_data.length; ++k) { var v = scroe_data[k]; if (v.id_2 == stronger_id) { scroe_val = v.val; break; } } for (var _k2 = 0; _k2 < max_data.length; ++_k2) { var _v2 = max_data[_k2]; if (_v2.id_2 == stronger_id) { max_val = _v2.val; break; } } return { scroe_val: scroe_val, max_val: max_val }; }, // -- 判断变强item是否开启 checkStrongItemIsOpen: function checkStrongItemIsOpen(data) { var is_open = false; if (data) { if (data[0] && data[0] == 'dugeon') { //then --关卡的 var drama_data = BattleDramaController.getInstance().getModel().getDramaData(); if (drama_data && data[1]) { var dungeon_id = data[1]; if (drama_data.max_dun_id >= dungeon_id) { is_open = true; } } } else if (data[0] && data[0] == 'lev') { //then -- 等级的 var role_vo = RoleController.getInstance().getRoleVo(); if (role_vo && data[1]) { var lev = data[1]; if (role_vo.lev >= lev) { is_open = true; } } } else if (data[0] && data[0] == 'guild') { //then --公会等级 var _role_vo = RoleController.getInstance().getRoleVo(); if (_role_vo && _role_vo.gid != 0 && _role_vo.gsrv_id != '') { // then --表示有公会 var guild_info = GuildController.getInstance().getModel().getMyGuildInfo(); if (guild_info) { var _lev = data[1]; if (guild_info.lev >= _lev) { is_open = true; } } } } } return is_open; } }); cc._RF.pop(); } if (nodeEnv) { __define(__module.exports, __require, __module); } else { __quick_compile_project__.registerModuleFunc(__filename, function () { __define(__module.exports, __require, __module); }); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxzdHJvbmdlclxcc3Ryb25nZXJfbW9kZWwuanMiXSwibmFtZXMiOlsiQmF0dGxlRHJhbWFDb250cm9sbGVyIiwicmVxdWlyZSIsIkd1aWxkQ29udHJvbGxlciIsIlJvbGVDb250cm9sbGVyIiwiU3Ryb25nZXJNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwicHJvcGVydGllcyIsImluaXRDb25maWciLCJzY3JvZV9saXN0IiwibWF4X2xpc3QiLCJzZXREYXRhQnlCaWQiLCJkYXRhIiwic2VsZiIsInBhcnRuZXJfYmlkIiwicGFydG5lcl9zY29yZSIsInN0cm9uZ2VyX3BhcnRuZXJfc2NvcmUiLCJnZXRUb3RhbEFuZE1heFZhbEJ5QmlkIiwiYmlkIiwidG90YWwiLCJrIiwibGVuZ3RoIiwidiIsInZhbCIsIm1heCIsImdldFN0cm9uZ2VyVmFsQnlCaWQiLCJzdHJvbmdlcl9pZCIsInNjcm9lX2RhdGEiLCJtYXhfZGF0YSIsInNjcm9lX3ZhbCIsIm1heF92YWwiLCJpZF8yIiwiY2hlY2tTdHJvbmdJdGVtSXNPcGVuIiwiaXNfb3BlbiIsImRyYW1hX2RhdGEiLCJnZXRJbnN0YW5jZSIsImdldE1vZGVsIiwiZ2V0RHJhbWFEYXRhIiwiZHVuZ2Vvbl9pZCIsIm1heF9kdW5faWQiLCJyb2xlX3ZvIiwiZ2V0Um9sZVZvIiwibGV2IiwiZ2lkIiwiZ3Nydl9pZCIsImd1aWxkX2luZm8iLCJnZXRNeUd1aWxkSW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxxQkFBcUIsR0FBR0MsT0FBTyxDQUFDLHlCQUFELENBQW5DOztBQUNBLElBQUlDLGVBQWUsR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQTdCOztBQUNBLElBQUlFLGNBQWMsR0FBR0YsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlHLGFBQWEsR0FBR0Ms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O0FBQ0g7QUFyR3dCLENBQVQsQ0FBcEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg6L+Z6YeM5aGr5YaZ6K+m57uG6K+05piOLOS4u+imgeWhq+WGmeivpeaooeWdl+eahOWKn+iDveeugOimgVxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDMtMjkgMTE6NDM6MTZcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgQmF0dGxlRHJhbWFDb250cm9sbGVyID0gcmVxdWlyZShcImJhdHRsZV9kcmFtYV9jb250cm9sbGVyXCIpXG52YXIgR3VpbGRDb250cm9sbGVyID0gcmVxdWlyZShcImd1aWxkX2NvbnRyb2xsZXJcIilcbnZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIilcbnZhciBTdHJvbmdlck1vZGVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VDbGFzcyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgfSxcblxuICAgIHByb3BlcnRpZXM6IHtcbiAgICB9LFxuXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNjcm9lX2xpc3QgPSB7fSAvLy0tIOaIkeeahOS8meS8tOivhOWIhuaVsOaNrlxuICAgICAgICB0aGlzLm1heF9saXN0ID0ge30gICAvLy0tIOacrOacjeacgOW8uuivhOWIhuaVsOaNrlxuICAgIH0sXG4gICAgLy8gLS3orr7nva7kvJnkvLTnmoTor4TliIbmlbDmja5cbiAgICBzZXREYXRhQnlCaWQoIGRhdGEgKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIGlmICghc2VsZi5zY3JvZV9saXN0W2RhdGEucGFydG5lcl9iaWRdKXtcbiAgICAgICAgICAgIHNlbGYuc2Nyb2VfbGlzdFtkYXRhLnBhcnRuZXJfYmlkXSA9IHt9XHRcbiAgICAgICAgfVxuICAgICAgICBzZWxmLnNjcm9lX2xpc3RbZGF0YS5wYXJ0bmVyX2JpZF0gPSBkYXRhLnBhcnRuZXJfc2NvcmUgLy8tLeS8meS8tOivhOWIhlxuXG4gICAgICAgIGlmKCFzZWxmLm1heF9saXN0W2RhdGEucGFydG5lcl9iaWRdKXsgXG4gICAgICAgICAgICBzZWxmLm1heF9saXN0W2RhdGEucGFydG5lcl9iaWRdID0ge31cdFxuICAgICAgICB9XG4gICAgICAgIHNlbGYubWF4X2xpc3RbZGF0YS5wYXJ0bmVyX2JpZF0gPSBkYXRhLnN0cm9uZ2VyX3BhcnRuZXJfc2NvcmUgLy8tLeacgOW8uuS8meS8tOivhOWIhlxuICAgIH0sXG4gICAgLy8tLei/lOWbnuiLsembhOeahOaAu+ivhC/mnKzmnI3mnIDlvLpcbiAgICBnZXRUb3RhbEFuZE1heFZhbEJ5QmlkKGJpZCl7XG4gICAgICAgIHZhciBzZWxmID0gdGhpc1xuICAgICAgICBsZXQgdG90YWwgPSAwXG4gICAgICAgIGlmIChzZWxmLnNjcm9lX2xpc3RbYmlkXSl7IFxuICAgICAgICAgICAgZm9yKGxldCBrPTA7azxzZWxmLnNjcm9lX2xpc3RbYmlkXS5sZW5ndGg7KytrKXtcbiAgICAgICAgICAgICAgICBsZXQgdiA9IHNlbGYuc2Nyb2VfbGlzdFtiaWRdW2tdXG4gICAgICAgICAgICAgICAgdG90YWwgKz0gdi52YWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtYXggPSAwXG4gICAgICAgIGlmIChzZWxmLm1heF9saXN0W2JpZF0peyBcbiAgICAgICAgICAgIGZvcihsZXQgaz0wO2s8c2VsZi5tYXhfbGlzdFtiaWRdLmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgICAgIGxldCB2ID0gc2VsZi5tYXhfbGlzdFtiaWRdW2tdXG4gICAgICAgICAgICAgICAgbWF4ICs9IHYudmFsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt0b3RhbDp0b3RhbCxtYXg6bWF4fVxuICAgIH0sXG4gICAgLy8gLS0g5qC55o2u6Iux6ZuEYmlk6I635Y+W5Y+Y5by655u45YWz5pWw5o2uXG4gICAgZ2V0U3Ryb25nZXJWYWxCeUJpZCggYmlkLCBzdHJvbmdlcl9pZCApe1xuICAgICAgICBsZXQgc2Nyb2VfZGF0YSA9IHRoaXMuc2Nyb2VfbGlzdFtiaWRdIHx8IHt9XG4gICAgICAgIGxldCBtYXhfZGF0YSA9IHRoaXMubWF4X2xpc3RbYmlkXSB8fCB7fVxuICAgICAgICBsZXQgc2Nyb2VfdmFsID0gMFxuICAgICAgICBsZXQgbWF4X3ZhbCA9IDBcbiAgICAgICAgZm9yIChsZXQgaz0wO2s8c2Nyb2VfZGF0YS5sZW5ndGg7KytrKXsgXG4gICAgICAgICAgICBsZXQgdiA9IHNjcm9lX2RhdGFba11cbiAgICAgICAgICAgIGlmICh2LmlkXzIgPT0gc3Ryb25nZXJfaWQpe1xuICAgICAgICAgICAgICAgIHNjcm9lX3ZhbCA9IHYudmFsXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IobGV0IGs9MDtrPG1heF9kYXRhLmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgbGV0IHYgPSBtYXhfZGF0YVtrXVxuICAgICAgICAgICAgaWYgKHYuaWRfMiA9PSBzdHJvbmdlcl9pZCl7XG4gICAgICAgICAgICAgICAgbWF4X3ZhbCA9IHYudmFsXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge3Njcm9lX3ZhbDpzY3JvZV92YWwsIG1heF92YWw6bWF4X3ZhbH1cbiAgICB9LFxuICAgIC8vIC0tIOWIpOaWreWPmOW8uml0ZW3mmK/lkKblvIDlkK9cbiAgICBjaGVja1N0cm9uZ0l0ZW1Jc09wZW4oIGRhdGEgKXtcbiAgICAgICAgbGV0IGlzX29wZW4gPSBmYWxzZVxuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGFbMF0gJiYgZGF0YVswXSA9PSAnZHVnZW9uJyApey8vdGhlbiAtLeWFs+WNoeeahFxuICAgICAgICAgICAgICAgIGxldCBkcmFtYV9kYXRhID0gQmF0dGxlRHJhbWFDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0TW9kZWwoKS5nZXREcmFtYURhdGEoKVxuICAgICAgICAgICAgICAgIGlmIChkcmFtYV9kYXRhICYmIGRhdGFbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1bmdlb25faWQgPSBkYXRhWzFdXG4gICAgICAgICAgICAgICAgICAgIGlmIChkcmFtYV9kYXRhLm1heF9kdW5faWQgPj0gZHVuZ2Vvbl9pZCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc19vcGVuID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2UgaWYgKGRhdGFbMF0gJiYgZGF0YVswXSA9PSAnbGV2Jyl7IC8vdGhlbiAtLSDnrYnnuqfnmoRcbiAgICAgICAgICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKClcbiAgICAgICAgICAgICAgICBpZiAocm9sZV92byAmJiBkYXRhWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsZXYgPSBkYXRhWzFdXG4gICAgICAgICAgICAgICAgICAgIGlmIChyb2xlX3ZvLmxldiA+PSBsZXYgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzX29wZW4gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZSBpZiAoZGF0YVswXSAmJiBkYXRhWzBdID09ICdndWlsZCcpeyAvL3RoZW4gLS3lhazkvJrnrYnnuqdcbiAgICAgICAgICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKClcbiAgICAgICAgICAgICAgICBpZiAocm9sZV92byAmJiByb2xlX3ZvLmdpZCAhPSAwICYmIHJvbGVfdm8uZ3Nydl9pZCAhPSAnJyl7IC8vIHRoZW4gLS3ooajnpLrmnInlhazkvJpcbiAgICAgICAgICAgICAgICAgICAgbGV0IGd1aWxkX2luZm8gPSBHdWlsZENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRNb2RlbCgpLmdldE15R3VpbGRJbmZvKClcbiAgICAgICAgICAgICAgICAgICAgaWYgKGd1aWxkX2luZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXYgPSBkYXRhWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3VpbGRfaW5mby5sZXYgPj0gbGV2ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfb3BlbiA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNfb3BlblxuICAgIH1cbn0pOyJdfQ==