"use strict"; cc._RF.push(module, 'b18f0+jzYJJfL57wcKEO/YN', 'hallows_main_window'); // Scripts/mod/hallows/view/hallows_main_window.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里是描述这个窗体的作用的 //
Create: 2019-02-18 14:17:00 // -------------------------------------------------------------------- var PathTool = require("pathtool"); var HallowsConst = require("hallows_const"); var BackpackController = require("backpack_controller"); var HallowsEvent = require("hallows_event"); var BackpackEvent = require("backpack_event"); var BackPackConst = require("backpack_const"); var PartnerCalculate = require("partner_calculate"); var hallows_mainWindow = cc.Class({ "extends": BaseView, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("hallows", "hallows_main_window"); this.viewTag = SCENE_TAG.ui; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意 this.win_type = WinType.Full; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips this.rleasePrefab = false; this.ctrl = arguments[0]; this.model = this.ctrl.getModel(); }, // 初始化一些配置数据,可以用于声明一些变量之类的 initConfig: function initConfig() { this.skill_attr_list = {}; // 技能加成 this.is_in_advance = false; // 是否在自动进阶中 this.hallows_list = {}; this.hallows_sum = 0; this.tab_list = {}; this.attr_bgs = {}; this.base_attr_list = {}; this.is_max_hallows_lv = false; // 神器是否达到最大等级 this.is_max_skill_lv = false; // 技能是否达到最大等级 this.cur_index = HallowsConst.Tab_Index.uplv; this.hallows_uplv_cost_bid_1 = 0; // 选中的神器升级所需消耗1 this.hallows_uplv_cost_num_1 = 0; this.hallows_uplv_cost_bid_2 = 0; // 选中的神器升级所需消耗2 this.hallows_uplv_cost_num_2 = 0; this.skill_lvup_cost_bid_1 = 0; // 选中的神器技能升级所需消耗1 this.skill_lvup_cost_num_1 = 0; this.skill_lvup_cost_bid_2 = 0; // 选中的神器技能升级所需消耗2 this.skill_lvup_cost_num_2 = 0; }, // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件 openCallBack: function openCallBack() { this.background = this.seekChild(this.root_wnd, "background"); this.background.scale = FIT_SCALE; this.bg = this.seekChild(this.root_wnd, "background", cc.Sprite); this.loadRes(PathTool.getBigBg("bigbg_68", "jpg"), function (resObject) { this.bg.spriteFrame = resObject; }.bind(this)); var main_panel = this.root_wnd.getChildByName("main_panel"); var title_bg = main_panel.getChildByName("title_bg"); this.title_bg_img = title_bg.getComponent(cc.Sprite); this.loadRes(PathTool.getCommonIcomPath("common_2015"), function (resObject) { this.title_bg_img.spriteFrame = resObject; }.bind(this)); this.bottom_bg = main_panel.getChildByName("bottom_bg"); this.bottom_bg_img = this.bottom_bg.getComponent(cc.Sprite); this.loadRes(PathTool.getUIIconPath("hallows", "hallows_1001"), function (resObject) { this.bottom_bg_img.spriteFrame = resObject; }.bind(this)); // 升级 this.step_container = main_panel.getChildByName("step_container"); this.attr_bg_1 = this.step_container.getChildByName("attr_bg_1").getComponent(cc.Sprite); this.attr_bg_2 = this.step_container.getChildByName("attr_bg_2").getComponent(cc.Sprite); this.loadRes(PathTool.getUIIconPath("hallows", "hallows_1007"), function (resObject) { this.attr_bg_1.spriteFrame = resObject; this.attr_bg_2.spriteFrame = resObject; }.bind(this)); this.bottom_bg_2 = this.bottom_bg.getChildByName("bottom_bg_2").getComponent(cc.Sprite); this.loadRes(PathTool.getCommonIcomPath("common_2007"), function (resObject) { this.bottom_bg_2.spriteFrame = resObject; }.bind(this)); this.skill_bg = main_panel.getChildByName("skill_bg"); var skill_title = this.skill_bg.getChildByName("skill_title").getComponent(cc.Label); skill_title.string = Utils.TI18N("技能加成"); this.trace_btn = main_panel.getChildByName("trace_btn"); // 圣印按钮 var trace_lab = this.trace_btn.getChildByName("label").getComponent(cc.Label); trace_lab.string = Utils.TI18N("圣印"); this.trace_btn_tips = this.trace_btn.getChildByName("tips"); // 圣印红点 this.trace_btn_tips.active = false; this.reset_btn = main_panel.getChildByName("reset_btn"); var reset_lab = this.reset_btn.getChildByName("label").getComponent(cc.Label); reset_lab.string = Utils.TI18N("重铸"); this.reset_btn.active = false; this.artifact_btn = main_panel.getChildByName("artifact_btn"); var artifact_btn_label = this.artifact_btn.getChildByName("label").getComponent(cc.Label); artifact_btn_label.string = Utils.TI18N("失落神器"); this.touch_layout = main_panel.getChildByName("touch_layout"); this.left_btn = main_panel.getChildByName("left_btn"); // 左移按钮 this.right_btn = main_panel.getChildByName("right_btn"); // 右移按钮 this.explain_btn = main_panel.getChildByName("explain_btn"); // 说明按钮 this.hallows_name = title_bg.getChildByName("hallows_name").getComponent(cc.Label); // 圣器名字 var title_attr = this.step_container.getChildByName("title_attr").getComponent(cc.Label); title_attr.string = Utils.TI18N("全队基础属性"); for (var i = 1; i < 3; i++) { var attr_bg = this.step_container.getChildByName("attr_bg_" + i); this.attr_bgs[i] = attr_bg; } this.uplv_layout = this.step_container.getChildByName("uplv_layout"); this.step_progress = this.uplv_layout.getChildByName("progress").getComponent(cc.ProgressBar); // 当前经验条 this.step_progress_value = this.uplv_layout.getChildByName("progress_value").getComponent(cc.Label); // 当前经验值 this.step_advanced_btn = this.uplv_layout.getChildByName("advanced_btn"); // 进阶一次按钮 this.step_auto_advanced_btn = this.uplv_layout.getChildByName("auto_advanced_btn"); // 一键进阶按钮 var step_advanced = this.step_advanced_btn.getChildByName("label").getComponent(cc.Label); step_advanced.string = Utils.TI18N("升级"); this.step_auto_advanced_btn_label = this.step_auto_advanced_btn.getChildByName("label").getComponent(cc.Label); this.step_auto_advanced_btn_label.string = Utils.TI18N("一键升级"); this.step_advanced_btn_tips = this.step_advanced_btn.getChildByName("tips"); // 进阶红点 this.step_advanced_btn_tips.active = false; // 升级消耗 var lvup_cost_bg = this.uplv_layout.getChildByName("lvup_cost_bg"); this.lvup_cost_bg_img = lvup_cost_bg.getComponent(cc.Sprite); this.lvup_cost_res_1 = lvup_cost_bg.getChildByName("res_icon").getComponent(cc.Sprite); this.lvup_cost_label_1 = lvup_cost_bg.getChildByName("lvup_cost_label").getComponent(cc.Label); var auto_lvup_cost_bg = this.uplv_layout.getChildByName("auto_lvup_cost_bg"); this.auto_lvup_cost_img = auto_lvup_cost_bg.getComponent(cc.Sprite); this.lvup_cost_res_2 = auto_lvup_cost_bg.getChildByName("res_icon").getComponent(cc.Sprite); ; this.lvup_cost_label_2 = auto_lvup_cost_bg.getChildByName("auto_lvup_cost_label").getComponent(cc.Label); // 技能 this.skill_container = main_panel.getChildByName("skill_container"); this.skill_layout = this.skill_container.getChildByName("skill_layout"); this.skill_lvup_node = this.skill_layout.getChildByName("skill_lvup_btn"); this.skill_lvup_btn = this.skill_layout.getChildByName("skill_lvup_btn").getComponent(cc.Button); this.skill_lvup_btn_label = this.skill_lvup_node.getChildByName("label").getComponent(cc.Label); this.skill_lvup_btn_label.string = Utils.TI18N("升级"); this.skill_lvup_btn_line = this.skill_lvup_node.getChildByName("label").getComponent(cc.LabelOutline); // 技能升级消耗 this.skill_cost_bg_1 = this.skill_layout.getChildByName("skill_cost_bg_1"); this.skill_cost_bg_1_img = this.skill_cost_bg_1.getComponent(cc.Sprite); this.skill_res_icon_1 = this.skill_cost_bg_1.getChildByName("skill_res_icon_1").getComponent(cc.Sprite); this.skill_cost_label_1 = this.skill_cost_bg_1.getChildByName("skill_cost_label_1").getComponent(cc.Label); this.skill_cost_bg_2 = this.skill_layout.getChildByName("skill_cost_bg_2"); this.skill_cost_bg_2_img = this.skill_cost_bg_2.getComponent(cc.Sprite); this.skill_res_icon_2 = this.skill_cost_bg_2.getChildByName("skill_res_icon_2").getComponent(cc.Sprite); this.skill_cost_label_2 = this.skill_cost_bg_2.getChildByName("skill_cost_label_2").getComponent(cc.Label); this.loadRes(PathTool.getUIIconPath("hallows", "hallows_1008"), function (resObject) { this.lvup_cost_bg_img.spriteFrame = resObject; this.auto_lvup_cost_img.spriteFrame = resObject; this.skill_cost_bg_1_img.spriteFrame = resObject; this.skill_cost_bg_2_img.spriteFrame = resObject; }.bind(this)); // 无法升级时的提示 this.skill_lvup_tips = this.skill_layout.getChildByName("skill_lvup_tips").getComponent(cc.Label); // 满级 this.maxlv_layout = main_panel.getChildByName("maxlv_layout"); this.max_lv_tips = this.maxlv_layout.getChildByName("max_lv_tips").getComponent(cc.Label); var tab_container = main_panel.getChildByName("tab_container"); for (var i = 1; i < 3; i++) { var object = {}; var tab_btn = tab_container.getChildByName("tab_btn_" + i); if (tab_btn) { var title = tab_btn.getChildByName("title").getComponent(cc.Label); if (i == 1) { title.string = Utils.TI18N("升级"); } else if (i == 2) { title.string = Utils.TI18N("技能"); } var tips = tab_btn.getChildByName("tips"); var tab_btn_img = tab_container.getChildByName("tab_btn_" + i).getComponent(cc.Sprite); var res = PathTool.getCommonIcomPath("common_2009"); this.loadRes(res, function (sf_obj) { object.tab_btn_img.spriteFrame = sf_obj; }.bind(this)); object.tab_btn = tab_btn; object.label = title; object.index = i; object.tips = tips; object.tab_btn_img = tab_btn_img; this.tab_list[i] = object; } } this.hallows_eff_node = this.seekChild("hallows_eff_node"); this.hallows_eff_sk = this.seekChild("hallows_eff_node", sp.Skeleton); this.update_eff_node = this.seekChild("update_eff_node"); this.update_eff_sk = this.seekChild("update_eff_node", sp.Skeleton); this.main_panel = main_panel; }, // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent registerEvent: function registerEvent() { this.step_advanced_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); this.changeAutoAdvanceStatus(false); if (this.select_hallows) { this.ctrl.requestHallowsAdvance(this.select_hallows.id, false); } }, this); this.step_auto_advanced_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); var is_in_advance = !this.is_in_advance; if (is_in_advance == true && this.select_hallows) { this.ctrl.requestHallowsAdvance(this.select_hallows.id, false); } this.changeAutoAdvanceStatus(is_in_advance); }, this); this.left_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); if (this.hallows_list && Utils.next(this.hallows_list) != null) { var select_index = parseInt(this.select_index); if (select_index <= 0) { select_index = this.hallows_sum; } else { select_index = select_index - 1; } this.selectHallowsIndex(select_index); } }, this); this.right_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); if (this.hallows_list && Utils.next(this.hallows_list) != null) { var select_index = parseInt(this.select_index); if (select_index + 1 >= this.hallows_sum) { select_index = 0; } else { select_index = select_index + 1; } this.selectHallowsIndex(select_index); } }, this); this.explain_btn.on(cc.Node.EventType.TOUCH_END, function (event) { Utils.playButtonSound(ButtonSound.Normal); var config = Config.hallows_data.data_const.game_rule; var pos = event.touch.getLocation(); require("tips_controller").getInstance().showCommonTips(config.desc, pos, null, null, 500); }, this); this.trace_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); if (this.select_hallows) { if (this.select_hallows.vo == null) { message(TI18N("该圣器暂未激活")); } else { var cost_config = Config.hallows_data.data_const.imprint_lowest; if (cost_config) { if (this.select_hallows.vo.step < cost_config.val) { message(cost_config.desc); } else { this.ctrl.openHallowsTraceWindow(true, this.select_hallows); } } } } }, this); this.reset_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); this._onClickResetBtn(); }, this); this.skill_lvup_node.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); this._onClickSkillLvupBtn(); }, this); this.artifact_btn.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); this._onClickBtnArtifact(); }, this); this.touch_layout.on(cc.Node.EventType.TOUCH_END, function () { Utils.playButtonSound(ButtonSound.Normal); this._onClickTouchLayout(); }, this); for (var i in this.tab_list) { if (this.tab_list[i].tab_btn) { this.tab_list[i].tab_btn.on(cc.Node.EventType.TOUCH_END, function (index) { Utils.playButtonSound(ButtonSound.Tab); this.changeSelectedTab(index); }.bind(this, this.tab_list[i].index), this); } } this.addGlobalEvent(HallowsEvent.HallowsUpdateEvent, function (id) { this.handleUpdateEvent(id); }.bind(this)); this.addGlobalEvent(HallowsEvent.HallowsAdvanceEvent, function (id, result) { if (this.select_hallows && this.select_hallows.id != id) { this.changeAutoAdvanceStatus(false); } else { if (result == 0 || result == 1) { //0标识材料之类的不足 1标识升阶了,这两种情况都停掉 this.changeAutoAdvanceStatus(false); } } }.bind(this)); // 显示为某一神器(从所有神器预览界面打开) this.addGlobalEvent(HallowsEvent.UndateHallowsInfoEvent, function (id) { if (this.select_hallows && this.select_hallows.id != id) { var select_index = this.getHallowsIndexById(id); this.selectHallowsIndex(select_index); } }.bind(this)); // 神器红点更新 this.addGlobalEvent(HallowsEvent.HallowsRedStatus, function (red_type, setatus) { if (this.select_hallows) { this.updateTabRedStatus(); } }.bind(this)); this.addGlobalEvent(BackpackEvent.ADD_GOODS, function (bag_code, item_list) { if (bag_code != BackPackConst.Bag_Code.BACKPACK) return; this.checkNeedUpdateItemNum(item_list); }.bind(this)); this.addGlobalEvent(BackpackEvent.MODIFY_GOODS_NUM, function (bag_code, item_list) { if (bag_code != BackPackConst.Bag_Code.BACKPACK) return; this.checkNeedUpdateItemNum(item_list); }.bind(this)); this.addGlobalEvent(BackpackEvent.DELETE_GOODS, function (bag_code, item_list) { if (bag_code != BackPackConst.Bag_Code.BACKPACK) return; this.checkNeedUpdateItemNum(item_list); }.bind(this)); }, // 点击重铸 _onClickResetBtn: function _onClickResetBtn() { var str = Utils.TI18N("重铸后神器将回到初始状态,同时返还除金币外所有资源,是否重铸?"); var CommonAlert = require("commonalert"); CommonAlert.show(str, Utils.TI18N("确定"), function () { if (this.select_hallows) { this.ctrl.requestHallowsReset(this.select_hallows.id); } }.bind(this), Utils.TI18N("取消")); }, // 技能升级 _onClickSkillLvupBtn: function _onClickSkillLvupBtn() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; if (vo) { this.ctrl.requestHallowsSkillUpgrade(vo.id); } }, // 失落神器 _onClickBtnArtifact: function _onClickBtnArtifact() { this.ctrl.openHallowsPreviewWindow(true); }, // 点击神器显示tip _onClickTouchLayout: function _onClickTouchLayout() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; if (vo) { var max_vo = this.model.makeHighestHallowVo(vo.id); this.ctrl.openHallowsTips(true, max_vo); } }, // 切换分页 changeSelectedTab: function changeSelectedTab(index) { if (this.tab_object && this.tab_object.index == index) return; if (this.tab_object) { var res = PathTool.getCommonIcomPath("common_2009"); this.loadRes(res, function (sf_obj) { this.tab_object.tab_btn_img.spriteFrame = sf_obj; }.bind(this)); this.tab_object.label.node.color = new cc.Color(207, 181, 147, 255); this.tab_object = null; } this.tab_object = this.tab_list[index]; if (this.tab_object) { var res = PathTool.getCommonIcomPath("common_2010"); this.loadRes(res, function (sf_obj) { this.tab_object.tab_btn_img.spriteFrame = sf_obj; }.bind(this)); this.tab_object.label.node.color = new cc.Color(255, 237, 214, 255); } this.cur_index = index; this.step_container.active = index == HallowsConst.Tab_Index.uplv; this.skill_container.active = index == HallowsConst.Tab_Index.skill; this.updateMaxLvTips(); }, // 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了 openRootWnd: function openRootWnd(hallows_id, index) { // 根据激活数和id重新排序, var config_list = Config.hallows_data.data_base; this.hallows_list = []; this.hallows_sum = Config.hallows_data.data_base_length; for (var i in config_list) { var object = {}; object.id = config_list[i].id; object.name = config_list[i].name; object.effect = config_list[i].effect; object.item_id = config_list[i].item_id; object.open_desc = config_list[i].open_desc; var vo = this.model.getHallowsById(config_list[i].id); object.vo = vo; this.hallows_list.push(object); } // 显示列表重新排序 if (Utils.next(this.hallows_list)) { this.hallows_list.sort(function (a, b) { return a.id - b.id; }); } var select_index = this.getDefaultHallowsIndex(hallows_id); this.selectHallowsIndex(select_index); index = index || HallowsConst.Tab_Index.uplv; this.changeSelectedTab(index); }, // 取出进入界面时默认选中的神器index getDefaultHallowsIndex: function getDefaultHallowsIndex(hallows_id) { var temp_hallows_list = Utils.deepCopy(this.hallows_list); var select_index = 0; if (hallows_id) { select_index = this.getHallowsIndexById(hallows_id); } else { //等级最高>进度最高>id越高 var temp_hallows = []; temp_hallows_list.sort(function (a, b) { return b.vo.step - a.vo.step; }); var max_step = 0; for (var i in temp_hallows_list) { if (max_step <= temp_hallows_list[i].vo.step) { max_step = temp_hallows_list[i].vo.step; temp_hallows.push(temp_hallows_list[i]); } } if (temp_hallows.length == 1) { select_index = this.getHallowsIndexById(temp_hallows[0].id); } else { var max_lucky = 0; temp_hallows.sort(function (a, b) { return b.vo.lucky - a.vo.lucky; }); var temp_hallows_2 = []; for (var j in temp_hallows) { var hallows = temp_hallows[j]; if (hallows.vo.lucky >= max_lucky) { max_lucky = hallows.vo.lucky; temp_hallows_2.push(hallows); } } if (temp_hallows_2.length == 1) { select_index = this.getHallowsIndexById(temp_hallows_2[0].id); } else { temp_hallows_2.sort(function (a, b) { return b.id - a.id; }); select_index = this.getHallowsIndexById(temp_hallows_2[0].id); } } } return select_index; }, // 根据神器id获取对应的index getHallowsIndexById: function getHallowsIndexById(id) { var index = 1; for (var i in this.hallows_list) { if (this.hallows_list[i].id && this.hallows_list[i].id == id) { index = i; } } return index; }, // 选中某一神器 selectHallowsIndex: function selectHallowsIndex(index, force) { if (this.select_index == index && !force) return; //只要是正常切换,就终止掉自动进阶 if (!force) { this.changeAutoAdvanceStatus(false); } else { this.handleEffect(true); } this.select_index = index; this.select_hallows = this.hallows_list[index]; if (this.select_hallows == null) return; this.reset_btn.active = this.checkIsShowResetBtn(); // 切换神器时需要清掉的数据 this.is_max_hallows_lv = false; // 神器是否达到最大等级 this.is_max_skill_lv = false; // 技能是否达到最大等级 this.hallows_uplv_cost_bid_1 = 0; // 选中的神器升级所需消耗1 this.hallows_uplv_cost_num_1 = 0; this.hallows_uplv_cost_bid_2 = 0; // 选中的神器升级所需消耗2 this.hallows_uplv_cost_num_2 = 0; this.skill_lvup_cost_bid_1 = 0; // 选中的神器技能升级所需消耗1 this.skill_lvup_cost_num_1 = 0; this.skill_lvup_cost_bid_2 = 0; // 选中的神器技能升级所需消耗2 this.skill_lvup_cost_num_2 = 0; this.updateHallowsBaseInfo(); this.updateSkillList(); this.updateHallowStatusInfo(); this.updateTabRedStatus(); }, handleEffect: function handleEffect(status) { if (!status) { if (this.update_eff_sk) { this.update_eff_sk.setToSetupPose(); this.update_eff_sk.clearTracks(); } } else { var anima_path = PathTool.getSpinePath(Config.effect_data.data_effect_info[185], "action"); this.loadRes(anima_path, function (ske_data) { this.update_eff_sk.skeletonData = ske_data; this.update_eff_sk.setAnimation(0, PlayerAction.action, false); }.bind(this)); } }, //基础信息显示模型、名称、基础属性、技能等 updateHallowsBaseInfo: function updateHallowsBaseInfo() { if (this.select_hallows == null) return; var action = PlayerAction.action_1; if (this.select_hallows.vo != null) { action = PlayerAction.action_2; } if (this.hallows_model_id != this.select_hallows.effect) { this.hallows_model_id = this.select_hallows.effect; this.handleEffect(false); if (this.hallows_eff_sk) { this.hallows_eff_sk.setToSetupPose(); this.hallows_eff_sk.clearTracks(); } var anima_path = PathTool.getSpinePath(this.hallows_model_id, "action"); this.loadRes(anima_path, function (ske_data) { this.hallows_eff_sk.skeletonData = ske_data; this.hallows_eff_sk.setAnimation(0, action, true); }.bind(this)); } if (this.select_hallows.vo) { this.hallows_eff_node.color = new cc.Color(255, 255, 255, 255); // setChildUnEnabled(false, self.hallows_model) } else { this.hallows_eff_node.color = new cc.Color(169, 169, 169, 255); // setChildUnEnabled(true, self.hallows_model) } // 基础属性 var vo = this.select_hallows.vo; if (vo == null) return; //名称 this.hallows_name.string = this.select_hallows.name + "+" + vo.step; var step_config = gdata("hallows_data", "data_info", Utils.getNorKey(vo.id, vo.step)); var next_step_config = gdata("hallows_data", "data_info", Utils.getNorKey(vo.id, vo.step + 1)) || {}; // 基础属性 for (var i in this.base_attr_list) { this.base_attr_list[i].action = false; } for (var j in step_config.attr) { if (j > 2) break; //UI只支持显示两个技能 var attr_key = step_config.attr[j][0]; var attr_val = step_config.attr[j][1] || 0; var next_attr_val = 0; //取出下一级属性加成,计算临时变量 if (next_step_config.attr) { for (var k in next_step_config.attr) { if (next_step_config.attr[k][0] && next_step_config.attr[k][0] == attr_key) { next_attr_val = next_step_config.attr[k][1] || 0; } } } var attr_name = Config.attr_data.data_key_to_name[attr_key]; if (attr_name) { var attr_text = this.base_attr_list[j]; if (attr_text == null) { attr_text = Utils.createRichLabel(24, new cc.Color(100, 50, 35, 255), cc.v2(0, 0.5), cc.v2(20, 20), 30, 380); attr_text.horizontalAlign = cc.macro.TextAlignment.LEFT; var attr_bg = this.attr_bgs[parseInt(j) + 1]; attr_bg.addChild(attr_text.node); this.base_attr_list[j] = attr_text; } attr_text.active = true; var icon = PathTool.getAttrIconByStr(attr_key); var add_value = 0; ; // 临时变量 if (next_attr_val > 0) { var ratio_config = Config.hallows_data.data_const["temporary_ratio"] || {}; var ratio = ratio_config.val || 800; add_value = Math.round(vo.lucky / step_config.max_lucky * (next_attr_val - attr_val) * (ratio / 1000)); } var is_per = PartnerCalculate.isShowPerByStr(attr_key); //当前属性值=配置表中的值+圣印加成的值 var stone_config = Config.hallows_data.data_const["stone_attribute"]; if (vo.seal > 0 && stone_config) { var stone_val = 0; for (var k in stone_config.val) { if (stone_config.val[k][0] && stone_config.val[k][0] == attr_key) { stone_val = stone_config.val[k][1] || 0; break; } } attr_val = attr_val + stone_val * vo.seal; } if (is_per) { attr_val = attr_val / 10 + "%"; } var attr_str = cc.js.formatStr(" %s:%s", icon, attr_name, attr_val.toString()); if (add_value > 0) { if (is_per) { add_value = add_value / 10 + "%"; } attr_str = attr_str + cc.js.formatStr(" +%s", add_value.toString()); } attr_text.string = attr_str; this.loadRes(PathTool.getCommonIcomPath(icon), function (attr_text, resObject) { attr_text.addSpriteFrame(resObject); }.bind(this, attr_text)); } } //神器技能 var hallows_skill = gdata("hallows_data", "data_skill_up", Utils.getNorKey(this.select_hallows.id, vo.skill_lev)); if (hallows_skill && hallows_skill.skill_bid != 0) { var config = gdata("skill_data", "data_get_skill", hallows_skill.skill_bid); if (!config || Utils.next(config) == null) { return; } if (!this.hallow_skill_icon) { var SkillItem = require("skill_item"); this.hallow_skill_icon = new SkillItem(); //true,true,true,0.9 this.hallow_skill_icon.setParent(this.skill_container); this.hallow_skill_icon.setScale(0.9); this.hallow_skill_icon.setLeveStatus(false); this.hallow_skill_icon.setPosition(cc.v2(75, 245)); } this.hallow_skill_icon.setData(config.bid); if (!this.hallows_skill_name) { this.hallows_skill_name = Utils.createLabel(24, new cc.Color(139, 71, 21, 255), null, 135, 267, "", this.skill_container, 1, cc.v2(0, 0)); } this.hallows_skill_name.string = config.name + "+" + vo.skill_lev; if (!this.hallows_skill_desc) { this.hallows_skill_desc = Utils.createRichLabel(22, new cc.Color(100, 50, 35, 255), cc.v2(0, 1), cc.v2(135, 250), 30, 550); this.hallows_skill_desc.horizontalAlign = cc.macro.TextAlignment.LEFT; this.skill_container.addChild(this.hallows_skill_desc.node); } this.hallows_skill_desc.string = config.des; } }, //创建技能加成 updateSkillList: function updateSkillList() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; var skill_attr_config = Config.hallows_data.data_skill_attr[this.select_hallows.id] || {}; for (var i in this.skill_attr_list) { this.skill_attr_list[i].active = false; } for (var j in skill_attr_config) { var attr_txt = this.skill_attr_list[j]; if (attr_txt == null) { attr_txt = Utils.createLabel(20, new cc.Color(157, 141, 115, 255), null, 0, 0, "", this.skill_bg, 1, cc.v2(0, 0.5)); this.skill_attr_list[j] = attr_txt; } attr_txt.active = true; attr_txt.node.setPosition(cc.v2(20, 90 - (j - 1) * 32)); if (vo.skill_lev >= skill_attr_config[j].lev_limit) { attr_txt.node.color = new cc.Color(247, 152, 68, 255); } else { attr_txt.node.color = new cc.Color(157, 141, 115, 255); } var attr_str = cc.js.formatStr(Utils.TI18N("技能%d级:%s"), skill_attr_config[j].lev_limit, skill_attr_config[j].desc); attr_txt.string = attr_str; } }, //设置神器升级与技能状态显示 updateHallowStatusInfo: function updateHallowStatusInfo() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; if (vo == null) { return; } else { //神器是否达到最大等级 var max_lev = Config.hallows_data.data_max_lev[vo.id] || 100; if (vo.step >= max_lev) { this.is_max_hallows_lv = true; this.uplv_layout.active = false; } else { this.is_max_hallows_lv = false; this.uplv_layout.active = true; } //技能是否达到最大等级 var max_skill_lv = Config.hallows_data.data_skill_max_lev[vo.id] || 10; var skill_lv = vo.skill_lev; if (skill_lv >= max_skill_lv) { this.is_max_skill_lv = true; this.skill_layout.active = false; } else { this.is_max_skill_lv = false; this.skill_layout.active = true; } //更新神器升级与技能显示 if (!this.is_max_hallows_lv) { this.updateStepInfo(); } if (!this.is_max_skill_lv) { this.updateSkillInfo(); } this.updateMaxLvTips(); } }, // 刷新满级提示语 updateMaxLvTips: function updateMaxLvTips() { if (this.cur_index == HallowsConst.Tab_Index.uplv && this.is_max_hallows_lv) { this.max_lv_tips.string = Utils.TI18N("神器已满级"); this.maxlv_layout.active = true; } else if (this.cur_index == HallowsConst.Tab_Index.skill && this.is_max_skill_lv) { this.max_lv_tips.string = Utils.TI18N("技能已满级"); this.maxlv_layout.active = true; } else { this.maxlv_layout.active = false; } }, //设置神器升级相关显示 updateStepInfo: function updateStepInfo() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; if (vo == null) return; var step_config = gdata("hallows_data", "data_info", Utils.getNorKey(vo.id, vo.step)); if (step_config) { //进度条 this.step_progress_value.string = vo.lucky + "/" + step_config.max_lucky; this.step_progress.progress = vo.lucky / step_config.max_lucky; // 神器升级消耗 var expend_1 = step_config.loss[0]; var expend_2 = step_config.loss[1]; if (expend_1) { var bid = expend_1[0]; var num = expend_1[1]; this.hallows_uplv_cost_bid_1 = bid; this.hallows_uplv_cost_num_1 = num; this.setCostDataToNode(this.lvup_cost_res_1, this.lvup_cost_label_1, bid, num); } if (expend_2) { var bid = expend_2[0]; var num = expend_2[1]; this.hallows_uplv_cost_bid_2 = bid; this.hallows_uplv_cost_num_2 = num; this.setCostDataToNode(this.lvup_cost_res_2, this.lvup_cost_label_2, bid, num); } } }, // 更新神器技能相关显示 updateSkillInfo: function updateSkillInfo() { if (this.select_hallows == null) return; var vo = this.select_hallows.vo; if (vo == null) return; var hallows_skill = gdata("hallows_data", "data_skill_up", Utils.getNorKey(this.select_hallows.id, vo.skill_lev)); if (hallows_skill && hallows_skill.skill_bid != 0) { //升级消耗 if (hallows_skill.lev_limit > vo.step) { this.skill_lvup_tips.string = cc.js.formatStr(Utils.TI18N("神器%d级可继续升级"), hallows_skill.lev_limit); this.skill_lvup_tips.node.active = true; this.skill_cost_bg_1.active = false; this.skill_cost_bg_2.active = false; this.skill_lvup_btn.enableAutoGrayEffect = true; this.skill_lvup_btn.interactable = false; // this.skill_lvup_btn_line.width = 0; this.skill_lvup_btn_line.enabled = false; } else { this.skill_lvup_btn.enableAutoGrayEffect = false; this.skill_lvup_btn.interactable = true; // this.skill_lvup_btn_line.width = 2; this.skill_lvup_btn_line.enabled = true; this.skill_lvup_tips.node.active = false; this.skill_cost_bg_1.active = true; this.skill_cost_bg_2.active = true; var expend_1 = hallows_skill.lose[0]; var expend_2 = hallows_skill.lose[1]; if (expend_1) { var bid = expend_1[0]; var num = expend_1[1]; this.skill_lvup_cost_bid_1 = bid; this.skill_lvup_cost_num_1 = num; this.setCostDataToNode(this.skill_res_icon_1, this.skill_cost_label_1, bid, num); } if (expend_2) { var bid = expend_2[0]; var num = expend_2[1]; this.skill_lvup_cost_bid_2 = bid; this.skill_lvup_cost_num_2 = num; this.setCostDataToNode(this.skill_res_icon_2, this.skill_cost_label_2, bid, num); } } } }, // 更新tab按钮红点显示 updateTabRedStatus: function updateTabRedStatus() { if (this.select_hallows == null) return; var red_hallows_id = this.model.getRedHallowsId(); if (red_hallows_id && red_hallows_id == this.select_hallows.id) { for (var i in this.tab_list) { var tab_object = this.tab_list[i]; if (tab_object.tips && tab_object.index) { var red_status = false; if (tab_object.index == HallowsConst.Tab_Index.uplv) { red_status = this.model.checkRedIsShowByRedType(HallowsConst.Red_Index.hallows_lvup); } else if (tab_object.index == HallowsConst.Tab_Index.skill) { red_status = this.model.checkRedIsShowByRedType(HallowsConst.Red_Index.skill_lvup); } tab_object.tips.active = red_status; } } if (this.trace_btn_tips) { var trace_red = this.model.checkRedIsShowByRedType(HallowsConst.Red_Index.stone_use); this.trace_btn_tips.active = trace_red; } } else { for (var j in this.tab_list) { var tab_object = this.tab_list[j]; if (tab_object.tips) { tab_object.tips.active = false; } } if (this.trace_btn_tips) { this.trace_btn_tips.active = false; } } }, // 显示消耗数据 setCostDataToNode: function setCostDataToNode(item_icon, item_label, item_bid, item_num) { var item_config = Utils.getItemConfig(item_bid); if (item_config) { var res = PathTool.getItemRes(item_config.icon); this.loadRes(res, function (item_icon, sf_obj) { item_icon.spriteFrame = sf_obj; }.bind(this, item_icon)); var count = BackpackController.getInstance().getModel().getItemNumByBid(item_bid); item_label.string = cc.js.formatStr("%s/%s", Utils.getMoneyString(count, false), Utils.getMoneyString(item_num, false)); if (count < item_num) { item_label.node.color = new cc.Color(255, 93, 93, 255); } else { item_label.node.color = new cc.Color(255, 246, 228, 255); } } }, //消耗物品的数量更新 checkNeedUpdateItemNum: function checkNeedUpdateItemNum(item_list) { if (item_list == null || Utils.next(item_list) == null) return; for (var i in item_list) { var vo = item_list[i]; if (vo.config) { var bid = vo.config.id; if (bid == this.hallows_uplv_cost_bid_1) { this.setCostDataToNode(this.lvup_cost_res_1, this.lvup_cost_label_1, bid, this.hallows_uplv_cost_num_1); } else if (bid == this.hallows_uplv_cost_bid_2) { this.setCostDataToNode(this.lvup_cost_res_2, this.lvup_cost_label_2, bid, this.hallows_uplv_cost_num_2); } else if (bid == this.skill_lvup_cost_bid_1) { this.setCostDataToNode(this.skill_res_icon_1, this.skill_cost_label_1, bid, this.skill_lvup_cost_num_1); } else if (bid == this.skill_lvup_cost_bid_2) { this.setCostDataToNode(this.skill_res_icon_2, this.skill_cost_label_2, bid, this.skill_lvup_cost_num_2); } } } }, //圣器更新处理 handleUpdateEvent: function handleUpdateEvent(id) { if (id && this.select_hallows && id == this.select_hallows.id) { this.selectHallowsIndex(this.select_index, true); } }, // 是否显示重铸按钮 checkIsShowResetBtn: function checkIsShowResetBtn() { var is_show = false; if (this.select_hallows == null) { return is_show; } var vo = this.select_hallows.vo; if (vo == null) { return is_show; } if (vo.step > 1 || vo.seal > 0 || vo.skill_lev > 1) { is_show = true; } return is_show; }, //自动进阶显示状态 changeAutoAdvanceStatus: function changeAutoAdvanceStatus(is_in_advance) { if (is_in_advance == this.is_in_advance) return; this.is_in_advance = is_in_advance; if (this.is_in_advance) { this.step_auto_advanced_btn_label.string = Utils.TI18N("停止"); if (this.auto_time_ticket == null) { this.auto_time_ticket = gcore.Timer.set(function () { if (this.is_in_advance) { this.ctrl.requestHallowsAdvance(this.select_hallows.id, false); } }.bind(this), 500, -1); } } else { this.clearAutoTimeticket(); this.step_auto_advanced_btn_label.string = Utils.TI18N("一键升级"); } }, clearAutoTimeticket: function clearAutoTimeticket() { if (this.auto_time_ticket) { gcore.Timer.del(this.auto_time_ticket); this.auto_time_ticket = null; } }, // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象 closeCallBack: function closeCallBack() { this.clearAutoTimeticket(); this.handleEffect(false); if (this.hallow_skill_icon) { this.hallow_skill_icon.deleteMe(); this.hallow_skill_icon = null; } if (this.hallows_eff_sk) { this.hallows_eff_sk.setToSetupPose(); this.hallows_eff_sk.clearTracks(); } this.ctrl.openHallowsMainWindow(false); } }); cc._RF.pop();