"use strict";
|
cc._RF.push(module, 'b58adq+4SJMyayoWF9DVFKJ', 'hero_talent_skill_learn_window');
|
// Scripts/mod/hero/view/hero_talent_skill_learn_window.js
|
|
"use strict";
|
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 天赋领悟
|
// <br/>Create: 2019-05-11 14:03:34
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var HeroConst = require("hero_const");
|
|
var HeroController = require("hero_controller");
|
|
var SkillItem = require("skill_item");
|
|
var CommonScrollViewSingle = require("common_scrollview_single");
|
|
var BackpackController = require("backpack_controller");
|
|
var HeroTalentSkillLearnWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("hero", "hero_talent_skill_learn_panel");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Mini; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.ctrl = HeroController.getInstance();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
// --消耗数据列表
|
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.show_item_node = self.main_container.getChildByName("show_item_node");
|
self.skill_item = new SkillItem();
|
self.skill_item.setParent(this.show_item_node);
|
self.skill_item.setLeveStatus(false);
|
self.skill_name = self.main_container.getChildByName("skill_name").getComponent(cc.Label);
|
self.skill_desc_lb = self.main_container.getChildByName("skill_desc").getComponent(cc.Label);
|
self.no_vedio_image = self.main_container.getChildByName("no_vedio_image");
|
self.no_vedio_label = self.main_container.getChildByName("no_vedio_label").getComponent(cc.Label);
|
self.lay_scrollview = self.main_container.getChildByName("lay_scrollview");
|
self.cost_node = self.main_container.getChildByName("cost_node");
|
self.select_btn = self.main_container.getChildByName("select_btn");
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.background.on('touchend', this.onClickBtnClose, this);
|
this.select_btn.on('click', this.onClickBtnSelect, this);
|
},
|
onClickBtnClose: function onClickBtnClose() {
|
Utils.playButtonSound(2);
|
this.ctrl.openHeroTalentSkillLearnPanel(false);
|
},
|
// --选择
|
onClickBtnSelect: function onClickBtnSelect() {
|
if (!this.select_skill_data) {
|
return;
|
}
|
|
Utils.playButtonSound(1);
|
|
if (this.dic_have_skill_id.order_had == 1) {
|
// --已拥有
|
return;
|
} else {
|
this.ctrl.sender11096(this.hero_vo.partner_id, this.pos, this.select_skill_data.config.id);
|
this.onClickBtnClose();
|
}
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(data) {
|
if (!data.hero_vo) return;
|
if (!data.pos) return;
|
var self = this;
|
self.pos = data.pos;
|
self.hero_vo = data.hero_vo;
|
var config_list = Config.partner_skill_data.data_partner_skill_learn;
|
|
if (config_list && Utils.next(config_list) != null) {
|
self.no_vedio_image.active = false;
|
self.no_vedio_label.node.active = false;
|
self.initSkillData(config_list);
|
}
|
},
|
initSkillData: function initSkillData(config_list) {
|
var _career_order_name;
|
|
var self = this;
|
self.skill_list = [];
|
self.dic_have_skill_id = {};
|
|
for (var pos in self.hero_vo.talent_skill_list) {
|
var id = self.hero_vo.talent_skill_list[pos];
|
self.dic_have_skill_id[id] = pos;
|
} // --英雄职业对应名字
|
|
|
var career_order_name = (_career_order_name = {}, _defineProperty(_career_order_name, HeroConst.CareerType.eMagician, "order_magician"), _defineProperty(_career_order_name, HeroConst.CareerType.eWarrior, "order_warrior"), _defineProperty(_career_order_name, HeroConst.CareerType.eTank, "order_tank"), _defineProperty(_career_order_name, HeroConst.CareerType.eSsistant, "order_ssistant"), _career_order_name);
|
var dic_hero_talent_skill_learn_redpoint = this.ctrl.getModel().getTalentRedpointRecord();
|
var dic_commend_skill = {};
|
var commend_skill_config = Config.partner_skill_data.data_partner_commend_skill[this.hero_vo.bid];
|
|
if (commend_skill_config) {
|
for (var i = 0; i < commend_skill_config.length; ++i) {
|
var skill_id = commend_skill_config[i];
|
dic_commend_skill[skill_id] = i + 1;
|
}
|
}
|
|
for (var _id in config_list) {
|
var config = config_list[_id];
|
var skill_data = {};
|
skill_data.config = config;
|
skill_data.order = config.order;
|
|
if (commend_skill_config) {
|
//该英雄有单独推荐的 用单独推荐初始化
|
if (dic_commend_skill[config.id]) {
|
skill_data.career_order = dic_commend_skill[config.id];
|
} else {
|
skill_data.career_order = 1000;
|
}
|
} else {
|
if (career_order_name[self.hero_vo.type]) {
|
skill_data.career_order = config[career_order_name[self.hero_vo.type]];
|
} else {
|
skill_data.career_order = 1000;
|
}
|
}
|
|
if (self.dic_have_skill_id[config.id]) {
|
skill_data.order_had = 1; //--已拥有
|
} else {
|
skill_data.order_had = 2;
|
}
|
|
if (dic_hero_talent_skill_learn_redpoint[config.id]) {
|
skill_data.order_can = 1; //--可领悟
|
} else {
|
skill_data.order_can = 2;
|
}
|
|
self.skill_list.push(skill_data);
|
}
|
|
self.updateSkillList();
|
},
|
updateSkillList: function updateSkillList() {
|
var self = this;
|
|
if (self.list_view == null) {
|
var scroll_view_size = self.lay_scrollview.getContentSize();
|
var width = scroll_view_size.width / 4;
|
var list_setting = {
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: 0,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: 152,
|
// 单元的尺寸width 152
|
item_height: 158,
|
// 单元的尺寸height 158
|
row: 0,
|
// 行数,作用于水平滚动类型
|
col: 4,
|
// 列数,作用于垂直滚动类
|
need_dynamic: true
|
};
|
this.list_view = new CommonScrollViewSingle();
|
self.list_view.createScroll(self.lay_scrollview, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, list_setting, cc.v2(0, 0));
|
this.list_view.registerScriptHandlerSingle(this.createNewCell.bind(this), ScrollViewFuncType.CreateNewCell);
|
this.list_view.registerScriptHandlerSingle(this.numberOfCells.bind(this), ScrollViewFuncType.NumberOfCells);
|
this.list_view.registerScriptHandlerSingle(this.updateCellByIndex.bind(this), ScrollViewFuncType.UpdateCellByIndex);
|
this.list_view.registerScriptHandlerSingle(this.onCellTouched.bind(this), ScrollViewFuncType.OnCellTouched);
|
}
|
|
var sort_func = Utils.tableLowerSorter(["order_had", "order_can", "career_order", "order"]);
|
self.skill_list.sort(sort_func);
|
var select_index = null;
|
|
for (var i = 0; i < self.skill_list.length; ++i) {
|
var skill_data = self.skill_list[i];
|
|
if (select_index == null && skill_data.order_had != 1) {
|
select_index = i;
|
break;
|
}
|
} // --容错
|
|
|
if (select_index == null) {
|
select_index = 0;
|
}
|
|
self.list_view.reloadData(select_index);
|
},
|
createNewCell: function createNewCell(width, height) {
|
var cell = new cc.Node();
|
cell.setContentSize(cc.size(width, height));
|
cell.skill_item = new SkillItem();
|
cell.skill_item.setLeveStatus(false);
|
cell.skill_item.setPosition(0, 11);
|
cell.skill_item.setParent(cell);
|
cell.skill_item.addCallBack(function () {
|
this.onCellTouched(cell);
|
}.bind(this));
|
return cell;
|
},
|
//获取数据数量
|
numberOfCells: function numberOfCells() {
|
if (!this.skill_list) return 0;
|
return this.skill_list.length;
|
},
|
//更新cell(拖动的时候.刷新数据时候会执行次方法)
|
//cell :createNewCell的返回的对象
|
//inde :数据的索引
|
updateCellByIndex: function updateCellByIndex(cell, index) {
|
cell.index = index;
|
var skill_data = this.skill_list[index];
|
|
if (skill_data) {
|
var config = gdata("skill_data", "data_get_skill", skill_data.config.id);
|
|
if (config) {
|
cell.skill_item.setData(skill_data.config.id);
|
cell.skill_item.showName(true, config.name, null, null, true);
|
cell.skill_item.showRecommondIcon(false);
|
|
if (skill_data.order_had == 1) {
|
//--已学会
|
cell.skill_item.showRecommondIcon(true, 2);
|
} else if (skill_data.order_can == 1) {
|
// --已领悟
|
cell.skill_item.showRecommondIcon(true, 5);
|
} else if (skill_data.career_order != 1000) {
|
//--推荐
|
cell.skill_item.showRecommondIcon(true, 1);
|
}
|
|
if (this.select_skill_data && this.select_skill_data.config.id == skill_data.config.id) {
|
cell.skill_item.setSelected(true);
|
} else {
|
cell.skill_item.setSelected(false);
|
}
|
}
|
}
|
},
|
//点击cell .需要在 createNewCell 设置点击事件
|
onCellTouched: function onCellTouched(cell) {
|
var index = cell.index;
|
var skill_data = this.skill_list[index];
|
|
if (this.select_cell) {
|
this.select_cell.skill_item.setSelected(false);
|
}
|
|
this.select_cell = cell;
|
|
if (this.select_cell) {
|
this.select_cell.skill_item.setSelected(true);
|
}
|
|
this.showSkillInfo(skill_data);
|
},
|
showSkillInfo: function showSkillInfo(skill_data) {
|
if (!skill_data) return;
|
this.select_skill_data = skill_data;
|
var config = gdata("skill_data", "data_get_skill", skill_data.config.id);
|
|
if (config) {
|
if (this.skill_item) {
|
this.skill_item.setData(skill_data.config.id);
|
}
|
|
this.skill_name.string = config.name;
|
this.skill_desc_lb.string = config.des;
|
this.showCostInfo(skill_data);
|
}
|
},
|
showCostInfo: function showCostInfo(skill_data) {
|
if (!skill_data) return;
|
var self = this;
|
|
for (var i = 0; i < this.item_list.length; ++i) {
|
var item = this.item_list[i]; // item:setPositionX(10000) --相当于隐藏
|
}
|
|
var item_width = 120 + 10;
|
var start_x = -item_width * skill_data.config.expend.length / 2 + item_width * 0.5;
|
|
for (var _i = 0; _i < skill_data.config.expend.length; ++_i) {
|
var cost = skill_data.config.expend[_i];
|
var bid = cost[0];
|
var num = cost[1];
|
|
if (self.item_list[_i] == null) {
|
self.item_list[_i] = ItemsPool.getInstance().getItem("backpack_item");
|
|
self.item_list[_i].setDefaultTip(true, null, null, 1);
|
|
self.item_list[_i].name_size = 24;
|
self.item_list[_i].name_color = "#643223";
|
|
self.item_list[_i].setParent(self.cost_node);
|
|
self.item_list[_i].initConfig(false, 0.8, true, true, true);
|
|
self.item_list[_i].show();
|
}
|
|
var _x = start_x + _i * item_width;
|
|
self.item_list[_i].setPosition(_x, 0);
|
|
var item_config = Utils.getItemConfig(bid);
|
|
if (item_config) {
|
self.item_list[_i].setData({
|
bid: bid,
|
num: num
|
});
|
|
var have_num = BackpackController.getInstance().getModel().getItemNumByBid(item_config.id);
|
|
self.item_list[_i].setNeedNum(num, have_num);
|
}
|
}
|
},
|
// 关闭窗体回调,需.要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.list_view) {
|
if (this.list_view.cellList.length) {
|
for (var i = 0; i < this.list_view.cellList.length; ++i) {
|
var cell = this.list_view.cellList[i].cell;
|
|
if (cell && cell.skill_item) {
|
cell.skill_item.deleteMe();
|
cell.skill_item = null;
|
}
|
}
|
}
|
|
this.list_view.deleteMe();
|
this.list_view = null;
|
}
|
|
if (this.skill_item) {
|
this.skill_item.deleteMe();
|
this.skill_item = null;
|
}
|
|
for (var _i2 = 0; _i2 < this.item_list.length; ++_i2) {
|
this.item_list[_i2].deleteMe();
|
|
this.item_list[_i2] = null;
|
}
|
|
this.item_list = null;
|
this.ctrl.openHeroTalentSkillLearnPanel(false);
|
}
|
});
|
|
cc._RF.pop();
|