Files
fc/dev/project/library/imports/25/254f1c28-618d-46b3-97c7-57975dd5d65c.js
T

514 lines
18 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"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();