"use strict"; cc._RF.push(module, 'bc034lVSFJIUoazB/hWXMt2', 'primus_challenge_window'); // Scripts/mod/primus/view/primus_challenge_window.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里是描述这个窗体的作用的 //
Create: 2019-03-16 10:26:46 // -------------------------------------------------------------------- var PathTool = require("pathtool"); var RoleController = require("role_controller"); var ArenaController = require("arena_controller"); var PlayerHead = require("playerhead"); var FriendController = require("friend_controller"); var PartnerCalculate = require("partner_calculate"); var BaseRole = require("baserole"); var Primus_challengeWindow = cc.Class({ "extends": BaseView, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("primus", "primus_challenge_panel"); this.viewTag = SCENE_TAG.ui; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意 this.win_type = WinType.Mini; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips this.ctrl = arguments[0]; this.model = this.ctrl.getModel(); }, // 初始化一些配置数据,可以用于声明一些变量之类的 initConfig: function initConfig() { // 属性列表 this.attr_label_list = []; this.attr_icon_list = []; // 复选框 this.checkbox_list = []; this.checkbox_counts = [1, 5, 10]; // boss 主动技能 this.act_skill_item_list = []; // boss 被动技能 this.passive_skill_item_list = []; // 技能宽高 this.skill_width = 88; }, // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件 openCallBack: function openCallBack() { this.background = this.root_wnd.getChildByName("background"); this.background.scale = FIT_SCALE; this.main_container = this.root_wnd.getChildByName("main_container"); this.main_panel = this.main_container.getChildByName("main_panel"); this.close_btn = this.main_panel.getChildByName("close_btn"); this.win_title = this.main_panel.getChildByName("win_title").getComponent(cc.Label); this.win_title.string = Utils.TI18N("神殿挑战"); this.primus_bigbg_3_node = this.main_panel.getChildByName("primus_bigbg_3"); this.primus_bigbg_3_node.scale = 2; this.primus_bigbg_3 = this.primus_bigbg_3_node.getComponent(cc.Sprite); this.loadRes(PathTool.getBigBg("primus_bigbg_3", null, "primus"), function (resObject) { if (this.primus_bigbg_3) { this.primus_bigbg_3.spriteFrame = resObject; } }.bind(this)); this.record_btn = this.main_panel.getChildByName("record_btn"); // 站台 var station_lay = this.main_panel.getChildByName("station_lay"); this.mode_node = station_lay.getChildByName("mode_node"); this.occupant_tips = station_lay.getChildByName("occupant_tips").getComponent(cc.Label); this.tips_node = station_lay.getChildByName("tips_node"); this.head_node = station_lay.getChildByName("head_node"); this.title_img = station_lay.getChildByName("title_img").getComponent(cc.Sprite); this.name = station_lay.getChildByName("name").getComponent(cc.Label); this.name_bg = station_lay.getChildByName("name_bg"); // boss技能 var boss_panel = this.main_panel.getChildByName("boss_panel"); var desc_label = boss_panel.getChildByName("desc_label").getComponent(cc.Label); var desc_label_1 = boss_panel.getChildByName("desc_label_1").getComponent(cc.Label); var desc_label_2 = boss_panel.getChildByName("desc_label_2").getComponent(cc.Label); desc_label.string = Utils.TI18N("Boss技能"); desc_label_1.string = Utils.TI18N("主动技能"); desc_label_2.string = Utils.TI18N("被动技能"); // 主动技能scrollview this.item_container_1 = boss_panel.getChildByName("item_container_1").getChildByName("content"); // 被动技能scrollview this.item_container_2 = boss_panel.getChildByName("item_container_2").getChildByName("content"); // 属性 this.attr_panel = this.main_panel.getChildByName("attr_panel"); this.arrt_title = this.attr_panel.getChildByName("title").getComponent(cc.Label); for (var i = 0; i < 4; i++) { this.attr_label_list[i] = this.attr_panel.getChildByName("attr_label" + (i + 1)).getComponent(cc.Label); this.attr_icon_list[i] = this.attr_panel.getChildByName("attr_icon" + (i + 1)).getComponent(cc.Sprite); } this.arrt_title.string = Utils.TI18N("神位称号属性加成"); // 复选框 var box_panel = this.main_panel.getChildByName("box_panel"); this.checkbox_list[0] = box_panel.getChildByName("checkbox1"); this.checkbox_list[1] = box_panel.getChildByName("checkbox5"); this.checkbox_list[2] = box_panel.getChildByName("checkbox10"); var name = this.checkbox_list[0].getChildByName("name").getComponent(cc.Label); name.string = cc.js.formatStr(Utils.TI18N("进化%s次"), this.checkbox_counts[0]); name = this.checkbox_list[1].getChildByName("name").getComponent(cc.Label); name.string = cc.js.formatStr(Utils.TI18N("进化%s次"), this.checkbox_counts[1]); name = this.checkbox_list[2].getChildByName("name").getComponent(cc.Label); name.string = cc.js.formatStr(Utils.TI18N("进化%s次"), this.checkbox_counts[2]); this.select_checkbox = 0; this.warning_tips = box_panel.getChildByName("warning_tips").getComponent(cc.Label); this.warning_tips.string = Utils.TI18N("(难度大请谨慎)"); this.tips_name = this.main_panel.getChildByName("tips_name").getComponent(cc.Label); this.challenge_btn = this.main_panel.getChildByName("challenge_btn"); var goto_node = this.main_panel.getChildByName("goto_node"); this.gotoe_label = Utils.createRichLabel(24, new cc.Color(36, 144, 3, 255), cc.v2(0, 0.5), cc.v2(0, 0), 30, 125); this.gotoe_label.horizontalAlign = cc.macro.TextAlignment.LEFT; this.gotoe_label.string = cc.js.formatStr("%s", Utils.TI18N("前往竞技场")); goto_node.addChild(this.gotoe_label.node); var tips_node = this.main_panel.getChildByName("tips_node"); this.tips_label = Utils.createRichLabel(22, new cc.Color(169, 95, 16, 255), cc.v2(0.5, 0.5), cc.v2(0, 0), 30, 1280); tips_node.addChild(this.tips_label.node); }, // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent registerEvent: function registerEvent() { Utils.onTouchEnd(this.gotoe_label.node, function () { var ArenaController = require("arena_controller"); ArenaController.getInstance().requestOpenArenWindow(); this.ctrl.openPrimusChallengePanel(false); }.bind(this), 1); Utils.onTouchEnd(this.close_btn, function () { this.ctrl.openPrimusChallengePanel(false); }.bind(this), 2); Utils.onTouchEnd(this.record_btn, function () { this._onClickChallengeRecordBtn(); }.bind(this), 2); Utils.onTouchEnd(this.challenge_btn, function () { this._onClickChallengeBtn(); }.bind(this), 2); for (var i in this.checkbox_list) { Utils.onTouchEnd(this.checkbox_list[i], function (i) { if (this.sever_data) { this.select_checkbox = i; this.setSelectCheckBox(); var num = this.sever_data.num + this.checkbox_counts[i]; this.initBossSkill(num); } }.bind(this, i), 1); } // -- this:addGlobalEvent(TaskEvent.UpdateUIRedStatus, function(key, value) // -- this:updateUIRedStatus(key) // -- end) }, // 去挑战去 _onClickChallengeBtn: function _onClickChallengeBtn() { if (!this.sever_data) return; var _send20702 = function () { var num = this.checkbox_counts[this.select_checkbox]; this.ctrl.sender20702(this.sever_data.pos, num); }.bind(this); if (this.is_have_title) { var CommonAlert = require("commonalert"); CommonAlert.show(Utils.TI18N("您当前已占有一个神位,若挑战其他神位成功,将失去原有神位,是否继续挑战?"), Utils.TI18N("确定"), _send20702, Utils.TI18N("取消")); } else { _send20702(); } }, // 查看挑战记录 _onClickChallengeRecordBtn: function _onClickChallengeRecordBtn() { if (!this.sever_data) return; this.ctrl.sender20703(this.sever_data.pos); }, // 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了 openRootWnd: function openRootWnd(data) { if (!data) return; if (data.length < 2) return; this.is_have_title = data[1]; this.sever_data = data[0]; this.var_data = Config.primus_data.data_upgrade[this.sever_data.pos]; var honor_data = Config.honor_data.data_title[this.var_data.honor_id]; if (honor_data && this.title_img) { var res = PathTool.getHonorRes(honor_data.res_id); this.loadRes(res, function (resObject) { if (this.title_img) { this.title_img.spriteFrame = resObject; } }.bind(this)); } if (this.tips_node && this.var_data) { var str = cc.js.formatStr(Utils.TI18N("已进化%s次"), this.sever_data.num); var label = Utils.createRichLabel(24, new cc.Color(0xff, 0xff, 0xff, 0xff), cc.v2(0.5, 0.5), cc.v2(0, 0), 30); label.string = str; this.tips_node.addChild(label.node); } if (this.sever_data.name != null || this.sever_data.name != "") { var roleVo = RoleController.getInstance().getRoleVo(); if (roleVo && this.sever_data.rid == roleVo.rid && this.sever_data.srv_id == roleVo.srv_id) { // 是自己 this.tips_name.string = Utils.TI18N("已占领神位"); this.challenge_btn.active = false; this.gotoe_label.node.active = false; } } // 更新模型 if (this.var_data) { this.updateSpine(this.var_data.look_id); } // 头像 this.initHeadUi(); // boss技能 this.initBossSkill(this.sever_data.num); // 称号属性 this.initHonorAttribute(); this.setSelectCheckBox(); this.updateTipsLabel(); }, updateTipsLabel: function updateTipsLabel() { var my_data = ArenaController.getInstance().getModel().getMyLoopData(); if (this.tips_label && this.var_data) { if (my_data && my_data.rank && my_data.rank > 0) { this.tips_label.string = cc.js.formatStr(Utils.TI18N("挑战条件:当前竞技场处于前%s名(我的排名:%s)"), this.var_data.arena_rank, my_data.rank); } else { this.tips_label.string = cc.js.formatStr(Utils.TI18N("挑战条件:当前竞技场处于前%s名(我的排名:无)"), this.var_data.arena_rank); } } }, // 初始化头像ui initHeadUi: function initHeadUi() { if (!this.sever_data) return; if (this.sever_data.name == null || this.sever_data.name == "") { this.occupant_tips.string = Utils.TI18N("虚位以待"); this.name_bg.active = false; this.name.node.active = false; return; } // 头像 this.play_head = new PlayerHead(); //cc.size(96,96) this.play_head.setPosition(0, 0); // this.play_head.setScale(0.95); if (this.sever_data.lev) { this.play_head.setLev(this.sever_data.lev); } this.play_head.setParent(this.head_node); this.play_head.show(); this.play_head.setHeadRes(this.sever_data.face_id); this.name.string = this.sever_data.name; this.play_head.addCallBack(function () { FriendController.getInstance().openFriendCheckPanel(true, { srv_id: this.sever_data.srv_id, rid: this.sever_data.rid }); }.bind(this)); }, initHonorAttribute: function initHonorAttribute() { if (!this.var_data) return; if (!this.attr_label_list) return; if (!this.attr_icon_list) return; var honor_data = Config.honor_data.data_title[this.var_data.honor_id]; if (honor_data) { for (var i in this.attr_label_list) { var icon = this.attr_icon_list[i]; if (honor_data.attr[i]) { this.attr_label_list[i].node.active = true; var atrr_name = Config.attr_data.data_key_to_name[honor_data.attr[i][0]]; if (PartnerCalculate.isShowPerByStr(honor_data.attr[i][0])) { var value = honor_data.attr[i][1] / 10; this.attr_label_list[i].string = cc.js.formatStr("%s + %s%", Utils.TI18N(atrr_name), value); } else { this.attr_label_list[i].string = cc.js.formatStr("%s + %s ", Utils.TI18N(atrr_name), honor_data.attr[i][1]); } if (icon) { icon.node.active = true; var res_id = PathTool.getAttrIconByStr(honor_data.attr[i][0]); var res = PathTool.getCommonIcomPath(res_id); this.loadRes(res, function (icon, resObject) { if (icon) { icon.spriteFrame = resObject; } }.bind(this, icon)); } } else { this.attr_label_list[i].node.active = false; if (icon) { icon.node.active = false; } } } } }, initBossSkill: function initBossSkill(num) { if (this.unit_data_list == null) { this.unit_data_list = []; for (var i in Config.primus_data.data_unitdata) { if (this.sever_data.pos == Config.primus_data.data_unitdata[i].pos) { this.unit_data_list.push(Config.primus_data.data_unitdata[i]); } } } var cur_data = null; var length = this.unit_data_list.length; for (var j in this.unit_data_list) { if (num >= this.unit_data_list[j].min && num <= this.unit_data_list[j].max) { cur_data = this.unit_data_list[j]; break; } if (j + 1 == length) { cur_data = this.unit_data_list[j]; } } if (cur_data == null) { return; } if (this.cur_unit_data && this.cur_unit_data.min == cur_data.min) { // 同一个对象.不用初始化 return; } this.cur_unit_data = cur_data; var act_skill = cur_data.act_skill; var passive_skill = cur_data.passive_skill; // 主动技能 var item_width = this.skill_width * act_skill.length; var max_width = Math.max(this.item_container_1.getContentSize().width, item_width); this.item_container_1.setContentSize(cc.size(max_width, this.item_container_1.getContentSize().height)); for (var i in act_skill) { var vo = gdata("skill_data", "data_get_skill", act_skill[i]); if (vo) { if (this.act_skill_item_list[i] == null) { this.act_skill_item_list[i] = {}; this.act_skill_item_list[i] = this.updateSkillItem(vo, this.act_skill_item_list[i], true); this.item_container_1.addChild(this.act_skill_item_list[i].con); } else { this.updateSkillItem(vo, this.act_skill_item_list[i]); } this.act_skill_item_list[i].con.setPosition((this.skill_width + 5) * i + this.skill_width / 2, this.skill_width / 2); } else { console.log(cc.js.formatStr("技能表id: %s 没发现", act_skill[i].toString())); } } // 被动技能 var item_width = this.skill_width * passive_skill.length; var max_width = Math.max(this.item_container_2.getContentSize().width, item_width); this.item_container_2.setContentSize(cc.size(max_width, this.item_container_2.getContentSize().height)); for (var i in passive_skill) { var vo = gdata("skill_data", "data_get_skill", passive_skill[i]); if (vo) { if (this.passive_skill_item_list[i] == null) { this.passive_skill_item_list[i] = {}; this.passive_skill_item_list[i] = this.updateSkillItem(vo, this.passive_skill_item_list[i], false); this.item_container_2.addChild(this.passive_skill_item_list[i].con); } else { this.updateSkillItem(vo, this.passive_skill_item_list[i]); } this.passive_skill_item_list[i].con.setPosition((this.skill_width + 5) * i + this.skill_width / 2, this.skill_width / 2); } else { console.log(cc.js.formatStr("技能表id: %s 没发现", passive_skill[i].toString())); } } }, updateSpine: function updateSpine(look_id) { if (!look_id) return; var fun = function () { if (!this.spine) { this.spine = new BaseRole(); // this.spine:setCascade(true) this.spine.setParent(this.mode_node); this.spine.node.setPosition(0, 76); this.spine.node.setAnchorPoint(cc.v2(0.5, 0.5)); // this.spine:setOpacity(0) // var action = cc.fadeIn(0.2); // this.spine.runAction(action); this.spine.setData(BaseRole.type.role, look_id, PlayerAction.show, true, 0.75); } }.bind(this); if (this.spine) { // this.spine:setCascade(true) var action = cc.fadeOut(0.2); this.spine.node.runAction(cc.sequence(action, cc.CallFunc(function () { this.spine.node.stopAllActions(); this.spine.deleteMe(); this.spine = null; fun(); }))); } else { fun(); } }, // @is_act 是否主动技能 updateSkillItem: function updateSkillItem(config, skill_item, is_act) { var size = cc.size(this.skill_width, this.skill_width); var skill_size = cc.size(this.skill_width - 4, this.skill_width - 4); skill_item.config = config; if (skill_item.con == null) { var con = new cc.Node(); con.setContentSize(size); con.scale = 0.75; Utils.onTouchEnd(con, function () { if (skill_item.config) { var TipsController = require("tips_controller"); TipsController.getInstance().showSkillTips(skill_item.config); } }.bind(this), 1); skill_item.con = con; // 背景 var res = PathTool.getCommonIcomPath("common_1005"); var bg = Utils.createImage(con, null, 0, 0, cc.v2(0.5, 0.5), true, 0); this.loadRes(res, function (bg, resObject) { if (bg) { bg.spriteFrame = resObject; } }.bind(this, bg)); } // 技能icon var res = PathTool.getIconPath("skillicon", config.icon); if (skill_item.icon == null) { skill_item.icon = Utils.createImage(skill_item.con, null, 0, 0, cc.v2(0.5, 0.5), false, 0, false); this.loadRes(res, function (resObject) { if (skill_item && skill_item.icon) { skill_item.icon.spriteFrame = resObject; } }.bind(this)); } else { this.loadRes(res, function (resObject) { if (skill_item && skill_item.icon) { skill_item.icon.spriteFrame = resObject; } }.bind(this)); } // 技能等级 if (skill_item.lev_label == null) { skill_item.lev_label = Utils.createLabel(26, new cc.Color(0xff, 0xff, 0xff, 0xff), new cc.Color(0x00, 0x00, 0x00, 0xff), this.skill_width / 2 + 10, -this.skill_width / 2 - 20, config.level.toString(), skill_item.con, 2, cc.v2(1, 0)); } else { skill_item.lev_label.string = config.level.toString(); } return skill_item; }, // 设置选择框 setSelectCheckBox: function setSelectCheckBox() { if (!this.select_checkbox) return; if (!this.checkbox_list) return; for (var i in this.checkbox_list) { if (this.select_checkbox == i) { this.checkbox_list[i].getComponent(cc.Toggle).check(); } else { this.checkbox_list[i].getComponent(cc.Toggle).uncheck(); } } }, // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象 closeCallBack: function closeCallBack() { if (this.spine) { this.spine.deleteMe(); this.spine = null; } if (this.play_head) { this.play_head.deleteMe(); this.play_head = null; } this.ctrl.openPrimusChallengePanel(false); } }); cc._RF.pop();