514 lines
18 KiB
JavaScript
514 lines
18 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '254f1woYY1Gs5fHV5dd1dZc', 'cmp.pvprank.wnd');
|
|
// Scripts/mod/pvp/rank/cmp.pvprank.wnd.js
|
|
|
|
"use strict";
|
|
|
|
var BridgeWindow = require("bridge.window");
|
|
var Mod = require("pvprank.mod");
|
|
var RoleController = require("role_controller");
|
|
var ElitematchEvent = require("elitematch_event");
|
|
var NXTogle = require("nx.fx.togs");
|
|
var FID = require("bridge.function.ids");
|
|
var HeroController = require("hero_controller");
|
|
var PartnerConst = require("partner_const");
|
|
var HeroConst = require("hero_const");
|
|
var TipsController = require("tips_controller");
|
|
cc.Class({
|
|
"extends": BridgeWindow,
|
|
properties: {
|
|
nodChallengeTime: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "挑戰次數顯示"
|
|
},
|
|
nodReachReward: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "達成獎勵"
|
|
},
|
|
nodMenu: {
|
|
"default": null,
|
|
type: NXTogle,
|
|
displayName: "賽制選擇"
|
|
},
|
|
nodOp: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "挑戰按鈕"
|
|
},
|
|
nodOpDiff: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "區別顯示"
|
|
},
|
|
nodMain: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "段位等信息顯示"
|
|
},
|
|
nodMatchInfo: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "段位賽賽程等信息顯示"
|
|
},
|
|
nodTask: {
|
|
"default": null,
|
|
type: cc.Node,
|
|
displayName: "段位賽任務相關"
|
|
}
|
|
},
|
|
onLoad: function onLoad() {
|
|
this.mod = Mod.getInstance();
|
|
if (!this.mod) {
|
|
this.delayClose();
|
|
return;
|
|
}
|
|
if (this.delNod) {
|
|
this.delNod.stop();
|
|
}
|
|
this.cfg = this.mod.getCfg();
|
|
this.awardnum = 0;
|
|
this.nodMenu.posTog = this.onTogMenu.bind(this);
|
|
this.first = 0;
|
|
// 视图监听
|
|
this.vbind([["rankMatch", this.freshInfo.bind(this)], ["rankOrder", this.freshTip.bind(this)], ["PvpRankTask", this.freshTask.bind(this)]]);
|
|
this.bindGEvent(ElitematchEvent.Elite_buy_count_Event, this.freshChallengeTime.bind(this));
|
|
this.bindGEvent(ElitematchEvent.Get_Elite_Enemy_Info_Event, this.freshMatch.bind(this));
|
|
this.bindGEvent(ElitematchEvent.Elite_Receive_Reward_Event, this.onfreshGet.bind(this));
|
|
this.bindGEvent(ElitematchEvent.Elite_Start_Time_Event, this.onfreshState.bind(this));
|
|
this.mod.sender24900();
|
|
this.mod.sender24905();
|
|
},
|
|
freshTask: function freshTask(_data) {
|
|
/****
|
|
{"win_num":0,"all_num":1,"list":
|
|
[{"id":6,"award_status":0},
|
|
{"id":5,"award_status":0},
|
|
{"id":4,"award_status":0},
|
|
{"id":3,"award_status":0},
|
|
{"id":2,"award_status":0},
|
|
{"id":1,"award_status":1}]}*/
|
|
var finish = 0;
|
|
var count = 0;
|
|
if (_data) {
|
|
if (nx.dt.arrNEmpty(_data.list)) {
|
|
var list = _data.list;
|
|
list.forEach(function (_item) {
|
|
if (_item.award_status == 2) {
|
|
finish++;
|
|
}
|
|
});
|
|
count = list.length;
|
|
}
|
|
}
|
|
var prog = count != 0 ? nx.text.format("PvpRScore", finish, count) : "";
|
|
nx.gui.setString(this.nodTask, "ico/prog", prog);
|
|
nx.gui.setActive(this.nodTask, "ico/finish", count == finish);
|
|
},
|
|
freshTip: function freshTip(_order) {
|
|
if (!_order) {
|
|
return;
|
|
}
|
|
var cfg = game.configs.arena_elite_war_order_data[_order.period];
|
|
/**當前的戰令數據{"period":2,"cur_day":2,"end_time":1714665600,"lev":2,"rmb_status":0,"win_count":6,"list":[]}**/
|
|
var list = _order.list;
|
|
var countd = 0;
|
|
if (nx.dt.arrNEmpty(list)) {
|
|
for (var i = 0; i < list.length; i++) {
|
|
var canget = list[i];
|
|
if (!canget) {
|
|
nx.gui.setActive(nod, "ffocus", false);
|
|
nx.gui.setActive(nod, "pfocus", false);
|
|
}
|
|
if (canget.award_status == 0 || canget.rmb_award_status == 0 && _order.rmb_status == 1) {
|
|
countd++;
|
|
}
|
|
}
|
|
} else {
|
|
for (var o in cfg) {
|
|
var ofg = cfg[o];
|
|
_order.win_count >= ofg.win_count || _order.win_count >= ofg.win_count && _order.rmb_status == 1 ? countd++ : count;
|
|
}
|
|
}
|
|
nx.gui.setActive(this, "panel/rt/order/tip", countd > 0);
|
|
},
|
|
freshInfo: function freshInfo(_data) {
|
|
if (nx.dt.objEmpty(_data) || !_data) {
|
|
return;
|
|
}
|
|
var info = _data;
|
|
this.infoo = info;
|
|
var self = this;
|
|
if (!info) {
|
|
return;
|
|
}
|
|
if (info.is_king == 0 || info.state != 3) {
|
|
this.nodMenu.togTo(0);
|
|
this.onTogMenu(0);
|
|
} else {
|
|
this.nodMenu.togTo(1);
|
|
this.onTogMenu(1);
|
|
}
|
|
this.daybuycount = info.day_buy_count;
|
|
var time = info.day_combat_count;
|
|
var buytime = info.day_buy_count;
|
|
this.maxbuytime = info.day_max_buy_count;
|
|
this.win = info.rank;
|
|
this.period = info.period;
|
|
var cfg = gdata(this.cfg[0], "data_elite_level");
|
|
this.cffg = cfg;
|
|
this.onfreshGet(info);
|
|
var cfggg = cfg[info.lev];
|
|
var ncfggg = cfg[info.lev + 1];
|
|
nx.gui.setString(this.nodMain, "rank/lev/txt", cfggg.name);
|
|
var path = this.mod.dealUI(info.lev);
|
|
nx.gui.setSpriteFrame(this.nodMain, "rank/ico", path);
|
|
var prog = nx.gui.find(this.nodMain, "rank/prog");
|
|
var delprog = nx.gui.find(this.nodMain, "rank/progdel");
|
|
var bar = nx.gui.find(prog, "bar");
|
|
var total = cfggg.need_exp;
|
|
var percent = info.score > 0 ? info.score / total : 0;
|
|
if (!cfg[info.lev + 1]) {
|
|
percent = 1;
|
|
}
|
|
var progcmp = nx.gui.getComponent(prog, "", cc.ProgressBar);
|
|
var progcmpsmall = nx.gui.getComponent(delprog, "", cc.ProgressBar);
|
|
var promote = info.promoted_info;
|
|
if (progcmp) {
|
|
var del = percent - progcmp.progress;
|
|
|
|
// delprog.position = cc.Vec2( ( cfggg.init_exp / total ) * progcmp.totalLength, delprog.position.y );
|
|
// this.scheduleOnce( ()=>{
|
|
// progcmp.progress += del;
|
|
// } )
|
|
|
|
// let doAnimin = function(){
|
|
// this.deltween = cc.tween( delprog )
|
|
// .to( 0.1, { position: cc.v2( ( cfggg.init_exp / total ) * progcmp.totalLength, delprog.position.y ) } )
|
|
// .delay( 0.1 )
|
|
// .start();
|
|
// }
|
|
progcmp.progress = percent;
|
|
// if( percent > 0 ){
|
|
// this.delNod = cc.tween( bar )
|
|
// .delay( 0.3 )
|
|
// .to( 0.2, { width: percent * progcmp.totalLength } )
|
|
// .call( ()=>{
|
|
// doAnimin();
|
|
// } )
|
|
// .delay( 0.1 )
|
|
// .call( ()=>{
|
|
// progcmp.progress = percent;
|
|
// } )
|
|
// .delay( 0.6 )
|
|
// .start();
|
|
// }else{
|
|
// progcmp.progress = percent;
|
|
|
|
// }
|
|
var desc = cfg[info.lev + 1] ? nx.text.format("PvpRNext", cfg[info.lev + 1].name) : nx.text.getKey("PvpRMax");
|
|
|
|
// let tip =
|
|
nx.gui.setString(this.nodMain, "rank/next/desc", desc);
|
|
nx.gui.setString(this.nodMain, "rank/next/nowprog", parseInt(percent * total) + "/" + total);
|
|
nx.gui.setActive(this.nodMain, "rank/next/nowprog", cfg[info.lev + 1]);
|
|
}
|
|
if (progcmpsmall) {
|
|
progcmpsmall.progress = cfggg.init_exp / total;
|
|
}
|
|
nx.gui.setActive(delprog, "delshow", cfggg.init_exp > 0 && cfg[info.lev + 1]);
|
|
nx.gui.setString(this.nodChallengeTime.children[1], "txt", time); // ( this.maxbuytime - buytime ) + "/" + this.maxbuytime
|
|
nx.gui.setString(this.nodChallengeTime.children[3], "txt", nx.text.getKey("PvpRankBuyNolimit"));
|
|
nx.gui.setActive(this.nodMain, "rank/next", nx.dt.arrEmpty(info.promoted_info));
|
|
nx.gui.setActive(this.nodMain, "rank/promote", nx.dt.arrNEmpty(info.promoted_info));
|
|
nx.gui.setActive(this.nodMain, "rank/prog", nx.dt.arrEmpty(info.promoted_info));
|
|
nx.gui.setActive(this.nodMain, "rank/progdel", nx.dt.arrEmpty(info.promoted_info));
|
|
// nx.gui.gocChildren( this.nodMain, "rank/promote/need", promote.length );
|
|
|
|
if (nx.dt.arrNEmpty(promote)) {
|
|
var ninfo = promote.shift();
|
|
var needcount = ninfo.count;
|
|
var _desc = nx.text.format("PvpRankLevPromote", ninfo.flag, needcount);
|
|
nx.gui.setString(this.nodMain, "rank/promote/desc", _desc);
|
|
}
|
|
var zfg = game.configs.arena_elite_data.data_zone[info.zone_id];
|
|
var start_date = nx.bridge.time.toLocalString(info.start_time, true, false);
|
|
var end_date = nx.bridge.time.toLocalString(info.end_time, true, false);
|
|
var statetime = nx.bridge.time.toNeedTime(info.end_time);
|
|
var racetip = nx.text.getKey("PvpRMatchState" + info.state);
|
|
var kingstarttime = nx.bridge.time.toNeedSeconds(info.state_time);
|
|
var nexttip = this.infoo.state != 3 ? nx.text.format("PvpRMatchRaceTip", kingstarttime, nx.text.getKey("PvpRMatchState" + (info.state + 1))) : "";
|
|
var kingstate = info.king == 1 ? nx.text.getKey("PvpRMatchState5") : nx.text.format("PvpRMatchState4", kingstarttime);
|
|
var timedesc = nx.text.format("PvpRMatchTime", this.period, zfg.name, start_date, end_date);
|
|
var racedesc = nx.text.format("PvpRMatchRace", racetip, nexttip, statetime);
|
|
|
|
// 賽程時間
|
|
nx.gui.setString(this.nodMatchInfo, "times/txt", timedesc);
|
|
// 比賽數據
|
|
nx.gui.setString(this.nodMatchInfo, "race/txt", racedesc);
|
|
// 自己的段位數據
|
|
nx.gui.setString(this.nodMatchInfo, "self/txt", info.is_king != 0 ? nx.text.getKey("PvpRMatchSelf") : nx.text.getKey("PvpRMatchSelfN"));
|
|
var rankinfo = info.rank == 0 ? nx.text.getKey("PvpRankNoInfo") : info.rank;
|
|
// 自己的排名數據
|
|
nx.gui.setString(this.nodMatchInfo, "rank/txt", nx.text.format("PvpRMatchSelfRank", rankinfo));
|
|
},
|
|
onfreshGet: function onfreshGet(_data) {
|
|
if (!_data) {
|
|
return;
|
|
}
|
|
this.awardnum = 0;
|
|
var info = _data;
|
|
var next = 0;
|
|
if (info.lev_reward) {
|
|
for (var i = 0; i < info.lev_reward.length; i++) {
|
|
var infos = info.lev_reward[i];
|
|
if (infos.flag == 1) {
|
|
this.awardnum = infos.lev;
|
|
next = infos.lev;
|
|
break;
|
|
} else if (infos.flag == 0) {
|
|
next = infos.lev;
|
|
break;
|
|
} else {
|
|
this.awardnum = -1;
|
|
}
|
|
}
|
|
}
|
|
var last = next == 0 ? this.cffg[22] : this.cffg[next];
|
|
var award = last.award;
|
|
nx.gui.setString(this.nodReachReward, "desc", nx.text.format("PvpRank", last.name));
|
|
var cmp = nx.gui.getComponent(this.nodReachReward, "rewards", "cmp.common.itemlayout");
|
|
if (cmp) {
|
|
cmp.rebuild(award);
|
|
}
|
|
nx.gui.setActive(this.nodReachReward, "get", this.awardnum > 0);
|
|
nx.gui.setActive(this.nodReachReward, "cannot", this.awardnum == 0);
|
|
nx.gui.setActive(this.nodReachReward, "max", this.awardnum == -1);
|
|
},
|
|
onfreshState: function onfreshState(_state) {
|
|
if (_state) {
|
|
var state = _state.state;
|
|
// let cmp =
|
|
}
|
|
},
|
|
|
|
onTouchGet: function onTouchGet() {
|
|
this.mod.sender24915(this.awardnum);
|
|
},
|
|
freshChallengeTime: function freshChallengeTime(_info) {
|
|
var info = _info;
|
|
if (!info) {
|
|
return;
|
|
}
|
|
this.daybuycount = info.day_buy_count;
|
|
var time = info.day_combat_count;
|
|
nx.gui.setString(this.nodChallengeTime.children[1], "txt", time);
|
|
nx.gui.setString(this.nodChallengeTime.children[3], "txt", nx.text.getKey("PvpRankBuyNolimit"));
|
|
},
|
|
freshMatch: function freshMatch(_data) {
|
|
var combat = _data.day_combat_count;
|
|
nx.gui.setString(this.nodChallengeTime.children[1], "txt", combat);
|
|
if (_data.is_match == 0) {
|
|
nx.bridge.createPanel("WndEliteRankMatch", {
|
|
type: this.gametype,
|
|
mod: this.mod,
|
|
state: this.infoo
|
|
});
|
|
}
|
|
// let rankstatus = _data
|
|
},
|
|
|
|
onTouchBuy: function onTouchBuy() {
|
|
var self = this;
|
|
var bfg = gdata(this.cfg[0], "data_elite_buy")[this.daybuycount + 1];
|
|
if (this.daybuycount + 1 > this.maxbuytime) {
|
|
nx.tbox("MonoBuyNoTime");
|
|
return;
|
|
}
|
|
var role = RoleController.getInstance().getRoleVo();
|
|
var cost = bfg.cost;
|
|
if (role.vip < bfg.need_vip) {
|
|
nx.tbox(nx.text.format("VIPBuyItemTip", bfg.need_vip));
|
|
return;
|
|
}
|
|
var tips = nx.text.format("PvpBuyRankTime", cost[0][0], cost[0][1]);
|
|
nx.mbox(tips, ['cancel', 'confirm'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == "confirm") {
|
|
// this.reqSummon( _args.type, _times, _args );
|
|
self.mod.sender24904();
|
|
}
|
|
});
|
|
},
|
|
onTogMenu: function onTogMenu(_idx) {
|
|
var index = parseInt(_idx);
|
|
this.onSetBtn(index);
|
|
},
|
|
onSetBtn: function onSetBtn(_type) {
|
|
// let desc = _type == 0 ? nx.text.getKey( "PvpRankType23" ) : nx.text.getKey( "PvpRankType24" );
|
|
this.gametype = _type + 1;
|
|
var opdesc = nx.text.getKey("RankMatchingBtn");
|
|
var count = 0;
|
|
if (this.infoo.state != 3 && this.gametype == 2) {
|
|
opdesc = nx.text.getKey("PvpRMatchState0");
|
|
count++;
|
|
}
|
|
if (this.infoo.state == 3 && this.gametype == 1 && this.infoo.is_king != 0) {
|
|
opdesc = nx.text.getKey("PvpRMatchState0");
|
|
count++;
|
|
}
|
|
if (this.infoo.state == 3 && this.gametype == 2 && this.infoo.is_king == 0) {
|
|
opdesc = nx.text.getKey("PvpRankOpTip");
|
|
count++;
|
|
}
|
|
nx.gui.setString(this.nodOp, "txt", nx.text.getKey("RankMatchingBtn"));
|
|
nx.gui.setString(this.nodOpDiff, "txt", opdesc);
|
|
nx.gui.setActive(this.nodOp, "", count == 0);
|
|
nx.gui.setActive(this.nodOpDiff, "", count != 0);
|
|
nx.gui.setActive(this.nodMain, "rank", _type == 0 || this.infoo.state == 3 && (_type == 1 || _type == 0));
|
|
nx.gui.setActive(this.nodMain, "noopen", _type == 1 && this.infoo.is_king == 0);
|
|
if (this.infoo) {
|
|
var kingdesc = this.infoo.state != 3 ? nx.text.getKey("PvpRankNoOpen") : this.infoo.is_king == 0 ? nx.text.getKey("PvpRankNoMatch") : "";
|
|
nx.gui.setString(this.nodMain, "noopen", kingdesc);
|
|
}
|
|
},
|
|
onTouchExchange: function onTouchExchange() {
|
|
nx.bridge.jumper.jump2Window(FID.EliteShop);
|
|
},
|
|
onTouchChallenge: function onTouchChallenge() {
|
|
this.mod.sender24901();
|
|
},
|
|
onTouchNoOpen: function onTouchNoOpen() {
|
|
if (this.infoo.state != 3) {
|
|
nx.tbox("PvpRankNoOpen");
|
|
return;
|
|
}
|
|
if (this.infoo.is_king == 0 && this.gametype != 1 || this.infoo.state == 3 && this.infoo.is_king == 0 && this.gametype != 1) {
|
|
nx.tbox("PvpRankNoMatch");
|
|
return;
|
|
}
|
|
if (this.infoo.state == 3 && this.infoo.is_king != 0 && this.gametype == 1) {
|
|
nx.tbox("PvpRankKingMatch");
|
|
return;
|
|
}
|
|
},
|
|
onTouchTop: function onTouchTop() {
|
|
var self = this;
|
|
nx.bridge.createPanel("WndEliteRankTop", {
|
|
cb: function cb() {
|
|
self.mod.sender24911(self.period, 1, 6, self.infoo.zone_id);
|
|
},
|
|
period: self.period,
|
|
mod: self.mod,
|
|
zone: self.infoo.zone_id
|
|
});
|
|
},
|
|
onTouchOrder: function onTouchOrder() {
|
|
var self = this;
|
|
this.mod.sender24952();
|
|
nx.bridge.createPanel("WndEliteRankOrder", {
|
|
period: this.period,
|
|
mod: this.mod
|
|
});
|
|
},
|
|
onTouchForm: function onTouchForm() {
|
|
var type = this.infoo.is_king != 0 && this.infoo.state == 3 ? 4 : 3;
|
|
HeroController.getInstance().openFormGoFightPanel(true, PartnerConst.Fun_Form.EliteMatch, {
|
|
need_hide_top: true,
|
|
state: type
|
|
}, HeroConst.FormShowType.eFormSave);
|
|
},
|
|
onTouchRankReward: function onTouchRankReward() {
|
|
var awards = [];
|
|
var fawards = [];
|
|
var lasts = [];
|
|
var cfgs = gdata(this.cfg[0], "data_elite_rank_reward");
|
|
var fcfgs = gdata(this.cfg[0], "data_elite_level");
|
|
// for (let i in cfgs ) {
|
|
// let info = cfgs[i];
|
|
// info.items = info.show_award;
|
|
|
|
// awards.push( info );
|
|
// }
|
|
|
|
for (var f in fcfgs) {
|
|
var reward = fcfgs[f];
|
|
var first = {};
|
|
var reww = {
|
|
items: reward.award_client,
|
|
name: nx.text.format("PvpLevReachTip", reward.name),
|
|
lev: reward.id,
|
|
path: this.mod.dealUI(reward.id)
|
|
};
|
|
if (reww) {
|
|
lasts.push(reww);
|
|
}
|
|
if (nx.dt.arrNEmpty(reward.lev_award)) {
|
|
first.items = reward.lev_award;
|
|
first.name = nx.text.format("FirstReachTip", reward.name);
|
|
first.lev = reward.id;
|
|
first.path = this.mod.dealUI(reward.id);
|
|
fawards.push(first);
|
|
// lasts.push( award_client )
|
|
}
|
|
}
|
|
|
|
nx.bridge.createPanel("WndEliteRankReward", {
|
|
ops: ["", "", "", "FirstReach", "PvpLevAward"],
|
|
cb: function cb() {
|
|
// ArenaController.getInstance().sender20221();
|
|
},
|
|
dfg: fawards,
|
|
sfg: lasts,
|
|
show: "FirstReach",
|
|
len: 5
|
|
});
|
|
},
|
|
onTouchRecords: function onTouchRecords() {
|
|
nx.bridge.createPanel("WndEliteRankRecords", {
|
|
type: this.gametype,
|
|
mod: this.mod
|
|
});
|
|
},
|
|
onTouchAchieve: function onTouchAchieve() {
|
|
var cfgs = gdata(this.cfg[0], "data_elite_level");
|
|
var arean = gdata(this.cfg[0], "data_zone");
|
|
nx.bridge.createPanel("WndEliteRankAchieve", {
|
|
period: this.period,
|
|
cfg: cfgs,
|
|
arean: arean,
|
|
mod: this.mod
|
|
});
|
|
},
|
|
onTouchRankInfo: function onTouchRankInfo() {
|
|
var TC = TipsController.getInstance();
|
|
var explain = gdata(this.cfg[0], "data_explain2")[1];
|
|
var explain2 = gdata(this.cfg[0], "data_explain2")[2];
|
|
var desc = explain.desc + "\n\n" + explain2.title + "\n" + explain2.desc;
|
|
TC.showTextPanel(explain.title, desc);
|
|
},
|
|
onTouchRankTask: function onTouchRankTask() {
|
|
this.mod.reqTaskStatus();
|
|
nx.bridge.createPanel("WndEliteRankTask");
|
|
},
|
|
onTouchPlotNoFun: function onTouchPlotNoFun(_nod) {
|
|
nx.gui.setActive(_nod, "", false);
|
|
},
|
|
onTouchHelp: function onTouchHelp() {
|
|
var TC = TipsController.getInstance();
|
|
var explain = "";
|
|
var cfg = gdata(this.cfg[0], "data_explain");
|
|
for (var i in cfg) {
|
|
var item = cfg[i];
|
|
explain += item.title + "\n\n" + item.desc + "\n\n";
|
|
}
|
|
// let explain = gdata( this.cfg[0], "data_explain2" )[1];
|
|
// let explain2 = gdata( this.cfg[0], "data_explain2" )[2];
|
|
// let desc = explain.desc + "\n\n" + explain2.title + "\n" + explain2.desc;
|
|
|
|
TC.showTextPanel(nx.text.getKey("ActHelpTitle"), explain);
|
|
}
|
|
});
|
|
|
|
cc._RF.pop(); |