(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/prompt/prompt_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, '7ab42uMxktP54+bqyufoXdb', 'prompt_model'); // Scripts/mod/prompt/prompt_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-04-16 15:45:17 // -------------------------------------------------------------------- var PromptEvent = require("prompt_event"); var PromptModel = cc.Class({ "extends": BaseClass, ctor: function ctor() {}, properties: {}, initConfig: function initConfig() { this.prompt_list = []; this.auto_id = 0; }, addPromptData: function addPromptData(data) { var config = Config.notice_data.data_get[data.type]; if (config == null) { cc.log("==============> 添加小图标失败, 未配置该小图标数据, 类型为 ", data.type); return; } var prompt_vo = null; var obj = this.getSridByData(data); var cur_rid = obj.rid; var cur_srv_id = obj.srv_id; if (this.checkIsInList(data.type, cur_rid, cur_srv_id) == true) return; this.auto_id = this.auto_id + 1; var PromptVo = require("prompt_vo"); if (config.can_overly == 1) { prompt_vo = this.getPromptVoByType(data.type); if (prompt_vo == null) { prompt_vo = new PromptVo(data.type, this.auto_id); this.prompt_list.push(prompt_vo); } prompt_vo.update(data); } else { prompt_vo = new PromptVo(data.type, this.auto_id); prompt_vo.update(data); this.prompt_list.push(prompt_vo); } gcore.GlobalEvent.fire(PromptEvent.ADD_PROMPT_DATA, prompt_vo); }, getPromptVoByType: function getPromptVoByType(type) { for (var i = 0; i < this.prompt_list.length; ++i) { var v = this.prompt_list[i]; if (v.type == type) { return v; } } }, checkIsInList: function checkIsInList(type, rid, srv_id) { for (var i = 0; i < this.prompt_list.length; ++i) { var _vo = this.prompt_list[i]; if (_vo.type == type) { for (var k = 0; k < _vo.list.length; ++k) { var v = _vo.list[k]; var obj = _vo.getSridByData(v.data); var _rid = obj.rid; var _srv_id = obj.srv_id; var _rolename = obj.role_name; if (Utils.getNorKey(_rid, _srv_id) == Utils.getNorKey(rid, srv_id)) { return true; } } } } return false; }, getSridByData: function getSridByData(data) { var rid = 0, srv_id = "", role_name = ""; var bbs_id = 0; if (data && data.arg_uint32 && data.arg_uint32.length > 0) { for (var i = 0; i < data.arg_uint32.length; ++i) { var temp = data.arg_uint32[i]; if (temp) { if (temp.key == 1) { rid = temp.value; } else if (temp.key == 2) { bbs_id = temp.value; //留言板那边的..表示留言id } } } } if (data && data.arg_str && data.arg_str.length > 0) { for (var _i = 0; _i < data.arg_str.length; ++_i) { var _temp = data.arg_str[_i]; if (_temp) { if (_temp.key == 1) { srv_id = _temp.value; } else if (_temp.key == 2) { role_name = _temp.value; } } } } return { rid: rid, srv_id: srv_id, role_name: role_name, bbs_id: bbs_id }; }, getPromptList: function getPromptList() { return this.prompt_list; }, // -- 获取列表中是否有未气泡提示的消息 getNotBubblePrompt: function getNotBubblePrompt() { for (var k = 0; k < this.prompt_list.length; ++k) { var data = this.prompt_list[k]; if (data.is_show_bubble == false) { return data; } } }, //移除一个提示数据,根据类型和id移除 removePromptData: function removePromptData(type, id) { if (this.prompt_list.length > 0) { for (var i = 0; i < this.prompt_list.length; ++i) { if (vo.type == type && vo.id == id) { this.prompt_list.splice(i, 1); break; } } gcore.GlobalEvent.fire(PromptEvent.REMOVE_PROMPT_DATA); } }, //根据类型去删除提示数据【例如通过好友图标打开好友界面时候去清理提示数据】 removePromptDataByTpye: function removePromptDataByTpye(_type) { if (this.prompt_list.length > 0) { for (var i = 0; i < this.prompt_list.length; ++i) { var _vo2 = this.prompt_list[i]; if (_vo2.type == _type) { this.prompt_list.splice(i, 1); break; } } gcore.GlobalEvent.fire(PromptEvent.REMOVE_PROMPT_DATA); } }, //检测类型是有灯泡 checkPromptDataByTpye: function checkPromptDataByTpye(_type) { if (this.prompt_list.length > 0) { for (var i = 0; i < this.prompt_list.length; ++i) { var _vo3 = this.prompt_list[i]; if (_vo3.type == _type) { return true; } } } return false; } }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxwcm9tcHRcXHByb21wdF9tb2RlbC5qcyJdLCJuYW1lcyI6WyJQcm9tcHRFdmVudCIsInJlcXVpcmUiLCJQcm9tcHRNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwicHJvcGVydGllcyIsImluaXRDb25maWciLCJwcm9tcHRfbGlzdCIsImF1dG9faWQiLCJhZGRQcm9tcHREYXRhIiwiZGF0YSIsImNvbmZpZyIsIkNvbmZpZyIsIm5vdGljZV9kYXRhIiwiZGF0YV9nZXQiLCJ0eXBlIiwibG9nIiwicHJvbXB0X3ZvIiwib2JqIiwiZ2V0U3JpZEJ5RGF0YSIsImN1cl9yaWQiLCJyaWQiLCJjdXJfc3J2X2lkIiwic3J2X2lkIiwiY2hlY2tJc0luTGlzdCIsIlByb21wdFZvIiwiY2FuX292ZXJseSIsImdldFByb21wdFZvQnlUeXBlIiwicHVzaCIsInVwZGF0ZSIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiQUREX1BST01QVF9EQVRBIiwiaSIsImxlbmd0aCIsInYiLCJ2byIsImsiLCJsaXN0IiwiX3JpZCIsIl9zcnZfaWQiLCJfcm9sZW5hbWUiLCJyb2xlX25hbWUiLCJVdGlscyIsImdldE5vcktleSIsImJic19pZCIsImFyZ191aW50MzIiLCJ0ZW1wIiwia2V5IiwidmFsdWUiLCJhcmdfc3RyIiwiZ2V0UHJvbXB0TGlzdCIsImdldE5vdEJ1YmJsZVByb21wdCIsImlzX3Nob3dfYnViYmxlIiwicmVtb3ZlUHJvbXB0RGF0YSIsImlkIiwic3BsaWNlIiwiUkVNT1ZFX1BST01QVF9EQVRBIiwicmVtb3ZlUHJvbXB0RGF0YUJ5VHB5ZSIsIl90eXBlIiwiY2hlY2tQcm9tcHREYXRhQnlUcHllIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLFdBQVcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBQ0EsSUFB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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNC0xNiAxNTo0NToxN1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQcm9tcHRFdmVudCA9IHJlcXVpcmUoXCJwcm9tcHRfZXZlbnRcIilcbnZhciBQcm9tcHRNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcm9tcHRfbGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmF1dG9faWQgPSAwO1xuICAgIH0sXG4gICAgYWRkUHJvbXB0RGF0YShkYXRhKXtcbiAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZy5ub3RpY2VfZGF0YS5kYXRhX2dldFtkYXRhLnR5cGVdXG4gICAgICAgIGlmKGNvbmZpZyA9PSBudWxsKXtcbiAgICAgICAgICAgIGNjLmxvZyhcIj09PT09PT09PT09PT09PiDmt7vliqDlsI/lm77moIflpLHotKUsIOacqumFjee9ruivpeWwj+Wbvuagh+aVsOaNriwg57G75Z6L5Li6IFwiLCBkYXRhLnR5cGUpXG4gICAgICAgICAgICByZXR1cm4gXG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByb21wdF92byA9IG51bGxcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZ2V0U3JpZEJ5RGF0YShkYXRhKVxuICAgICAgICBsZXQgY3VyX3JpZCA9IG9iai5yaWQgXG4gICAgICAgIGxldCBjdXJfc3J2X2lkID0gb2JqLnNydl9pZFxuICAgICAgICBpZih0aGlzLmNoZWNrSXNJbkxpc3QoZGF0YS50eXBlLCBjdXJfcmlkLCBjdXJfc3J2X2lkKSA9PSB0cnVlKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXV0b19pZCA9IHRoaXMuYXV0b19pZCArIDFcbiAgICAgICAgbGV0IFByb21wdFZvID0gcmVxdWlyZShcInByb21wdF92b1wiKVxuICAgICAgICBpZihjb25maWcuY2FuX292ZXJseSA9PSAxKXtcbiAgICAgICAgICAgIHByb21wdF92byA9IHRoaXMuZ2V0UHJvbXB0Vm9CeVR5cGUoZGF0YS50eXBlKVxuICAgICAgICAgICAgaWYocHJvbXB0X3ZvID09IG51bGwpe1xuICAgICAgICAgICAgICAgIHByb21wdF92byA9IG5ldyBQcm9tcHRWbyhkYXRhLnR5cGUsIHRoaXMuYXV0b19pZClcbiAgICAgICAgICAgICAgICB0aGlzLnByb21wdF9saXN0LnB1c2gocHJvbXB0X3ZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbXB0X3ZvLnVwZGF0ZShkYXRhKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHByb21wdF92byA9IG5ldyBQcm9tcHRWbyhkYXRhLnR5cGUsIHRoaXMuYXV0b19pZClcbiAgICAgICAgICAgIHByb21wdF92by51cGRhdGUoZGF0YSlcbiAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3QucHVzaChwcm9tcHRfdm8pXG4gICAgICAgIH1cbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShQcm9tcHRFdmVudC5BRERfUFJPTVBUX0RBVEEsIHByb21wdF92byk7XG4gICAgfSxcbiAgICBnZXRQcm9tcHRWb0J5VHlwZSh0eXBlKXtcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2kpe1xuICAgICAgICAgICAgbGV0IHYgPSB0aGlzLnByb21wdF9saXN0W2ldXG4gICAgICAgICAgICBpZih2LnR5cGUgPT0gdHlwZSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2hlY2tJc0luTGlzdCh0eXBlLCByaWQsIHNydl9pZCl7XG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9tcHRfbGlzdC5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgIGxldCB2byA9IHRoaXMucHJvbXB0X2xpc3RbaV1cbiAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gdHlwZSl7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBrPTA7azx2by5saXN0Lmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgICAgICAgICBsZXQgdiA9IHZvLmxpc3Rba11cbiAgICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IHZvLmdldFNyaWRCeURhdGEodi5kYXRhKVxuICAgICAgICAgICAgICAgICAgICBsZXQgX3JpZCA9IG9iai5yaWRcbiAgICAgICAgICAgICAgICAgICAgbGV0IF9zcnZfaWQgPSBvYmouc3J2X2lkXG4gICAgICAgICAgICAgICAgICAgIGxldCBfcm9sZW5hbWUgPSBvYmoucm9sZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgIGlmKFV0aWxzLmdldE5vcktleShfcmlkLCBfc3J2X2lkKSA9PSBVdGlscy5nZXROb3JLZXkocmlkLCBzcnZfaWQpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBnZXRTcmlkQnlEYXRhKGRhdGEpe1xuICAgICAgICBsZXQgcmlkID0gMCwgc3J2X2lkID0gXCJcIiwgcm9sZV9uYW1lID0gXCJcIjtcbiAgICAgICAgbGV0IGJic19pZCA9IDBcbiAgICAgICAgaWYoZGF0YSAmJiBkYXRhLmFyZ191aW50MzIgJiYgZGF0YS5hcmdfdWludDMyLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTxkYXRhLmFyZ191aW50MzIubGVuZ3RoOysraSl7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLmFyZ191aW50MzJbaV1cbiAgICAgICAgICAgICAgICBpZih0ZW1wKXtcbiAgICAgICAgICAgICAgICAgICAgaWYodGVtcC5rZXkgPT0gMSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWQgPSB0ZW1wLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRlbXAua2V5ID09IDIpe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmJzX2lkID0gdGVtcC52YWx1ZSAvL+eVmeiogOadv+mCo+i+ueeahC4u6KGo56S655WZ6KiAaWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZihkYXRhICYmIGRhdGEuYXJnX3N0ciAmJiBkYXRhLmFyZ19zdHIubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPGRhdGEuYXJnX3N0ci5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEuYXJnX3N0cltpXVxuICAgICAgICAgICAgICAgIGlmKHRlbXApe1xuICAgICAgICAgICAgICAgICAgICBpZih0ZW1wLmtleSA9PSAxKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNydl9pZCA9IHRlbXAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYodGVtcC5rZXkgPT0gMil7XG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlX25hbWUgPSB0ZW1wLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtyaWQ6cmlkLCBzcnZfaWQ6c3J2X2lkLCByb2xlX25hbWU6cm9sZV9uYW1lLCBiYnNfaWQ6YmJzX2lkfVxuICAgIH0sXG4gICAgZ2V0UHJvbXB0TGlzdCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9tcHRfbGlzdFxuICAgIH0sXG4gICAgLy8gLS0g6I635Y+W5YiX6KGo5Lit5piv5ZCm5pyJ5pyq5rCU5rOh5o+Q56S655qE5raI5oGvXG4gICAgZ2V0Tm90QnViYmxlUHJvbXB0KCAgKXtcbiAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2spe1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnByb21wdF9saXN0W2tdXG4gICAgICAgICAgICBpZihkYXRhLmlzX3Nob3dfYnViYmxlID09IGZhbHNlKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvL+enu+mZpOS4gOS4quaPkOekuuaVsOaNrizmoLnmja7nsbvlnovlkoxpZOenu+mZpFxuICAgIHJlbW92ZVByb21wdERhdGEodHlwZSwgaWQpe1xuICAgICAgICBpZih0aGlzLnByb21wdF9saXN0Lmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnByb21wdF9saXN0Lmxlbmd0aDsrK2kpe1xuICAgICAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gdHlwZSAmJiB2by5pZCA9PSBpZCl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3Quc3BsaWNlKGksMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFByb21wdEV2ZW50LlJFTU9WRV9QUk9NUFRfREFUQSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy/moLnmja7nsbvlnovljrvliKDpmaTmj5DnpLrmlbDmja7jgJDkvovlpoLpgJrov4flpb3lj4vlm77moIfmiZPlvIDlpb3lj4vnlYzpnaLml7blgJnljrvmuIXnkIbmj5DnpLrmlbDmja7jgJFcbiAgICByZW1vdmVQcm9tcHREYXRhQnlUcHllKF90eXBlKXtcbiAgICAgICAgaWYodGhpcy5wcm9tcHRfbGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5wcm9tcHRfbGlzdC5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgICAgICBsZXQgdm8gPSB0aGlzLnByb21wdF9saXN0W2ldXG4gICAgICAgICAgICAgICAgaWYodm8udHlwZSA9PSBfdHlwZSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvbXB0X2xpc3Quc3BsaWNlKGksMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFByb21wdEV2ZW50LlJFTU9WRV9QUk9NUFRfREFUQSlcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvL+ajgOa1i+exu+Wei+aYr+acieeBr+azoVxuICAgIGNoZWNrUHJvbXB0RGF0YUJ5VHB5ZShfdHlwZSl7XG4gICAgICAgIGlmKHRoaXMucHJvbXB0X2xpc3QubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucHJvbXB0X2xpc3QubGVuZ3RoOysraSl7XG4gICAgICAgICAgICAgICAgbGV0IHZvID0gdGhpcy5wcm9tcHRfbGlzdFtpXVxuICAgICAgICAgICAgICAgIGlmKHZvLnR5cGUgPT0gX3R5cGUpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxufSk7Il19