"use strict"; cc._RF.push(module, 'ebc566rO8hP7aOfrkyR+84w', 'cmp.guild.challenge.wnd'); // Scripts/mod/guild/base/cmps/cmp.guild.challenge.wnd.js "use strict"; /****************************************************************** * * 联盟挑战 * ******************************************************************/ var TipController = require("tips_controller"); var HeroController = require("hero_controller"); var PartnerConst = require("partner_const"); var RoleController = require("role_controller"); var GuildbossEvent = require("guildboss_event"); var GuildBossConst = require("guildboss_const"); var GuildBossController = require("guildboss_controller"); var BackpackController = require("backpack_controller"); var BridgeWindow = require("bridge.window"); var ItemLay = require("cmp.common.itemlayout"); var RankController = require("rank_controller"); var RankConst = require("rank_constant"); cc.Class({ "extends": BridgeWindow, properties: { //Left chapterList: { "default": null, type: cc.Node }, roleSp: { "default": null, type: cc.Node }, hpLb: { "default": null, type: cc.Label }, hpBar: { "default": null, type: cc.ProgressBar }, roleName: { "default": null, type: cc.Label }, roleId: { "default": null, type: cc.Label }, buffBtn: { "default": null, type: cc.Node }, //Right rankList: { "default": null, type: cc.Node }, rankItem: { "default": null, type: cc.Node }, rankIcons: { "default": [], type: [cc.SpriteFrame] }, remainLb: { "default": null, type: cc.Label }, challengeLb: { "default": null, type: cc.Label }, dpsLay: { "default": null, type: ItemLay }, fixedLay: { "default": null, type: ItemLay }, challenge_btn: { "default": null, type: cc.Button }, mopup_btn: { "default": null, type: cc.Button } }, onLoad: function onLoad() { this.select_cfg = {}; this.ctrl = GuildBossController.getInstance(); this.model = this.ctrl.getModel(); this.role_vo = RoleController.getInstance().getRoleVo(); this.bindGEvent(GuildbossEvent.MusterCoolTime, this.musterCoolTime.bind(this)); this.bindGEvent(GuildbossEvent.BossActivityDoubleTime, this.doubleTimeAction.bind(this)); //面板基礎信息 this.bindGEvent(GuildbossEvent.UpdateGuildDunBaseInfo, this.upBossInfo.bind(this)); this.bindGEvent(GuildbossEvent.UpdateChangeStatus, this.updateChangeStatus.bind(this)); this.bindGEvent(GuildbossEvent.UpdateGuildDunRank, this.upDunRank.bind(this)); this.bindGEvent(GuildbossEvent.UpdateGuildBossChallengeTimes, this.upChanllengeTimes.bind(this)); }, upChanllengeTimes: function upChanllengeTimes(buy_type) { if (this.base_info != null) { this.challengeLb.string = this.base_info.count; this.remainBuyCount(this.base_info.buy_count); } else { var base_info = this.model.getBaseInfo(); if (base_info != null) { this.remainBuyCount(base_info.buy_count); this.challengeLb.string = base_info.count; } } //挑战购买的时候自动打开挑战界面 if (buy_type == 1) { this.autoOpenChallengeWindow(); } }, upDunRank: function upDunRank() { nx.bridge.NodeChidrenDestroy(this.rankList); var rank_list = this.ctrl.getModel().getRaknRoleTopThreeList(); if (rank_list) { for (var i in rank_list) { var v = rank_list[i]; var item = cc.instantiate(this.rankItem); if (item) { nx.gui.setString(item, "name", v.name); if (v.all_dps) { nx.gui.setString(item, "dps", Utils.getMoneyString(v.all_dps, false)); } else { nx.gui.setString(item, "dps", "0"); } var sp = nx.gui.getComponent(item, "ico", cc.Sprite); sp.spriteFrame = this.rankIcons[v.rank - 1]; item.parent = this.rankList; item.active = true; } } } }, ///////////////////////////////// musterCoolTime: function musterCoolTime(data) { // if (this.role_vo.position == 1 || this.role_vo.position == 2) { // this.musterCoolCountTime(data); // } else { // this.muster_btn_tips.string = nx.text.getKey("lab_guild_main_window_tip_3"); // } }, doubleTimeAction: function doubleTimeAction(bool) { if (!bool) {} }, upBossInfo: function upBossInfo() { this.cell_data_list = this.getCellData()[0]; //刷新boss this.updateDunBaseInfo(); }, //切换Boss的时候 updateChangeStatus: function updateChangeStatus(boss_data) { if (nx.dt.objEmpty(boss_data)) return; var data = this.cell_data_list[boss_data.id - 1]; var fid = 0; var base_info = this.model.getBaseInfo(); var hp_info = null; if (data.status == 0) { fid = base_info.fid; if (base_info != null && base_info.info != null) { //储存容器里面相关的boss模型 for (var i in base_info.info) { var v = base_info.info[i]; var boss_config = gdata("guild_dun_data", "data_guildboss_list", [v.boss_id]); if (boss_config) { this.select_cfg.boss_id = boss_config.boss_id; this.select_cfg.config = boss_config; hp_info = v; } } if (base_info.combat_info) { for (var i in base_info.combat_info) { var v = base_info.combat_info[i]; if (v.boss_id == this.select_cfg.config.boss_id) { this.select_cfg.dps = v.dps; } } } } // this.buff_container.active = true; } else { fid = boss_data.id; this.select_cfg.boss_id = boss_data.boss_id; this.select_cfg.config = boss_data; hp_info = { boss_id: boss_data.boss_id, hp: 0 }; this.select_cfg.dps = 0; // this.buff_container.active = false; } if (fid) { var chatpter_config = gdata("guild_dun_data", "data_chapter_reward", [fid]); var config = gdata("guild_dun_data", "data_guildboss_list", [chatpter_config.show_id]); // if (chatpter_config != null) { // this.chapter_name.string = chatpter_config.chapter_name + " " + chatpter_config.chapter_desc; // } if (hp_info) { this.updateMonsterHPStatus(config, hp_info); } if (config) { this.updateMonsterInfo(config); } this.setMainBossInfos(); } }, //////////////////////////////// getCellData: function getCellData() { var base_info = this.model.getBaseInfo(); var item_list = []; var select_index = null; if (base_info) { var is_first_lock = false; for (var i in game.configs.guild_dun_data.data_chapter_reward) { var v = gdata("guild_dun_data", "data_chapter_reward", [i]); var object = {}; object.desc = v.chapter_name; object.show_id = v.show_id; if (base_info.fid && base_info.fid == v.id) { //进行中 select_index = i; object.status = 0; } else if (base_info.fid > v.id) { //已通关 object.status = 1; } else { if (is_first_lock == false) { ////第一个未通关的,做文本显示 object.status = 3; is_first_lock = true; } else { object.status = 2; } } item_list[i - 1] = object; } } return [item_list, select_index - 1]; }, onOpenConfigs: function onOpenConfigs() { //基础信息,服务端要求没次打开面板的时候都请求一下 this.roleSp.opacity = 0; this.ctrl.requestGuildDunBaseInfo(); }, onPreClosed: function onPreClosed() { nx.bridge.NodeChidrenDestroy(this.rankList); this.dpsLay.rebuild([]); this.fixedLay.rebuild([]); }, // 显示 onEnable: function onEnable() {}, // 关闭 onDisable: function onDisable() { if (nx.bridge.prompt) { nx.bridge.prompt.delPrompt(21); } }, //协议返回用于更新基础信息 updateDunBaseInfo: function updateDunBaseInfo() { this.base_info = this.model.getBaseInfo(); var base_info = this.base_info; if (!nx.dt.objEmpty(base_info)) { this.remainBuyCount(base_info.buy_count); //储存容器里面相关的boss模型 for (var i in base_info.info) { var _v = base_info.info[i]; var boss_config = gdata("guild_dun_data", "data_guildboss_list", [_v.boss_id]); if (boss_config) { this.select_cfg.boss_id = boss_config.boss_id; this.select_cfg.config = boss_config; //更新血量 this.updateMonsterHPStatus(boss_config, _v); } } //存储dps if (base_info.combat_info) { for (var i in this.base_info.combat_info) { var v = this.base_info.combat_info[i]; if (v.boss_id == this.select_cfg.config.boss_id) { this.select_cfg.dps = v.dps; } } } //设置基础信息显示 this.challengeLb.string = base_info.count; // if (this.cur_fid != base_info.fid) { this.cur_fid = base_info.fid; var chatpter_config = gdata("guild_dun_data", "data_chapter_reward", [base_info.fid]); if (chatpter_config != null) { var config = gdata("guild_dun_data", "data_guildboss_list", [chatpter_config.show_id]); if (config) { this.updateMonsterInfo(config); } //这里设置挑战奖励吧 this.updateFillRewardsItems(chatpter_config.dps_awrard, chatpter_config.award, chatpter_config.guild_exp); } // } this.setMainBossInfos(); if (base_info != null && base_info.buff_end_time != 0) { var buff_config = gdata("guild_dun_data", "data_buff_data", [base_info.buff_lev]); if (buff_config) { nx.gui.setString(this.buffBtn, "name", buff_config.desc); } nx.gui.setCdTxt(this.buffBtn, "acitive", base_info.buff_end_time); } else { nx.gui.setString(this.buffBtn, "name", gdata("guild_dun_data", "data_const", ["des_nobuff"]).desc); nx.gui.setString(this.buffBtn, "acitive", nx.text.getKey("lab_guild_main_window_tip_16")); } var protocal = { boss_id: this.select_cfg.config.boss_id, start_num: 1, end_num: 3 }; this.ctrl.requestGuildDunRank(GuildBossConst.rank.role, protocal); } }, //创建模型,根据config updateMonsterInfo: function updateMonsterInfo(config) { var partner_cfg = game.configs.partner_data.data_partner_base[config.head_icon]; var res_path = cc.js.formatStr("resDB/models/%s/show", partner_cfg.bustid); var rcmp = nx.gui.getComponent(this.roleSp, "role", "nx.fx.spine"); if (rcmp) { rcmp.load(res_path, function (_e) { if (!_e) { rcmp.action("action1", true); rcmp.node.active = true; } else { rcmp.stop(); rcmp.node.active = false; } }); } // nx.gui.setSpriteFrame(this.roleSp,"",res_path); //需要處理一下絲滑動作 this.roleSp.runAction(cc.sequence(cc.fadeOut(0.1).easing(cc.easeOut(0.1)), cc.delayTime(0.1), cc.fadeIn(0.1))); }, //剩余购买次数 remainBuyCount: function remainBuyCount(count) { var num = 0; var length = game.configs.guild_dun_data.data_buy_count_length; var buy_config = game.configs.guild_dun_data.data_buy_count[length]; if (buy_config) { num = buy_config.count - count; } this.remainLb.string = num; }, setMainBossInfos: function setMainBossInfos() { if (!nx.dt.objEmpty(this.select_cfg.config)) { var mid_id = this.select_cfg.config.id; //判斷前後是否有數據,規則是id*100+1 var fore_id = (mid_id - 1) * 100 + 1; var fore_cfg = gdata("guild_dun_data", "data_guildboss_list", [fore_id]); var left_nd = this.chapterList.children[0]; var left_cmp = left_nd.getComponent("cmp.guildboss.item"); if (!nx.dt.objEmpty(fore_cfg)) { var cell_data = this.cell_data_list[fore_cfg.id - 1]; if (cell_data) { left_cmp.setData(fore_cfg, cell_data); } else { left_cmp.setData({}); } } else { left_cmp.setData({}); } var beh_id = (mid_id + 1) * 100 + 1; var beh_cfg = gdata("guild_dun_data", "data_guildboss_list", [beh_id]); var right_nd = this.chapterList.children[1]; var right_cmp = right_nd.getComponent("cmp.guildboss.item"); if (!nx.dt.objEmpty(beh_cfg)) { var _cell_data = this.cell_data_list[beh_cfg.id - 1]; right_cmp.setData(beh_cfg, _cell_data); } else { right_cmp.setData({}); } } //刷新按鈕狀態 this.updateSelectedBtnStatus(); }, //更新选中对象的按钮状态 updateSelectedBtnStatus: function updateSelectedBtnStatus() { if (nx.dt.numGood(this.select_cfg.hp) || nx.dt.numGood(this.select_cfg.dps)) { var btn = nx.gui.getComponent(this.roleSp, "", cc.Button); if (this.select_cfg.hp == 0) { //已经被击杀了 nx.gui.setLocked(this.challenge_btn.node, "", true); nx.gui.setLocked(this.mopup_btn.node, "", true); btn.interactable = false; } else { btn.interactable = true; if (this.select_cfg.dps == 0) { //没有挑战过,不可以扫荡 nx.gui.setLocked(this.challenge_btn.node, "", false); nx.gui.setLocked(this.mopup_btn.node, "", true); } else { nx.gui.setLocked(this.challenge_btn.node, "", false); nx.gui.setLocked(this.mopup_btn.node, "", false); } } } }, //更新血条 updateMonsterHPStatus: function updateMonsterHPStatus(config, info) { if (nx.dt.objEmpty(info)) return; //设置血量 var percent = Math.ceil(100 * info.hp / config.hp); this.hpLb.string = percent + "%"; this.hpBar.progress = percent / 100; // object.pass_icon.active = info.hp == 0; // object.boss_icon.setVisible(info.hp != 0); this.roleName.string = config.item_name; this.roleId.string = nx.text.getKey("Challenge") + "0" + config.id; this.select_cfg.hp = info.hp; }, //设置物品奖励 //dps_award:伤害奖励列表 //fixed_award:固定奖励列表 //guild_award:公会贡献特殊 updateFillRewardsItems: function updateFillRewardsItems(dps_award, fixed_award, guild_award) { fixed_award.push([Number(gdata("item_data", "data_assets_label2id", "guild_exp")), guild_award]); this.dpsLay.rebuild(dps_award); this.fixedLay.rebuild(fixed_award); }, checkBuff: function checkBuff() { var _this = this; if (this.base_info) { var item = gdata("guild_dun_data", "data_const", "buff_item").val; var num = BackpackController.getInstance().getModel().getBackPackItemNumByBid(item); var cost = gdata("guild_dun_data", "data_const", "buff_cost").val; var item_icon = Utils.getItemConfig(item).icon; var index_lev = Math.min(this.base_info.buff_lev + 1, game.configs.guild_dun_data.data_buff_data_length); var desc = gdata("guild_dun_data", "data_buff_data", [index_lev]).desc; var str = ""; var str_ = ""; var str_end = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_5"), desc); if (num > 0) { //如果存在道具 if (this.base_info.buff_lev == 0) { //表示没buff str = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_6"), item_icon, 1, num); str_ = str + str_end; } else { str = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_7"), item_icon, 1, num); str_ = str + str_end; } } else { if (this.base_info.buff_lev == 0) { //表示没buff str = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_8"), game.configs.item_data.data_assets_label2id.gold, cost); str_ = str + str_end; } else { str = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_9"), game.configs.item_data.data_assets_label2id.gold, cost); str_ = str + str_end; } } nx.mbox(str, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { _this.ctrl.send21305(); } }); } }, //挑战购买次数的时候自动打开面板 autoOpenChallengeWindow: function autoOpenChallengeWindow() { if (this.select_cfg.config && this.base_info) { if (this.base_info.count > 0) { HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.GuildDun_AD, { boss_id: this.select_cfg.boss_id }); } } }, onClickClear: function onClickClear() { var _this2 = this; if (this.role_vo.position == 1 || this.role_vo.position == 2) { var str = nx.text.getKey("lab_guild_main_window_tip_2"); nx.mbox(str, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { _this2.ctrl.send21323(); } }); } else { nx.tbox("lab_guild_main_window_tip_1"); } if (nx.bridge.prompt) { nx.bridge.prompt.delPrompt(10); } }, onAddBuyNum: function onAddBuyNum() { this.ctrl.requestBuyChallengeTimes(0); }, onClickRank: function onClickRank() { RankController.getInstance().openRankDetail(RankConst.RankType.union_boss, this.select_cfg.config.boss_id); // if (this.select_cfg) { // // require("rank_controller").getInstance().openRankView(true, require("rank_constant").RankType.union_boss, null, this.select_cfg.config); // } }, onChallengeBoss: function onChallengeBoss() { if (this.select_cfg && this.select_cfg.config && this.base_info) { if (this.base_info.count > 0) { HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.GuildDun_AD, { boss_id: this.select_cfg.config.boss_id }); } else { this.ctrl.requestBuyChallengeTimes(1); } } }, onMopupBoss: function onMopupBoss() { if (this.select_cfg && this.select_cfg.config && this.base_info) { this.requestMopupMonster(); } }, requestMopupMonster: function requestMopupMonster() { var _this3 = this; var base_info = this.base_info; if (base_info.count > 0) { var msg = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_11"), this.select_cfg.dps); nx.mbox(msg, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { _this3.ctrl.requestMopupMonster(_this3.select_cfg.boss_id); } }); } else { var buy_next_num = base_info.buy_count + 1; var buy_config = gdata("guild_dun_data", "data_buy_count", [buy_next_num]); var buy_configdiff = game.configs.guild_dun_data.data_buy_count[buy_next_num]; if (!buy_configdiff) { nx.tbox("lab_guild_main_window_tip_12"); } else { if (this.role_vo) { if (this.role_vo.vip_lev < buy_config.vip_lev) { var msg = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_13"), buy_config.vip_lev); nx.mbox(msg, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { nx.bridge.createPanel("WndPayment", { key: "recharge" }); } }); } else { var cost = buy_config.expend; if (cost == null || cost.length < 2) return; var item_config = Utils.getItemConfig(cost[0]); if (item_config) { var msg = cc.js.formatStr(nx.text.getKey("lab_guild_main_window_tip_14"), item_config.icon, cost[1], this.select_cfg.dps); nx.mbox(msg, ["cancel", "confirm"], function (_key, _box) { _box.close(); if (_key == "confirm") { _this3.ctrl.requestMopupMonster(_this3.select_cfg.boss_id); } }); } } } } } } }); cc._RF.pop();