"use strict";
|
cc._RF.push(module, 'c3d6eKseSVOEJk4l3Y/qbbw', 'rank_item');
|
// Scripts/mod/rank/view/rank_item.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: @syg.com(必填, 创建模块的人员)
|
// @description:
|
// 排行榜单元项
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var RankController = require("rank_controller");
|
|
var RankConstant = require("rank_constant");
|
|
var HeroVo = require("hero_vo");
|
|
var RoleController = require("role_controller");
|
|
var PlayerHead = require("playerhead");
|
|
var TimeTool = require("timetool");
|
|
var RankItem = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("rank", "rank_item");
|
this.ctrl = RankController.getInstance();
|
this.data = null;
|
this.width = 600;
|
this.height = 120;
|
this.index = arguments[0] || 1;
|
this.rank_type = RankConstant.RankType.drama;
|
this.rank_num = 0;
|
this.item_list = {};
|
this.node_list = []; //放入的是node
|
},
|
initPanel: function initPanel() {
|
this.background = this.seekChild("bg");
|
this.rank_icon = this.seekChild("rank_icon", cc.Sprite);
|
this.rank_index = this.seekChild("rank_index", cc.Label);
|
this.other_panel = this.seekChild("other_panel");
|
this.select = this.seekChild("select");
|
this.select.active = false;
|
this._btnPraise = this.seekChild("btnPraise");
|
this._btnPraise_btn = this.seekChild("btnPraise", cc.Button);
|
this._praise = this.seekChild(this._btnPraise, "img", cc.Sprite);
|
this._labelPraise = this.seekChild(this._btnPraise, "label", cc.Label);
|
this._btnPraise.active = false;
|
},
|
clickHandler: function clickHandler() {
|
if (this.call_fun) this.call_fun(this.vo);
|
},
|
setTouchFunc: function setTouchFunc(value) {
|
this.call_fun = value;
|
},
|
registerEvent: function registerEvent() {
|
this.background.on(cc.Node.EventType.TOUCH_START, function (event) {
|
var touches = event.getTouches();
|
this.touch_began = touches[0].getLocation();
|
}, this);
|
this.background.on(cc.Node.EventType.TOUCH_END, function (event) {
|
var touches = event.getTouches();
|
this.touch_end = touches[0].getLocation();
|
var is_click = true;
|
|
if (this.touch_began != null) {
|
is_click = Math.abs(this.touch_end.x - this.touch_began.x) <= 20 && Math.abs(this.touch_end.y - this.touch_began.y) <= 20;
|
}
|
|
if (is_click == true) {
|
Utils.playButtonSound(ButtonSound.Normal);
|
|
if (this.rank_type != RankConstant.RankType.union) {
|
this.openChatMessage();
|
}
|
}
|
}, this);
|
},
|
setData: function setData(data) {
|
this.data = data;
|
if (this.root_wnd) this.onShow();
|
},
|
onShow: function onShow() {
|
if (this.data == null) return;
|
this.index = this.data.idx || this.data.rank || 1;
|
this.rank_index.string = this.index;
|
|
if (this.index >= 1 && this.index <= 3) {
|
this.rank_index.node.active = false;
|
this.rank_icon.node.active = true;
|
this.rank_icon.node.setScale(0.7);
|
this.loadRes(PathTool.getCommonIcomPath("common_200" + this.index), function (sf_obj) {
|
this.rank_icon.spriteFrame = sf_obj;
|
}.bind(this));
|
} else {
|
this.rank_index.node.active = true;
|
this.rank_icon.node.active = false;
|
}
|
|
this.updateDataByRankType();
|
},
|
setExtendData: function setExtendData(data) {
|
if (!data) return;
|
this.rank_type = data.rank_type || RankConstant.RankType.drama;
|
this.is_cluster = data.is_cluster || false;
|
},
|
updateDataByRankType: function updateDataByRankType() {
|
if (!this.data) return;
|
|
for (var i in this.item_list) {
|
this.item_list[i].setVisible(false);
|
}
|
|
this.other_panel.removeAllChildren();
|
var role_name = this.data.name;
|
|
if (this.is_cluster == true) {
|
role_name = Utils.transformNameByServ(this.data.name, this.data.srv_id);
|
}
|
|
if (this.rank_type != RankConstant.RankType.union) {
|
this.player_head = this.createPlayerHead(105, 60);
|
var face_id = this.data.face_id || this.data.face;
|
var avatar_bid = this.data.avatar_bid;
|
this.player_head.setFrameRes(avatar_bid);
|
this.player_head.setHeadRes(face_id);
|
this.player_head.setLev(this.data.lev);
|
} //生成的节点之类的都push进 this.node_list这里,统一destroy
|
|
|
if (this.rank_type == RankConstant.RankType.power || this.rank_type == RankConstant.RankType.action_power) {
|
//名字
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(label);
|
label.string = role_name; //战力
|
|
var label = Utils.createRichLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), cc.v2(0.5, 0.5), cc.v2(480, this.height / 2), 0, 500);
|
this.node_list.push(label);
|
this.other_panel.addChild(label.node);
|
var power = this.data.val1 || 0;
|
var res = PathTool.getCommonIcomPath('common_90002');
|
label.string = cc.js.formatStr("<img src='%s' /> %s", "common_90002", power);
|
this.loadRes(res, function (label, resObject) {
|
label.addSpriteFrame(resObject);
|
}.bind(this, label));
|
} else if (this.rank_type == RankConstant.RankType.union) {
|
var step = this.data.step || 0;
|
step = Math.max(step, 1);
|
step = Math.min(step, 11); //名字
|
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 204, 80, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
label.string = role_name; //宗主名字
|
|
var label = Utils.createLabel(20, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), null, 204, 40, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
label.string = Utils.TI18N("会长:") + (this.data.leader_name || ""); //等级
|
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 342, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
label.string = this.data.lev || 313; //人数
|
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 425, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
var num1 = this.data.members_num || 0;
|
var num2 = this.data.members_max || 0;
|
label.string = cc.js.formatStr("%s/%s", num1, num2); //战力
|
|
var label = Utils.createRichLabel(24, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), cc.v2(0.5, 0.5), cc.v2(525, this.height / 2), 0, 500);
|
this.node_list.push(label);
|
this.other_panel.addChild(label.node);
|
label.string = String(this.data.power) || 0;
|
} else if (this.rank_type == RankConstant.RankType.union_boss) {
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 210, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(label);
|
label.string = role_name; //dps
|
|
var label = Utils.createRichLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), cc.v2(0.5, 0.5), cc.v2(505, this.height / 2 + 25), 0, 500);
|
this.node_list.push(label);
|
this.other_panel.addChild(label.node);
|
var all_dps = this.data.all_dps || 0;
|
label.string = String(all_dps); //增加点赞功能
|
|
this.addPraise(this.data);
|
} else if (this.rank_type == RankConstant.RankType.tower || this.rank_type == RankConstant.RankType.action_tower) {
|
// 名字
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 210, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(label);
|
label.string = role_name; // 层数
|
|
var label = Utils.createLabel(24, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), null, 405, 61, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(label);
|
label.string = this.data.val1 || 0; // 通关时间
|
|
var label = Utils.createLabel(24, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 500, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(label);
|
var num = this.data.val2 || 0;
|
label.string = TimeTool.getTimeMs(num, true);
|
} else if (this.rank_type == RankConstant.RankType.action_star || this.rank_type == RankConstant.RankType.star_power || this.rank_type == RankConstant.RankType.hallows_power || this.rank_type == RankConstant.RankType.treasure || this.rank_type == RankConstant.RankType.colors_tone || this.rank_type == RankConstant.RankType.gemstone || this.rank_type == RankConstant.RankType.pointglod || this.rank_type == RankConstant.RankType.speed_fight || this.rank_type == RankConstant.RankType.voyage || this.rank_type == RankConstant.RankType.hero_expedit) {
|
// --名字
|
var _name = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
|
this.node_list.push(_name);
|
_name.string = role_name; // --层数
|
|
var _num = Utils.createLabel(24, new cc.Color(169, 95, 15, 255), null, 455, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
|
this.node_list.push(_num);
|
_num.string = this.data.val1 || 0;
|
} else if (this.rank_type == RankConstant.RankType.guild_war) {
|
// --名字
|
var name = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
this.node_list.push(name);
|
name.string = role_name; //星数
|
|
var label = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 402, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
label.string = this.data.star || 0; //战绩
|
|
var score = Utils.createLabel(24, new cc.Color(169, 95, 15, 255), null, 525, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(score);
|
score.string = this.data.war_score || 0;
|
} else if (this.rank_type == RankConstant.RankType.drama || this.rank_type == RankConstant.RankType.action_drama) {
|
// --名字
|
var _name2 = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
|
this.node_list.push(_name2);
|
_name2.string = role_name; // --装备评分
|
|
var _label = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 495, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
|
this.node_list.push(_label);
|
var config = gdata("dungeon_data", "data_drama_dungeon_info", this.data.val1);
|
|
if (config) {
|
var str = config.name;
|
_label.string = str;
|
}
|
} else if (this.rank_type == RankConstant.RankType.arena || this.rank_type == RankConstant.RankType.action_arena) {
|
// --名字
|
var _name3 = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
|
this.node_list.push(_name3);
|
_name3.string = role_name; // 装备评分
|
|
var label = Utils.createRichLabel(24, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), cc.v2(0.5, 0.5), cc.v2(480, this.height / 2), 0, 500);
|
this.node_list.push(label);
|
this.other_panel.addChild(label.node);
|
var score = this.data.score || this.data.val1 || 0;
|
var res = PathTool.getItemRes('8');
|
label.string = cc.js.formatStr("<img src='%s' /> %s", "8", score);
|
this.loadRes(res, function (label, resObject) {
|
label.addSpriteFrame(resObject);
|
}.bind(this, label));
|
} else if (this.rank_type == RankConstant.RankType.endless || this.rank_type == RankConstant.RankType.endless_old || this.rank_type == RankConstant.RankType.adventure || this.rank_type == RankConstant.RankType.adventure_muster) {
|
// --名字
|
var _name4 = Utils.createLabel(24, new cc.Color(104, 69, 42, 255), null, 198, this.height / 2, "", this.other_panel, 0, cc.v2(0, 0.5));
|
|
this.node_list.push(_name4);
|
_name4.string = role_name; // --层数
|
|
var _num2 = Utils.createLabel(24, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), null, 403, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
|
this.node_list.push(_num2);
|
_num2.string = this.data.val1 || 0; //战力
|
|
var label = Utils.createLabel(24, new cc.Color(0xa9, 0x5f, 0x0f, 0xff), null, 535, this.height / 2, "", this.other_panel, 0, cc.v2(0.5, 0.5));
|
this.node_list.push(label);
|
label.string = this.data.val2 || 0;
|
}
|
},
|
//个人伤害排行------------start
|
addCallBack: function addCallBack(call_back) {
|
this.call_back = call_back;
|
},
|
//增加点赞功能
|
addPraise: function addPraise(data) {
|
if (!this._btnPraise.active) this._btnPraise.active = true;
|
Utils.setGreyButton(this._btnPraise_btn, false);
|
|
this._praise.setState(cc.Sprite.State.NORMAL);
|
|
if (this.index <= 3) {
|
this._btnPraise.on(cc.Node.EventType.TOUCH_END, function () {
|
Utils.playButtonSound(1);
|
if (this.index > 3) return;
|
|
if (this.call_back != null) {
|
this.call_back(this);
|
}
|
|
RoleController.getInstance().sender10316(data.r_rid, data.r_srvid, this.index, 2);
|
}, this);
|
} else {
|
this._praise.setState(cc.Sprite.State.GRAY);
|
|
Utils.setGreyButton(this._btnPraise_btn, true);
|
}
|
|
this._labelPraise.string = data.worship; //不可膜拜
|
|
if (data.worship_status == 1) {
|
this._praise.setState(cc.Sprite.State.GRAY);
|
|
Utils.setGreyButton(this._btnPraise_btn, true);
|
}
|
},
|
updateWorshipStatus: function updateWorshipStatus() {
|
if (this.data != null) {
|
this.data.worship = this.data.worship + 1;
|
this.data.worship_status = 1;
|
this._labelPraise.string = this.data.worship;
|
|
this._praise.setState(cc.Sprite.State.GRAY);
|
|
Utils.setGreyButton(this._btnPraise_btn, true);
|
}
|
},
|
//个人伤害排行------------end
|
//打开玩家信息
|
openChatMessage: function openChatMessage() {
|
var roleVo = RoleController.getInstance().getRoleVo();
|
var rid = this.data.rid || this.data.r_rid;
|
var srv_id = this.data.srv_id || this.data.r_srvid;
|
|
if (rid && srv_id && roleVo.rid == rid && roleVo.srv_id == srv_id) {
|
message(Utils.TI18N("你不认识你自己了么?"));
|
return;
|
}
|
|
if (this.data.is_robot && this.data.is_robot == 1) {
|
message(Utils.TI18N("神秘人太高冷,不给查看"));
|
return;
|
}
|
|
if (this.data) {
|
var vo = {
|
rid: rid,
|
srv_id: srv_id
|
};
|
|
require("chat_controller").getInstance().openFriendInfo(vo, cc.v2(0, 0));
|
}
|
},
|
//创建一个英雄数据
|
createPartnerVo: function createPartnerVo() {
|
var vo = new HeroVo();
|
var data = {
|
partner_id: this.data.pid,
|
bid: this.data.pbid,
|
lev: this.data.plev,
|
star: this.data.pstar
|
};
|
vo.updateHeroVo(data);
|
return vo;
|
},
|
//创建玩家头像
|
createPlayerHead: function createPlayerHead(x, y) {
|
x = x + 43;
|
var player_head = new PlayerHead();
|
player_head.setParent(this.other_panel);
|
player_head.show();
|
player_head.setScale(0.8);
|
player_head.setPosition(x, y);
|
return player_head;
|
},
|
setSelected: function setSelected(bool) {
|
this.select.active = bool;
|
|
if (bool == true) {
|
var fadein = cc.fadeIn(0.7);
|
var fadeout = cc.fadeOut(0.7);
|
this.select.runAction(cc.repeatForever(cc.sequence(fadein, fadeout)));
|
} else {
|
this.select.stopAllActions();
|
}
|
},
|
isHaveData: function isHaveData() {
|
if (this.vo) {
|
return true;
|
}
|
|
return false;
|
},
|
reset: function reset() {
|
if (this.num) this.num.setVisible(false);
|
this.vo = null;
|
},
|
getData: function getData() {
|
return this.vo;
|
},
|
onDelete: function onDelete() {
|
if (this.item_list) {
|
for (var i in this.item_list) {
|
var v = this.item_list[i];
|
v.deleteMe();
|
v = null;
|
}
|
|
this.item_list = null;
|
}
|
|
if (this.node_list) {
|
for (var i in this.node_list) {
|
var v = this.node_list[i];
|
|
if (v instanceof cc.Node) {
|
v.destroy();
|
v = null;
|
} else {
|
v.node.destroy();
|
v = null;
|
}
|
}
|
|
this.node_list = null;
|
}
|
|
if (this.player_head) {
|
this.player_head.deleteMe();
|
this.player_head = null;
|
}
|
}
|
});
|
module.exports = RankItem;
|
|
cc._RF.pop();
|