"use strict";
cc._RF.push(module, '7026eDDwwdMEYbAb/lu0Q6I', 'role_body_panel');
// Scripts/mod/role/view/role_body_panel.js
"use strict";
// --------------------------------------------------------------------
// @author: whjing2012@syg.com(必填, 创建模块的人员)
// @description:
// 冒险形象
//
Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
var RoleController = require("role_controller");
var RoleHeadItem = require("role_head_item");
var BaseRole = require("baserole");
var BackpackController = require("backpack_controller");
var CommonScrollView = require("common_scrollview");
var HeroController = require("hero_controller");
var PartnerCalculate = require("partner_calculate");
var RoleBodyPanel = cc.Class({
"extends": BasePanel,
ctor: function ctor() {
this.prefabPath = PathTool.getPrefabPath("roleinfo", "role_body_panel");
this.x = 0; //必须设置的两个变量
this.y = 0;
this.data = null;
this.has_list = {};
this.item_list = {};
this.select_bid = 0;
},
initPanel: function initPanel() {
this.setPosition(0, 0);
this.scroll_con = this.root_wnd.getChildByName("scroll_con");
this.ok_btn = this.root_wnd.getChildByName("ok_btn");
this.ok_label = this.ok_btn.getChildByName("Label").getComponent(cc.Label);
this.body_con = this.root_wnd.getChildByName("body_con");
this.attr_desc = this.root_wnd.getChildByName("attr_con").getChildByName("desc").getComponent(cc.RichText);
this.cond_desc = this.root_wnd.getChildByName("cond_con").getChildByName("desc").getComponent(cc.RichText);
this.spine = new BaseRole();
this.spine.setParent(this.body_con);
this.spine.node.setPosition(0, 10);
this.spine.scale = 0.6;
var setting = {
item_class: RoleHeadItem,
// 单元类
start_x: 0,
// 第一个单元的X起点
space_x: 4,
// x方向的间隔
start_y: 0,
// 第一个单元的Y起点
space_y: 0,
// y方向的间隔
item_width: 125,
// 单元的尺寸width
item_height: 145,
// 单元的尺寸height
row: 0,
// 行数,作用于水平滚动类型
col: 2,
// 列数,作用于垂直滚动类型
once_num: 4,
need_dynamic: true
};
var scroll_view_size = cc.size(250, 490);
this.item_scrollview = new CommonScrollView();
this.item_scrollview.createScroll(this.scroll_con, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5));
RoleController.getInstance().send10345();
},
registerEvent: function registerEvent() {
this.ok_btn.on(cc.Node.EventType.TOUCH_END, function () {
if (this.select_item) {
if (this.select_item.data.status == 1) {
RoleController.getInstance().send10346(this.select_bid);
} else if (this.cond_msg) {
message(this.cond_msg);
} else {
RoleController.getInstance().send10347(this.select_bid);
}
}
}, this);
this.roleVo = RoleController.getInstance().getRoleVo();
if (!this.role_update_evt) {
var RoleEvent = require("role_event");
this.role_update_evt = this.roleVo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, val) {
if (key == "look_id") {
this.updateList();
}
}, this);
this.addGlobalEvent(RoleEvent.GetModelList, function (data) {
this.updateList(data.list);
});
}
},
onShow: function onShow() {},
updateList: function updateList(has_list) {
if (has_list) {
this.has_list = this.has_list || {};
for (var k = 0; k < has_list.length; ++k) {
this.has_list[has_list[k].id] = 1;
}
} // var list = [];
// for (var k in Config.looks_data.data_data) {
// var v = Config.looks_data.data_data[k];
// if (v.id == this.roleVo.look_id) {
// list.push({ bid: v.id, face_id: v.partner_id, name: v.name, use: 1, status: 1, sort: 1100000 - v.id });
// } else if (this.has_list[v.id]) {
// list.push({ bid: v.id, face_id: v.partner_id, name: v.name, use: 0, status: 1, sort: 100000 - v.id });
// } else {
// list.push({ bid: v.id, face_id: v.partner_id, name: v.name, use: 0, status: 0, sort: -v.id });
// }
// }
// list.sort(Utils.tableCommonSorter([["use", true], ["show", true], ["id", true]]));
if (this.list == null) {
this.list = [];
for (var _k in Config.looks_data.data_data) {
var v = Config.looks_data.data_data[_k];
var data = {};
data.tips = v.tips;
data.bid = v.id;
data.skin_id = v.skin_id;
data.face_id = v.partner_id;
if (data.skin_id != 0) {
var config = Config.partner_skin_data.data_skin_info[data.skin_id];
if (config) {
data.face_id = config.head_id;
}
}
data.name = v.name;
if (this.has_list) {
if (this.has_list[v.id]) {
data.status = 1; //拥有
} else {
data.status = 0; //未拥有
}
} else {
data.status = 0;
}
if (this.roleVo.look_id == v.id) {
data.use = 1;
} else {
data.use = 0;
}
this.list.push(data);
}
} else {
for (var i in this.list) {
var _data = this.list[i];
if (this.roleVo.look_id == _data.bid) {
_data.use = 1;
} else {
_data.use = 0;
}
}
} // this.list.sort(Utils.tableUpperSorter(["use", "status", "bid"]));
this.list.sort(Utils.tableCommonSorter([["use", true], ["status", true], ["bid", true]]));
if (this.select_bid == 0) {
this.select_bid = this.roleVo.look_id;
}
this.item_scrollview.setData(this.list, function (cell) {
if (cell.data.status != 1) {
message(Utils.TI18N("该形象未解锁"));
}
this.select_bid = cell.data.bid;
if (this.select_item) {
this.select_item.setSelected(false);
}
this.select_item = cell;
this.setSelected(cell);
}.bind(this), {
resObject: this.face_res_object,
select_func: this.setSelected.bind(this)
});
},
setSelected: function setSelected(item) {
if (item) {
item.setSelected(this.select_bid == item.data.bid);
if (this.select_item == null) {
this.select_item = item;
}
}
if (this.select_bid != item.data.bid) return;
this.spine.setData(BaseRole.type.role, this.select_bid, PlayerAction.show, true, 0.6, {
skin_id: item.data.skin_id
});
var config = Config.looks_data.data_data[this.select_bid];
this.attr_desc.string = this.attrString(config);
this.cond_desc.string = this.condString(config);
if (this.select_item.data.status == 1) {
this.ok_label.string = Utils.TI18N("更 换");
} else {
this.ok_label.string = Utils.TI18N("激 活");
}
},
attrString: function attrString(config) {
var attr_list = config.attr;
if (attr_list.length == 0) {
return Utils.TI18N("当前形象无属性加成");
}
var attr_desc = "";
for (var i = 0, n = attr_list.length; i < n; i++) {
var attr = attr_list[i];
if (i > 0 && i % 2 == 0) {
attr_desc += "
";
} else if (i > 0) {
attr_desc += " ";
} // attr_desc += cc.js.formatStr("%s: %d", Config.attr_data.data_key_to_name[attr[0]], attr[1]);
if (PartnerCalculate.isShowPerByStr(attr[0]) == true) {
attr_desc += cc.js.formatStr("%s: %d%", Config.attr_data.data_key_to_name[attr[0]], attr[1] * 0.1);
} else {
attr_desc += cc.js.formatStr("%s: %d", Config.attr_data.data_key_to_name[attr[0]], attr[1]);
}
}
return "" + attr_desc + "";
},
condString: function condString(config) {
this.cond_msg = null;
if (this.select_item.data.status == 1) {
return Utils.TI18N("当前形象已解锁");
}
var cond_desc = [];
if (config.star > 0) {
// cond_desc.push(cc.js.formatStr("◆ %s达到%d星 已达成", config.name, config.star));
this.cond_msg = cc.js.formatStr(Utils.TI18N("%s未达到%d星"), config.name, config.star);
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ %s达到%d星 未达成"), config.name, config.star));
}
if (config.skin_id) {
var status = HeroController.getInstance().getModel().isUnlockHeroSkin(config.skin_id);
if (status) {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 解锁皮肤%s 已达成"), config.name));
} else {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 解锁皮肤%s 未达成"), config.name));
}
}
if (config.lev > 1) {
if (this.roleVo.lev >= config.lev) {
this.cond_msg = this.cond_msg || Utils.TI18N("等级不足");
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 玩家等级达到%d 已达成"), config.lev));
} else {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 玩家等级达到%d 未达成"), config.lev));
}
}
if (config.vip_lev > 0) {
if (this.roleVo.vip_lev >= config.vip_lev) {
this.cond_msg = this.cond_msg || Utils.TI18N("VIP等级不足");
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 玩家VIP等级达到%d 已达成"), config.vip_lev));
} else {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 玩家VIP等级达到%d 未达成"), config.vip_lev));
}
}
for (var i = 0, n = config.expend; i < n; i++) {
var loss = config.expend[i];
var itemdata = Utils.getItemConfig(loss[0]);
if (BackpackController.getInstance().getModel().getBackPackItemNumByBid(loss[0]) >= loss[1]) {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 拥有%s个%s 已达成"), itemdata.name, loss[1]));
} else {
cond_desc.push(cc.js.formatStr(Utils.TI18N("◆ 拥有%s个%s 未达成"), itemdata.name, loss[1]));
}
}
return "" + cond_desc.join("
") + "";
},
onHide: function onHide() {},
onDelete: function onDelete() {
if (this.role_update_evt) {
this.roleVo.unbind(this.role_update_evt);
}
if (this.item_scrollview) {
this.item_scrollview.DeleteMe();
}
this.item_scrollview = null;
}
});
module.exports = RoleBodyPanel;
cc._RF.pop();