(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/startower/startower_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, '2481eZrVBpP7rPNob1XwV5e', 'startower_model'); // Scripts/mod/startower/startower_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 星命塔 //
Create: 2019-02-27 11:03:16 // -------------------------------------------------------------------- var StartowerEvent = require("startower_event"); var StartowerModel = cc.Class({ "extends": BaseClass, ctor: function ctor() { this.ctrl = require("startower_controller").getInstance(); this.initConfig(); }, properties: {}, initConfig: function initConfig() { // 已通关的最大层数 this.max_tower = 0; //剩余挑战次数 this.less_count = 0; //已购买次数 this.buy_count = 0; this.reward_list = []; //通关奖励状态 }, setStarTowerData: function setStarTowerData(data) { var tempsort = { 0: 2, // 0 未领取放中间 1: 1, // 1 可领取放前面 2: 3 // 2 已领取放最后 }; this.max_tower = data.max_tower || 0; this.less_count = data.count || 0; this.buy_count = data.buy_count || 0; if (Utils.next(data.award_list) != null) { for (var i in data.award_list) { var tab = {}; tab.id = data.award_list[i].id; tab.status = data.award_list[i].status; tab.sort = tempsort[tab.status]; this.reward_list[data.award_list[i].id - 1] = tab; } } this.reward_list.sort(Utils.tableLowerSorter(["sort", "id"])); this.updateRedPoint(); gcore.GlobalEvent.fire(StartowerEvent.Update_All_Data); }, setRewardData: function setRewardData(data) { if (!this.reward_list || !data[0]) return; var tempsort = { 0: 2, // 0 未领取放中间 1: 1, // 1 可领取放前面 2: 3 // 2 已领取放最后 }; for (var i in this.reward_list) { if (this.reward_list[i].id == data[0].id) { this.reward_list[i].status = data[0].status; this.reward_list[i].sort = tempsort[data[0].status]; break; } } this.reward_list.sort(Utils.tableLowerSorter(["sort", "id"])); }, sortFunc: function sortFunc(data) { data.sort(function (objA, objB) { if (objA.sort != objB.sort) { if (objA.sort && objB.sort) { return objA.sort - objB.sort; } else { return false; } } else { return objA.id - objB.id; } }); return data; }, getRewardData: function getRewardData(id) { if (!this.reward_list) return; if (id == null) { return this.reward_list || {}; } else { return this.reward_list[id] || {}; } }, updateRedPoint: function updateRedPoint() { RedMgr.getInstance().addCalHandler(this.checkRedPoint.bind(this), RedIds.StarTower); }, checkRedPoint: function checkRedPoint() { var is_open = this.ctrl.checkIsOpen(); if (!is_open) return; var status = false; for (var i in this.reward_list) { if (this.reward_list[i].status == 1) { status = true; break; } } status = status || this.less_count > 0; var SceneConst = require("scene_const"); var MainSceneController = require("mainscene_controller"); MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.startower, { bid: 1, status: status }); }, updateMaxTower: function updateMaxTower(data) { if (data && data.max_tower && this.max_tower < data.max_tower) { this.max_tower = data.max_tower; } gcore.GlobalEvent.fire(StartowerEvent.Fight_Success_Event); }, updateLessCount: function updateLessCount(data) { if (data.count != null) { this.less_count = data.count || 0; this.updateRedPoint(); } if (data.buy_count != null) { this.buy_count = data.buy_count; } gcore.GlobalEvent.fire(StartowerEvent.Count_Change_Event); }, getNowTowerId: function getNowTowerId() { return this.max_tower || 0; }, getTowerLessCount: function getTowerLessCount() { return this.less_count; }, getBuyCount: function getBuyCount() { return this.buy_count; } }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxzdGFydG93ZXJcXHN0YXJ0b3dlcl9tb2RlbC5qcyJdLCJuYW1lcyI6WyJTdGFydG93ZXJFdmVudCIsInJlcXVpcmUiLCJTdGFydG93ZXJNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwiY3RybCIsImdldEluc3RhbmNlIiwiaW5pdENvbmZpZyIsInByb3BlcnRpZXMiLCJtYXhfdG93ZXIiLCJsZXNzX2NvdW50IiwiYnV5X2NvdW50IiwicmV3YXJkX2xpc3QiLCJzZXRTdGFyVG93ZXJEYXRhIiwiZGF0YSIsInRlbXBzb3J0IiwiY291bnQiLCJVdGlscyIsIm5leHQiLCJhd2FyZF9saXN0IiwiaSIsInRhYiIsImlkIiwic3RhdHVzIiwic29ydCIsInRhYmxlTG93ZXJTb3J0ZXIiLCJ1cGRhdGVSZWRQb2ludCIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiVXBkYXRlX0FsbF9EYXRhIiwic2V0UmV3YXJkRGF0YSIsInNvcnRGdW5jIiwib2JqQSIsIm9iakIiLCJnZXRSZXdhcmREYXRhIiwiUmVkTWdyIiwiYWRkQ2FsSGFuZGxlciIsImNoZWNrUmVkUG9pbnQiLCJiaW5kIiwiUmVkSWRzIiwiU3RhclRvd2VyIiwiaXNfb3BlbiIsImNoZWNrSXNPcGVuIiwiU2NlbmVDb25zdCIsIk1haW5TY2VuZUNvbnRyb2xsZXIiLCJzZXRCdWlsZFJlZFN0YXR1cyIsIkNlbnRlclNjZW5lQnVpbGQiLCJzdGFydG93ZXIiLCJiaWQiLCJ1cGRhdGVNYXhUb3dlciIsIkZpZ2h0X1N1Y2Nlc3NfRXZlbnQiLCJ1cGRhdGVMZXNzQ291bnQiLCJDb3VudF9DaGFuZ2VfRXZlbnQiLCJnZXROb3dUb3dlcklkIiwiZ2V0VG93ZXJMZXNzQ291bnQiLCJnZXRCdXlDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxjQUFjLEdBQUdD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Q0MsV0FBTixDQUFrQkMsSUFBbEIsQ0FBdUIvQixjQUFjLENBQUNxRCxtQkFBdEM7QUFDSCxHQWxIeUI7QUFvSDFCQyxFQUFBQSxlQUFlLEVBQUMseUJBQVN0QyxJQUFULEVBQWM7QUFDMUIsUUFBR0EsSUFBSSxDQUFDRSxLQUFMLElBQWMsSUFBakIsRUFBc0I7QUFDbEIsV0FBS04sVUFBTCxHQUFrQkksSUFBSSxDQUFDRSxLQUFMLElBQWMsQ0FBaEM7QUFDQSxXQUFLVSxjQUFMO0FBQ0g7O0FBQ0QsUUFBR1osSUFBSSxDQUFDSCxTQUFMLElBQWtCLElBQXJCLEVBQTBCO0FBQ3RCLFdBQUtBLFNBQUwsR0FBaUJHLElBQUksQ0FBQ0gsU0FBdEI7QUFDSDs7QUFDRGdCLElBQUFBLEtBQUssQ0FBQ0MsV0FBTixDQUFrQkMsSUFBbEIsQ0FBdUIvQixjQUFjLENBQUN1RCxrQkFBdEM7QUFDSCxHQTdIeUI7QUErSDFCQyxFQUFBQSxhQUFhLEVBQUMseUJBQVU7QUFDcEIsV0FBTyxLQUFLN0MsU0FBTCxJQUFrQixDQUF6QjtBQUNILEdBakl5QjtBQW1JMUI4QyxFQUFBQSxpQkFBaUIsRUFBQyw2QkFBVTtBQUN4QixXQUFPLEtBQUs3QyxVQUFaO0FBQ0gsR0FySXlCO0FBdUkxQjhDLEVBQUFBLFdBQVcsRUFBQyx1QkFBVTtBQUNsQixXQUFPLEtBQUs3QyxTQUFaO0FBQ0g7QUF6SXlCLENBQVQsQ0FBckIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg5pif5ZG95aGUXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMi0yNyAxMTowMzoxNlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBTdGFydG93ZXJFdmVudCA9IHJlcXVpcmUoXCJzdGFydG93ZXJfZXZlbnRcIik7XG5cbnZhciBTdGFydG93ZXJNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN0cmwgPSByZXF1aXJlKFwic3RhcnRvd2VyX2NvbnRyb2xsZXJcIikuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgdGhpcy5pbml0Q29uZmlnKCk7XG4gICAgfSxcblxuICAgIHByb3BlcnRpZXM6IHtcbiAgICB9LFxuXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDlt7LpgJrlhbPnmoTmnIDlpKflsYLmlbBcbiAgICAgICAgdGhpcy5tYXhfdG93ZXIgPSAwO1xuICAgICAgICAvL+WJqeS9meaMkeaImOasoeaVsFxuICAgICAgICB0aGlzLmxlc3NfY291bnQgPSAwO1xuICAgICAgICAvL+W3sui0reS5sOasoeaVsFxuICAgICAgICB0aGlzLmJ1eV9jb3VudCA9IDA7XG4gICAgICAgIHRoaXMucmV3YXJkX2xpc3QgPSBbXTsgIC8v6YCa5YWz5aWW5Yqx54q25oCBXG5cbiAgICB9LFxuXG4gICAgc2V0U3RhclRvd2VyRGF0YTpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgdmFyIHRlbXBzb3J0ID0ge1xuICAgICAgICAgICAgMDogMiwgIC8vIDAg5pyq6aKG5Y+W5pS+5Lit6Ze0XG4gICAgICAgICAgICAxOiAxLCAgLy8gMSDlj6/pooblj5bmlL7liY3pnaJcbiAgICAgICAgICAgIDI6IDMsICAvLyAyIOW3sumihuWPluaUvuacgOWQjlxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF4X3Rvd2VyID0gZGF0YS5tYXhfdG93ZXIgfHwgMDtcbiAgICAgICAgdGhpcy5sZXNzX2NvdW50ID0gZGF0YS5jb3VudCB8fCAwO1xuICAgICAgICB0aGlzLmJ1eV9jb3VudCA9IGRhdGEuYnV5X2NvdW50IHx8IDA7IFxuICAgICAgICBpZihVdGlscy5uZXh0KGRhdGEuYXdhcmRfbGlzdCkhPW51bGwpe1xuICAgICAgICAgICAgZm9yKHZhciBpIGluIGRhdGEuYXdhcmRfbGlzdCl7XG4gICAgICAgICAgICAgICAgdmFyIHRhYiA9IHt9O1xuICAgICAgICAgICAgICAgIHRhYi5pZCA9IGRhdGEuYXdhcmRfbGlzdFtpXS5pZDtcbiAgICAgICAgICAgICAgICB0YWIuc3RhdHVzID0gZGF0YS5hd2FyZF9saXN0W2ldLnN0YXR1cztcbiAgICAgICAgICAgICAgICB0YWIuc29ydCA9IHRlbXBzb3J0W3RhYi5zdGF0dXNdO1xuICAgICAgICAgICAgICAgIHRoaXMucmV3YXJkX2xpc3RbZGF0YS5hd2FyZF9saXN0W2ldLmlkLTFdID0gdGFiO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJld2FyZF9saXN0LnNvcnQoVXRpbHMudGFibGVMb3dlclNvcnRlcihbXCJzb3J0XCIsXCJpZFwiXSkpXG4gICAgICAgIHRoaXMudXBkYXRlUmVkUG9pbnQoKTtcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShTdGFydG93ZXJFdmVudC5VcGRhdGVfQWxsX0RhdGEpO1xuICAgIH0sXG5cbiAgICBzZXRSZXdhcmREYXRhOmZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICBpZighdGhpcy5yZXdhcmRfbGlzdCB8fCAhZGF0YVswXSlyZXR1cm47XG4gICAgICAgIHZhciB0ZW1wc29ydCA9IHtcbiAgICAgICAgICAgIDA6IDIsICAvLyAwIOacqumihuWPluaUvuS4remXtFxuICAgICAgICAgICAgMTogMSwgIC8vIDEg5Y+v6aKG5Y+W5pS+5YmN6Z2iXG4gICAgICAgICAgICAyOiAzLCAgLy8gMiDlt7Lpooblj5bmlL7mnIDlkI5cbiAgICAgICAgfVxuICAgICAgICBmb3IodmFyIGkgaW4gdGhpcy5yZXdhcmRfbGlzdCl7XG4gICAgICAgICAgICBpZih0aGlzLnJld2FyZF9saXN0W2ldLmlkID09IGRhdGFbMF0uaWQpe1xuICAgICAgICAgICAgICAgIHRoaXMucmV3YXJkX2xpc3RbaV0uc3RhdHVzID0gZGF0YVswXS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXdhcmRfbGlzdFtpXS5zb3J0ID0gdGVtcHNvcnRbZGF0YVswXS5zdGF0dXNdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJld2FyZF9saXN0LnNvcnQoVXRpbHMudGFibGVMb3dlclNvcnRlcihbXCJzb3J0XCIsXCJpZFwiXSkpXG4gICAgfSxcblxuICAgIHNvcnRGdW5jOmZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICBkYXRhLnNvcnQoZnVuY3Rpb24ob2JqQSwgb2JqQil7XG4gICAgICAgICAgICBpZihvYmpBLnNvcnQgIT0gb2JqQi5zb3J0KXtcbiAgICAgICAgICAgICAgICBpZihvYmpBLnNvcnQgJiYgb2JqQi5zb3J0KXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iakEuc29ydCAtIG9iakIuc29ydDtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmpBLmlkIC0gb2JqQi5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gZGF0YVxuICAgIH0sXG4gICAgXG4gICAgZ2V0UmV3YXJkRGF0YTpmdW5jdGlvbihpZCl7XG4gICAgICAgIGlmKCF0aGlzLnJld2FyZF9saXN0KXJldHVybjtcbiAgICAgICAgaWYoaWQgPT0gbnVsbCl7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXdhcmRfbGlzdCB8fCB7fTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXdhcmRfbGlzdFtpZF0gfHwge307XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgdXBkYXRlUmVkUG9pbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBSZWRNZ3IuZ2V0SW5zdGFuY2UoKS5hZGRDYWxIYW5kbGVyKHRoaXMuY2hlY2tSZWRQb2ludC5iaW5kKHRoaXMpLCBSZWRJZHMuU3RhclRvd2VyKTtcbiAgICB9LFxuXG4gICAgY2hlY2tSZWRQb2ludDpmdW5jdGlvbigpe1xuICAgICAgICB2YXIgaXNfb3BlbiA9IHRoaXMuY3RybC5jaGVja0lzT3BlbigpO1xuICAgICAgICBpZighaXNfb3BlbilyZXR1cm47XG4gICAgICAgIHZhciBzdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgZm9yKHZhciBpIGluIHRoaXMucmV3YXJkX2xpc3Qpe1xuICAgICAgICAgICAgaWYodGhpcy5yZXdhcmRfbGlzdFtpXS5zdGF0dXMgPT0gMSl7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0dXMgPSBzdGF0dXMgfHwgKHRoaXMubGVzc19jb3VudCA+IDApO1xuICAgICAgICB2YXIgU2NlbmVDb25zdCA9IHJlcXVpcmUoXCJzY2VuZV9jb25zdFwiKTtcbiAgICAgICAgdmFyIE1haW5TY2VuZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwibWFpbnNjZW5lX2NvbnRyb2xsZXJcIik7XG4gICAgICAgIE1haW5TY2VuZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZXRCdWlsZFJlZFN0YXR1cyhTY2VuZUNvbnN0LkNlbnRlclNjZW5lQnVpbGQuc3RhcnRvd2VyLCB7YmlkOiAxLCBzdGF0dXM6IHN0YXR1c30pIFxuICAgIH0sXG5cbiAgICB1cGRhdGVNYXhUb3dlcjpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgaWYoZGF0YSAmJiBkYXRhLm1heF90b3dlciAmJiB0aGlzLm1heF90b3dlciA8IGRhdGEubWF4X3Rvd2VyKXtcbiAgICAgICAgICAgIHRoaXMubWF4X3Rvd2VyID0gZGF0YS5tYXhfdG93ZXI7XG4gICAgICAgIH1cbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShTdGFydG93ZXJFdmVudC5GaWdodF9TdWNjZXNzX0V2ZW50KVxuICAgIH0sXG5cbiAgICB1cGRhdGVMZXNzQ291bnQ6ZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgIGlmKGRhdGEuY291bnQgIT0gbnVsbCl7XG4gICAgICAgICAgICB0aGlzLmxlc3NfY291bnQgPSBkYXRhLmNvdW50IHx8IDA7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlZFBvaW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoZGF0YS5idXlfY291bnQgIT0gbnVsbCl7XG4gICAgICAgICAgICB0aGlzLmJ1eV9jb3VudCA9IGRhdGEuYnV5X2NvdW50O1xuICAgICAgICB9XG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoU3RhcnRvd2VyRXZlbnQuQ291bnRfQ2hhbmdlX0V2ZW50KTtcbiAgICB9LFxuXG4gICAgZ2V0Tm93VG93ZXJJZDpmdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhfdG93ZXIgfHwgMDtcbiAgICB9LFxuXG4gICAgZ2V0VG93ZXJMZXNzQ291bnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVzc19jb3VudDtcbiAgICB9LFxuXG4gICAgZ2V0QnV5Q291bnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnV5X2NvdW50O1xuICAgIH1cbn0pOyJdfQ==