"use strict"; cc._RF.push(module, '68fa2MlV7JEBqPuGhEmxn8H', 'cmp.act.limitChallenge'); // Scripts/mod/acts/limitChallenge/cmp/cmp.act.limitChallenge.js "use strict"; /****************************************************************** * * 限定挑戰 * ******************************************************************/ var ActPage = require("act.page.base"); var NxSpine = require("nx.fx.spine"); var PathTool = require("pathtool"); var ItemLay = require("cmp.common.itemlayout"); var BCT = require("battle_controller"); var BCS = require("battle_const"); var TipsController = require("tips_controller"); cc.Class({ "extends": ActPage, properties: { awards: { "default": null, type: ItemLay }, scores: { "default": null, type: cc.Node }, rankList: { "default": null, type: cc.Node }, rankItem: { "default": null, type: cc.Node }, rankSelf: { "default": null, type: cc.Node }, totalDmg: { "default": null, type: cc.Node }, cdTime: { "default": null, type: cc.Node }, challengeNum: { "default": null, type: cc.Node }, getBtn: { "default": null, type: cc.Node }, roleSp: { "default": null, type: NxSpine }, pic: { "default": null, type: cc.Node }, maxTi: { "default": null, type: cc.Node }, rankTi: { "default": null, type: cc.Node }, rankTi3: { "default": null, type: cc.Node } }, // 初始化 build: function build(_data) { this._super(_data); this.chal_data = game.configs.limit_challenge_data; // 活动监听 this.mod.vbind(this, [["LimitChallengeInfos", this.freshInfos.bind(this)], ["LimitChallengeRanks", this.freshRanks.bind(this)]]); }, onEnable: function onEnable() { this.mod.reqLimitData(this.data.camp_id); this.mod.reqRank(this.data.camp_id); }, onDisable: function onDisable() { this.awards.rebuild([]); }, // 销毁 onDestroy: function onDestroy() { // 活动监听解除 if (this.mod) { this.mod.vunbind(this); } this._super(); }, freshInfos: function freshInfos(data) { var _this = this; this.payId = []; if (nx.dt.objEmpty(data)) return; var info = data[this.data.camp_id]; if (nx.dt.objEmpty(info)) return; this.lastChallenge = info.challenge_num; nx.gui.setCdTxt(this.cdTime, "", info.end_time - client.socket.getTime()); nx.gui.setString(this.challengeNum, "", info.challenge_num); nx.gui.setString(this.totalDmg, "", info.all_dps); var res_data = this.chal_data.data_info[this.data.camp_id]; if (res_data) { var res_path = PathTool.getSpinePath(res_data.spine, "show", false); this.roleSp.load(res_path, function (_e) { if (_e) { _this.roleSp.stop(); } else { _this.roleSp.action("action1", true); } }); var ti_path = cc.js.formatStr("locals/%s/images/acts/%s", nx.getLocLanguage(), res_data.title); nx.gui.setSpriteFrame(this.pic, "", ti_path); if (res_data.type == 1) { nx.gui.setString(this.maxTi, "", nx.text.getKey("batMaxDps")); nx.gui.setString(this.rankTi, "", nx.text.getKey("DpsRank")); nx.gui.setString(this.rankTi3, "", nx.text.getKey("DpsDmgVal")); } else if (res_data.type == 2) { nx.gui.setString(this.maxTi, "", nx.text.getKey("batMaxCure")); nx.gui.setString(this.rankTi, "", nx.text.getKey("CureRank")); nx.gui.setString(this.rankTi3, "", nx.text.getKey("DpsCureVal")); } } //獎勵和積分 var awards = this.chal_data.data_get_info; var camp_id = info.camp_id; var pushs = []; var is_allow_get = false; //有一個就能領取 for (var i = 1; i <= 7; i++) { var aCfg = awards[camp_id + "_" + i]; if (aCfg) { pushs.push(aCfg.reward[0]); var scroe = cc.js.formatStr(nx.text.getKey("lab_money_tip_w"), aCfg.num / 10000); nx.gui.setString(this.scores, String(i), scroe); var get_data = info.rewards[i - 1]; for (var a in info.rewards) { if (info.rewards[a].id == i) { get_data = info.rewards[a]; break; } } if (get_data && get_data.status == 1) { is_allow_get = true; nx.gui.setColor(this.scores, String(i), new cc.Color(0, 252, 255)); } else if (get_data && get_data.status == 2) { nx.gui.setColor(this.scores, String(i), new cc.Color(255, 255, 255)); nx.gui.setString(this.scores, String(i), nx.text.getKey("Got")); } else { nx.gui.setColor(this.scores, String(i), new cc.Color(255, 255, 255)); } } } this.awards.rebuild(pushs); nx.gui.setActive(this.getBtn, "", is_allow_get); }, freshRanks: function freshRanks(data) { if (nx.dt.objEmpty(data)) return; //先設置簡單榜單 var info_data = this.chal_data.data_info[this.data.camp_id]; this.setMyRank(data.my_idx, data.name, data.my_val1); nx.bridge.NodeChidrenDestroy(this.rankList); for (var i = 0; i < 3; i++) { var rank_data = data.rank_list[i]; if (rank_data) { var item = cc.instantiate(this.rankItem); item.parent = this.rankList; item.active = true; item.x = 0; nx.gui.setActive(item, String(rank_data.idx), true); nx.gui.setString(item, "name", rank_data.name); nx.gui.setString(item, "dmg", rank_data.val1); if (info_data) { if (info_data.type == 1) { nx.gui.setColor(item, "dmg", new cc.Color(255, 105, 46)); } else if (info_data.type == 2) { nx.gui.setColor(item, "dmg", new cc.Color(80, 238, 2)); } } } } }, setMyRank: function setMyRank(myidx, myname, my_val1) { nx.gui.setString(this.rankSelf, "name", myname); if (myidx == 0) { nx.gui.setString(this.rankSelf, "rank", nx.text.getKey("Rank0")); nx.gui.setString(this.rankSelf, "dmg", 0); } else { nx.gui.setString(this.rankSelf, "rank", myidx); nx.gui.setString(this.rankSelf, "dmg", my_val1); } }, onTryBat: function onTryBat() { var _this2 = this; if (this.lastChallenge > 0) { BCT.getInstance().requestOpenBattleRelevanceWindow(BCS.Fight_Type.SingleBoss, null, function (_data) { if (_data) { _this2.mod.reqBat(_this2.data.camp_id, function (_data) { if (_data) { _this2.mod.reqLimitData(_this2.data.camp_id); _this2.scheduleOnce(function () { _this2.mod.reqRank(_this2.data.camp_id); }, 3); } }); } }); } else { return nx.tbox("lab_ladder_controller_tip3"); } }, onTryClear: function onTryClear() { var _this3 = this; if (this.lastChallenge > 0) { this.mod.reqBatClear(this.data.camp_id, function (_data) { if (_data) { _this3.mod.reqLimitData(_this3.data.camp_id); _this3.mod.reqRank(_this3.data.camp_id); } }); } else { return nx.tbox("lab_ladder_controller_tip3"); } }, onOpenRank: function onOpenRank() { var data = this.mod.vget("LimitChallengeRanks"); if (nx.dt.objEmpty(data)) return; nx.bridge.createPanel("WndActLimitChalRank", { list: data.rank_list, camp_id: this.data.camp_id, config: this.chal_data }); }, onGetAward: function onGetAward() { var _this4 = this; if (this.data.camp_id) { this.mod.reqAward(this.data.camp_id, function (_data) { if (_data) { _this4.mod.reqLimitData(_this4.data.camp_id); _this4.mod.reqRank(_this4.data.camp_id); } }); } }, onClickRule: function onClickRule() { var TC = TipsController.getInstance(); if (TC) { var config = this.chal_data.data_explain[1]; TC.showTextPanel(null, config.desc); } } }); cc._RF.pop();