"use strict"; cc._RF.push(module, '20f19O9c3dDjLtZbLnHaT1+', 'lev_upgrade_window'); // Scripts/mod/levupgrade/view/lev_upgrade_window.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里是描述这个窗体的作用的 //
Create: 2019-04-26 11:37:15 // -------------------------------------------------------------------- var PathTool = require("pathtool"); var ActionController = require("action_controller"); var LevupgradeController = require("levupgrade_controller"); var StoryEvent = require("story_event"); var LevupgradeWindow = cc.Class({ "extends": BaseView, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("levupgrade", "lev_upgrade_window"); this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意 this.win_type = WinType.Tips; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips this.ctrl = LevupgradeController.getInstance(); }, // 初始化一些配置数据,可以用于声明一些变量之类的 initConfig: function initConfig() { this.lev_list = []; this.can_touch = false; this.auto_limit_time = 5; this.item_list = []; }, // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件 openCallBack: function openCallBack() { var self = this; self.background = self.root_wnd.getChildByName("background"); self.main_container = self.root_wnd.getChildByName("main_container"); self.back_panel = self.main_container.getChildByName("back_panel"); self.title_container = self.main_container.getChildByName("title_container"); self.play_effect = self.title_container.getChildByName("action").getComponent(sp.Skeleton); self.title_width = self.title_container.getContentSize().width; self.title_height = self.title_container.getContentSize().height; var item = self.main_container.getChildByName("item_1"); if (item) { var title = item.getChildByName("title"); title.getComponent(cc.Label).string = "冒险者等级"; var object = {}; object.last_lev = item.getChildByName("last_lev"); object.now_lev = item.getChildByName("now_lev"); this.lev_list.push(object); } // -- 升级奖励 self.award_container = self.main_container.getChildByName("award_container"); var award_title = self.award_container.getChildByName("award_title"); award_title.getComponent(cc.Label).string = "升级奖励"; // -- 扩展类的说明,不一定有 self.extend_container = self.main_container.getChildByName("extend_container"); self.extend_panel = self.extend_container.getChildByName("extend_panel"); self.extend_icon = self.extend_panel.getChildByName("icon"); self.extend_title = self.extend_panel.getChildByName("title"); self.extend_desc = self.extend_panel.getChildByName("desc"); self.extend_ext_desc = self.extend_panel.getChildByName("ext_desc"); self.extend_panel.getChildByName("extend_title").getComponent(cc.Label).string = "功能预告"; }, // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent registerEvent: function registerEvent() { this.background.on('touchend', function () { Utils.playButtonSound(2); if (this.can_touch == true) { this.onClickClose(); } }, this); }, // 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了 openRootWnd: function openRootWnd(data) { var self = this; // self.root_wnd.getComponent(cc.Animation).play("lev_upgrade_window") Utils.playButtonSound("c_get"); self.handleEffect(); self.starTimeTicket(); var old_lev = data.old_lev || 0; var lev = data.lev || 0; var lev_config = Config.role_data.data_role_attr[lev]; if (lev_config) { // -- 角色等级 var role_object = self.lev_list[0]; role_object.last_lev.getComponent(cc.Label).string = old_lev; role_object.now_lev.getComponent(cc.Label).string = lev; self.award_data = []; for (var i = old_lev + 1; i <= lev; ++i) { var lev_cfg = Config.role_data.data_role_attr[i]; if (lev_cfg && lev_cfg.reward) { for (var k = 0; k < lev_cfg.reward.length; ++k) { var v = lev_cfg.reward[k]; self.checkAddAwardData(v); } } } self.setAwardInfo(); self.setExtendInfo(lev_config); } }, handleEffect: function handleEffect() { var self = this; var effect_id = 274; if (self.play_effect) { var sketon_path = PathTool.getSpinePath(PathTool.getEffectRes(effect_id), "action"); this.loadRes(sketon_path, function (skeleton_data) { this.play_effect.skeletonData = skeleton_data; this.play_effect.setAnimation(0, "action2", false); }.bind(this)); } }, starTimeTicket: function starTimeTicket() { var self = this; self.cut_time = 0; if (self.time_ticket == null) { self.time_ticket = gcore.Timer.set(function () { self.cut_time = self.cut_time + 0.5; if (self.cut_time > 0.5) { self.can_touch = true; } if (self.cut_time >= self.auto_limit_time) { gcore.Timer.del(this.time_ticket); this.time_ticket = null; self.onClickClose(); } }.bind(this), 500, -1); } }, //将重复的奖励道具叠加显示 checkAddAwardData: function checkAddAwardData(data) { var self = this; self.award_data = self.award_data || []; if (Utils.next(self.award_data) == null) { self.award_data.push(data); return; } for (var k = 0; k < self.award_data.length; ++k) { var v = self.award_data[k]; if (v[0] && data[0]) { if (v[0] == data[0]) { v[1] = v[1] + data[1]; } else { self.award_data.push(data); } } } }, // -- 升级奖励物品 setAwardInfo: function setAwardInfo() { var self = this; if (self.award_data == null) return; for (var k = 0; k < self.item_list.length; ++k) { var v = self.item_list[k]; v.setVisible(false); } if (self.award_data && Utils.next(self.award_data) != null) { var space_x = 20; var scale = 1; var panel_size = self.award_container.getContentSize(); var start_x = 0; //panel_size.width/2 - (self.award_data.length-1)*(space_x/2+120*scale/2) for (var i = 0; i < self.award_data.length; ++i) { var _v = self.award_data[i]; var item = self.item_list[i]; if (item == null) { var bid = _v[0]; var num = _v[1]; item = ItemsPool.getInstance().getItem("backpack_item"); item.setParent(self.award_container); item.setData({ bid: bid, num: num }); self.item_list[i] = item; } var pos_x = start_x + (i + 1 - 1) * (space_x + 120 * scale); item.show(); item.setPosition(pos_x, panel_size.height / 2 - 25); } self.award_container.active = true; } else { self.award_container.active = false; } }, onClickClose: function onClickClose() { this.ctrl.openMainWindow(false); ActionController.getInstance().checkOpenActionLimitGiftMainWindow(); }, setExtendInfo: function setExtendInfo(config) { if (config == null) return; var self = this; if (config.icon == "") { self.back_panel.setContentSize(cc.size(SCREEN_WIDTH, 349)); var height = this.main_container.height - 349; this.main_container.height -= height; self.extend_container.active = false; } else { self.back_panel.setContentSize(cc.size(SCREEN_WIDTH, 519)); var path_icon = PathTool.getUIIconPath("bigbg/battledrama", config.icon); this.loadRes(path_icon, function (res) { self.extend_icon.getComponent(cc.Sprite).spriteFrame = res; }.bind(this)); self.extend_title.getComponent(cc.Label).string = config.title; self.extend_desc.getComponent(cc.Label).string = config.desc; self.extend_ext_desc.getComponent(cc.Label).string = config.ext_desc; } }, // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象 closeCallBack: function closeCallBack() { this.play_effect.skeletonData = null; if (this.time_ticket) { gcore.Timer.del(this.time_ticket); this.time_ticket = null; } for (var i = 0; i < this.item_list.length; ++i) { this.item_list[i].deleteMe(); this.item_list[i] = null; } gcore.GlobalEvent.fire(StoryEvent.PREPARE_PLAY_PLOT); this.ctrl.openMainWindow(false); } }); cc._RF.pop();