"use strict"; cc._RF.push(module, 'e9e49MHxOpFFqzPT1QBgnmD', 'act.circle.walk.mod'); // Scripts/mod/acts/circleWalk/act.circle.walk.mod.js "use strict"; /******************************************************************************* * * 活动: 大富翁活动 * * ******************************************************************************/ var ActBase = require("act.base"); var BackPackController = require("backpack_controller"); " "; var ActModCircleWalk = cc.Class({ "extends": ActBase, // 初始化配置数据 initConfig: function initConfig() { // 视图附着 nx.plugin.add(this, ["view"]); this.vattach("Acts"); }, // 注册监听事件 registerEvents: function registerEvents() { if (!!this.bagEvent1) { gcore.GlobalEvent.unbind(this.bagEvent1); gcore.GlobalEvent.unbind(this.bagEvent2); gcore.GlobalEvent.unbind(this.bagEvent3); this.bagEvent1 = null; this.bagEvent2 = null; this.bagEvent3 = null; } this.bagEvent1 = gcore.GlobalEvent.bind(EventId.ADD_GOODS, this.onBagItemUpdate.bind(this)); this.bagEvent2 = gcore.GlobalEvent.bind(EventId.DELETE_GOODS, this.onBagItemUpdate.bind(this)); this.bagEvent3 = gcore.GlobalEvent.bind(EventId.MODIFY_GOODS_NUM, this.onBagItemUpdate.bind(this)); }, // 注册协议接受事件 registerProtocals: function registerProtocals() { this.RegisterProtocal(29410, this.handle29410.bind(this)); this.RegisterProtocal(29411, this.handle29411.bind(this)); this.RegisterProtocal(29412, this.handle29412.bind(this)); this.RegisterProtocal(29413, this.handle29413.bind(this)); this.RegisterProtocal(29414, this.handle29414.bind(this)); this.RegisterProtocal(29415, this.handle29415.bind(this)); }, // 从服务器初始化数据 reqBaseFromServer: function reqBaseFromServer(_cb) { var _this = this; // 配置加载 var cfgs = ["happy_treasure_data"]; this.loadConfigs(cfgs, function (_ret, _data) { nx.dt.fnInvoke(_cb, true); _this.reqBaseData(); }); }, // ============================================================ // 配置相关 // ============================================================ // 获取本轮奖励表 queryRoundRewards: function queryRoundRewards(_idx) { var rewards = []; var data = game.configs.happy_treasure_data.data_get_reward[this.data.camp_id]; var list = data ? data[_idx] : {}; for (var pos in list) { rewards.push(list[pos]); } if (rewards.length == 0) { nx.error("$CircleWalk:\u83B7\u53D6\u5956\u52B1\u8868\u5931\u8D25!" + _idx); } return rewards; }, // 获取规则文本 queryRule: function queryRule() { var data = game.configs.happy_treasure_data.data_const; return data ? data.trueas_rules.desc : ""; }, // 获取配置 queryConfig: function queryConfig() { var data = game.configs.happy_treasure_data.data_infos[this.data.camp_id]; if (!data) { nx.error("$CircleWalk:\u83B7\u53D6\u914D\u7F6E\u5931\u8D25!" + this.data.camp_id); } return data; }, // 获取礼盒列表 queryBoxes: function queryBoxes() { var list = []; var boxs = this.vget('cwRewards'); var data = game.configs.happy_treasure_data.data_get_schedule_reward; for (var id in data) { var item = data[id]; if (item.camp_id == this.data.camp_id) { var info = nx.dt.objClone(item); for (var i in boxs) { if (boxs[i].turn == item.index) { info.turn = boxs[i].turn; info.status = boxs[i].is_get_reward; } } list.push(info); } } list.sort(function (a, b) { return a.turn - b.turn; }); return list; }, // 获取道具数量 itemHave: function itemHave() { var cfgs = this.queryConfig(); var need = cfgs ? cfgs.item : 0; if (!nx.dt.numPositive(need, false)) { nx.error("$CircleWalk:\u83B7\u53D6\u9053\u5177\u6570\u91CF\u5931\u8D25! " + need); return 0; } var BC = BackPackController.getInstance(); return BC.getModel().getBackPackItemNumByBid(need); }, // ============================================================ // 基本操作 // ============================================================ // 请求基本信息 reqBaseData: function reqBaseData(_cb) { this.SendProtocal(29410, { camp_id: this.data.camp_id }, _cb); }, // 基本信息返回 handle29410: function handle29410(_data) { this.handle29411(_data); }, // 更新推送 handle29411: function handle29411(_data) { if (!this.isGoodData(_data) || _data.camp_id != this.data.camp_id) { return; } if (this.vget("cwGroup") != _data.group) { this.vset("cwGroup", _data.group); } if (this.vget("cwPosition") != _data.curr_pos) { this.vset("cwPosition", _data.curr_pos); } if (this.vget("cwSteps") != _data.all_num) { this.vset("cwSteps", _data.all_num); } if (this.vget("cwTime") != _data.end_time) { this.vset("cwTime", _data.end_time); } this.vset("cwDice", _data.surplus_sieve); this.vset("cwRewards", _data.reward_list); this.freshTips(); }, // ============================================================ // 行动相关 // ============================================================ // 开始行动 reqStartRoll: function reqStartRoll(_cb) { this.vset("cwRewardList", null); this.SendProtocal(29412, { camp_id: this.data.camp_id }, _cb); }, // 开始行动 handle29412: function handle29412(_data) { if (!this.isGoodData(_data) || _data.camp_id != this.data.camp_id) { return; } this.vset("cwRewardList", _data.reward_list); }, // 行动奖励 reqReward: function reqReward(_point, _cb) { this.SendProtocal(29413, { camp_id: this.data.camp_id, num: _point }, _cb); }, // 行动奖励 handle29413: function handle29413(_data) { if (!this.isGoodData(_data)) { return; } }, // 一键十连 reqRewardTen: function reqRewardTen(_cb) { this.SendProtocal(29414, { camp_id: this.data.camp_id }, _cb); }, // 一键十连 handle29414: function handle29414(_data) { if (this.isGoodData(_data)) { return; } }, // 领取达成奖励 reqOpenBox: function reqOpenBox(_cb) { this.SendProtocal(29415, { camp_id: this.data.camp_id }, _cb); }, // 领取达成奖励 handle29415: function handle29415(_data) { if (this.isGoodData(_data)) { return; } }, // ============================================================ // 活动红点提示 // ============================================================ // 道具更新 onBagItemUpdate: function onBagItemUpdate(_bagCode, _itemList) { var cfgs = this.queryConfig(); if (!cfgs) { return; } for (var k in _itemList) { var tm = _itemList[k]; if (tm && tm.base_id == cfgs.item) { this.freshTips(); break; } } }, // 活动用到的提示KEY tipKeys: function tipKeys() { return ["go"]; }, // 红点提示更新 freshTips: function freshTips() { if (!this.configs) { this.openTip("reward", false); return; } // status: 0-未完成,1-可领取,2-已领取 var can = false; var rewards = this.vget("cwRewards"); for (var i in rewards) { if (rewards[i].status == 1) { can = true; break; } } this.openTip("reward", can); } }); // 模块导出 module.exports = ActModCircleWalk; cc._RF.pop();