Files
fc/dev/project/library/imports/2d/2da2a373-af89-4293-b684-9eb5a4e90f5a.js
T
2026-05-24 10:21:26 +08:00

342 lines
15 KiB
JavaScript

"use strict";
cc._RF.push(module, '2da2aNzr4lCk7aEnrWk6Q9a', 'cmp.cchampion.guess.page');
// Scripts/mod/pvp/crosschampion/cmp/cmp.cchampion.guess.page.js
"use strict";
var MenuPage = require("cmp.com.menu.page");
var ArenaEvent = require("arena_event");
var CrossChampionController = require("crosschampion_controller");
var ItemLay = require("cmp.common.itemlayout");
var HeroController = require("hero_controller");
var data2Icon = require("bridge.utils.item");
var ArenaConst = require("arena_const");
var BattleController = require("battle_controller");
var TipsController = require("tips_controller");
cc.Class({
"extends": MenuPage,
properties: {
nodLeft: {
"default": null,
type: cc.Node
},
nodRight: {
"default": null,
type: cc.Node
},
nodMyBet: {
"default": null,
type: cc.Node
},
nodLParts: {
"default": null,
type: ItemLay
},
nodRParts: {
"default": null,
type: ItemLay
},
nodLCamp: {
"default": null,
type: cc.Sprite
},
nodRCamp: {
"default": null,
type: cc.Sprite
},
nodStage: {
"default": null,
type: cc.Node
},
nodReplay: {
"default": null,
type: cc.Node
},
nodOps: {
"default": null,
type: cc.Node
}
},
onEnable: function onEnable() {
// 视图监听
this.vbind([["CChampion", this.freshMyRace.bind(this)]]);
this.bindGEvent(ArenaEvent.UpdateGuessMatchInfoEvent, this.freshGuessInfo.bind(this));
this.bindGEvent(ArenaEvent.UpdateBetMatchValueEvent, this.freshRateChange.bind(this));
// this.bindGEvent( ArenaEvent.UpdateMylogListEvent, this.openGuessInfo.bind( this ));
// this.nodMenus.posTog = this.onTogMenu.bind( this );
this.setEmpty();
},
// 隐藏
onDisable: function onDisable() {
// 视图监听解除
this.vunbind();
// 事件监听释放
this.unbindGEvents();
if (this.tween) {
this.tween.stop();
}
},
// 重载:关闭前
onPreClosed: function onPreClosed() {},
setEmpty: function setEmpty() {
var cct = CrossChampionController.getInstance();
var cct_model = cct.getModel();
cct.sender26200();
// let baseinfo = cct_model.getBaseInfo() ;
// this.freshMyRace( baseinfo );
this.tween = cc.tween(this.node).to(0.3, cct.sender26203()).delay(1).to(0.3, cct.sender26205()).start();
},
freshMyRace: function freshMyRace(_race) {
if (!_race) {
return;
}
var baseInfo = _race;
this.stepinfo = baseInfo;
var desc = "";
var show = baseInfo.step == ArenaConst.champion_step.unopened;
if (show) {
desc = nx.text.getKey("champion_str34"); // 冠軍賽未開啓
}
// nx.gui.setActive( this.nodEmpty, "bg/stime", true );
// nx.gui.setString( this.nodEmpty, "bg/state", desc );
// let nod = nx.gui.find( this.nodEmpty, "bg" );
// if( ( baseInfo.start_time - Math.floor( cc.sys.now() / 1000 ) ) >= 0 ){
// nx.gui.setCdTxt( nod, "stime/time", ( baseInfo.start_time - Math.floor( cc.sys.now() / 1000 ) ), ()=>{
// nx.gui.setActive( nod, "stime", false );
// } );
// }
var rdesc = nx.text.getKey("champion_str" + (18 + baseInfo.round_status));
nx.gui.setString(this.nodStage, "stage", rdesc);
if (baseInfo.round_status == ArenaConst.champion_round_status.fight || baseInfo.round_status == ArenaConst.champion_round_status.guess || baseInfo.round_status == ArenaConst.champion_round_status.prepare) {
CrossChampionController.getInstance().sender26203();
nx.gui.setCdTxt(this.nodStage, "txt", baseInfo.round_status_time, function () {});
} else {
if (baseInfo.round_status == 0) {
nx.gui.setCdTxt(this.nodStage, "txt", baseInfo.start_time - Math.floor(cc.sys.now() / 1000), function () {
CrossChampionController.getInstance().sender26203();
});
} else {
nx.gui.setCdTxt(this.nodStage, "txt", baseInfo.round_status_time, function () {
CrossChampionController.getInstance().sender26203();
});
}
}
nx.gui.setActive(this.nodStage, "", baseInfo.step_status != ArenaConst.champion_step_status.over);
var lcmp = nx.gui.getComponent(this.nodOps, "lop", cc.Button);
var rcmp = nx.gui.getComponent(this.nodOps, "rop", cc.Button);
if (lcmp) {
lcmp.interactable = baseInfo.round_status == ArenaConst.champion_round_status.guess;
}
if (rcmp) {
rcmp.interactable = baseInfo.round_status == ArenaConst.champion_round_status.guess;
}
this.canBet = baseInfo.round_status == ArenaConst.champion_round_status.guess;
},
// 根据位置获取敌方英雄数据
getRoleDataByIndex: function getRoleDataByIndex(index, role_list) {
for (var k in role_list) {
var v = role_list[k];
if (v.pos == index) {
return v;
}
}
},
dealPartners: function dealPartners(_ctype, _plst, _left) {
var formation_config = gdata("formation_data", "data_form_data", _ctype);
var partner_ids = [];
var role_datas = [];
for (var i = 1; i <= 9; i++) {
var role_data = null;
var key = null;
//阵法和实际位置的映射转换
for (var j = 0; j < formation_config.pos.length; j++) {
var pos_val = formation_config.pos[j];
if (pos_val[1] == i) {
key = pos_val[0];
}
}
var role_info = this.getRoleDataByIndex(key, _plst);
//位置上没有英雄就选择置空
var role_vo = null;
if (role_info) {
if (_left) {
role_data = HeroController.getInstance().getModel().getHeroInfoByBidStar(role_info.bid, role_info.star);
partner_ids.push(role_data);
role_vo = role_data;
} else {
role_info.is_master = true;
role_info.rid = role_info.rid || 0;
role_info.srv_id = role_info.srv_id || "";
role_vo = this.createHeroVo(role_info);
}
}
role_datas.push(role_vo);
}
return role_datas;
},
createHeroVo: function createHeroVo(role_data) {
role_data.updateHeroVo = "";
var vof = data2Icon.data2Icon(role_data.bid);
vof.level = role_data.lev;
vof.stars = role_data.star;
var vo = data2Icon.data2Icon(vof);
// vo.bid = role_data.bid;
// vo.level = role_data.lev;
// // vo.partner_id = role_data.partner_id;
// // vo.rid = role_data.rid;
// // vo.srv_id = vo.srv_id;
// vo.stars = vo.star;
return vo;
},
freshGuessInfo: function freshGuessInfo(_guessdata) {
var guessinfo = _guessdata;
// console.log( "竞猜相关数据" + JSON.stringify( _guessdata ) );
this.race = _guessdata;
var acamptype = guessinfo.a_formation_type; // 陣型顯示
var bcamptype = guessinfo.b_formation_type; // 陣型顯示
var ap_list = guessinfo.a_plist; // 夥伴列表
var bp_list = guessinfo.b_plist; // 夥伴列表
var aframe = guessinfo.a_avatar_id == 0 ? 1000 : guessinfo.a_avatar_id; // 頭像框
var bframe = guessinfo.b_avatar_id == 0 ? 1000 : guessinfo.b_avatar_id; // 頭像框
var apower = guessinfo.a_power; // 戰力
var bpower = guessinfo.b_power; // 戰力
var arole = this.dealPartners(acamptype, ap_list);
this.nodLParts.rebuild(arole);
var path = "prefab/pvp/ui";
var aformation_config = gdata("formation_data", "data_form_data", acamptype);
var apaht = cc.path.join(path, "teamform_" + aformation_config.order);
nx.gui.setSpriteFrame(this.nodLCamp, "", apaht);
var cmp = nx.gui.getComponent(this.nodLeft, "bg/info/avatar", "cmp.common.header");
if (cmp) {
cmp.setHeadRes(guessinfo.a_face);
cmp.setFrameRes(aframe);
}
nx.gui.setString(this.nodLeft, "bg/info/power", apower);
nx.gui.setString(this.nodLeft, "bg/info/lev", nx.text.format("LvNumber", guessinfo.a_lev));
nx.gui.setString(this.nodLeft, "bg/info/nbg/server", guessinfo.a_srv_id);
nx.gui.setString(this.nodLeft, "bg/info/nbg/name", guessinfo.a_name);
var bformation_config = gdata("formation_data", "data_form_data", bcamptype);
var bpaht = cc.path.join(path, "teamform_" + bformation_config.order);
nx.gui.setSpriteFrame(this.nodRCamp, "", bpaht);
// nx.gui.setSpriteFrame( this.nodRight, "bg/info/ctype", cc.path.join( path, "teamform_" + bcamptype ) );
var bcmp = nx.gui.getComponent(this.nodRight, "bg/info/avatar", "cmp.common.header");
if (bcmp) {
bcmp.setHeadRes(guessinfo.b_face);
bcmp.setFrameRes(bframe);
}
nx.gui.setString(this.nodRight, "bg/info/power", bpower);
nx.gui.setString(this.nodRight, "bg/info/lev", nx.text.format("LvNumber", guessinfo.b_lev));
nx.gui.setString(this.nodRight, "bg/info/name", guessinfo.b_name);
var brole = this.dealPartners(bcamptype, bp_list);
// if( this.nodLeftParts ){
this.nodRParts.rebuild(brole);
// }
/*****
* {"bet_type":0,"bet_val":0,"a_bet_ratio":1750,"b_bet_ratio":1750,"step":8,"round":3,"group":0,"a_bet":0,"a_rid":9,"a_srv_id":"",
* "a_name":"從懷憐寒","a_lev":59,"a_face":24303,"a_face_update_time":0,"a_face_file":"","a_avatar_id":0,"a_sex":1,
* "a_power":2889607,"a_formation_type":6,"a_formation_lev":1,
* "a_plist":[
* {"pos":5,"bid":50505,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":1293503,"behurt":1338976,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":4,"bid":10503,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":551369,"behurt":1245491,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":3,"bid":20508,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":1850604,"behurt":1281546,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":2,"bid":30503,"lev":205,"quality":0,"star":9,"break_lev":6,"hurt":48558,"behurt":1355186,"curt":1087118,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":1,"bid":40505,"lev":205,"quality":0,"star":9,"break_lev":6,"hurt":160050,"behurt":1264777,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]}],
* "b_bet":0,"b_rid":4,"b_srv_id":"","b_name":"紫翠翠容","b_lev":58,"b_face":24201,"b_face_update_time":0,"b_face_file":"","b_avatar_id":0,"b_sex":0,"b_power":2939682,
* "b_formation_type":2,"b_formation_lev":1,
* "b_plist":[
* {"pos":5,"bid":10503,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":1065015,"behurt":337335,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":4,"bid":20508,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":2296251,"behurt":642106,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":3,"bid":20501,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":814572,"behurt":720364,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":2,"bid":10510,"lev":280,"quality":0,"star":11,"break_lev":6,"hurt":1662545,"behurt":764633,"curt":0,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]},
* {"pos":1,"bid":20504,"lev":268,"quality":0,"star":11,"break_lev":6,"hurt":641017,"behurt":1446222,"curt":364572,"ext_data":[{"key":5,"val":0},{"key":11,"val":0}]}],
* "ret":2,"replay_id":9667,"a_sprite_lev":0,"a_sprites":[],"b_sprite_lev":0,"b_sprites":[]}
*/
nx.gui.setString(this.nodMyBet, "lname/server", guessinfo.a_srv_id);
nx.gui.setString(this.nodMyBet, "lname/name", guessinfo.a_name);
nx.gui.setString(this.nodMyBet, "lrate/rate", parseFloat(guessinfo.a_bet_ratio / 1000));
nx.gui.setString(this.nodMyBet, "rname/server", guessinfo.b_srv_id);
nx.gui.setString(this.nodMyBet, "rname/name", guessinfo.b_name);
nx.gui.setString(this.nodMyBet, "rrate/rate", parseFloat(guessinfo.b_bet_ratio / 1000));
if (guessinfo.b_bet_ratio >= 2000) {
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 1;
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 0;
}
if (guessinfo.a_bet_ratio >= 2000) {
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 1;
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 0;
}
if (guessinfo.b_bet_ratio < 2000 && guessinfo.a_bet_ratio < 2000) {
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 0.5;
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 0.5;
}
nx.gui.setActive(this.nodOps, "rop/bet", guessinfo.a_bet_ratio >= 2000 && guessinfo.bet_type != 0);
nx.gui.setActive(this.nodOps, "lop/bet", guessinfo.b_bet_ratio >= 2000 && guessinfo.bet_type != 0);
// nx.gui.getComponent( this.nodOps, "prog/right", cc.Sprite ).fillRange = guessinfo.a_bet_ratio >= 2000 ? 1 : 0.5;
nx.gui.setActive(this.nodReplay, "", guessinfo.replay_id != 0);
nx.gui.setActive(this.nodLeft, "ico", guessinfo.ret == 1);
nx.gui.setActive(this.nodRight, "ico", guessinfo.ret == 2);
if (this.race.replay_id != 0 && this.stepinfo.round_status == ArenaConst.champion_round_status.fight && this.stepinfo.flag == 2) {
this.onTouchReplay();
}
this.canBet = guessinfo.bet_type == 0;
},
freshMyGuessInfo: function freshMyGuessInfo(_myguess) {},
openGuessInfo: function openGuessInfo() {
nx.bridge.createPanel("WndCChampionBet");
},
onTouchReplay: function onTouchReplay() {
var srv_id = nx.bridge.vget("curServer").srv_id;
BattleController.getInstance().sender_20036(this.race.replay_id, srv_id);
},
freshRateChange: function freshRateChange(_change) {
//{"a_bet":60,"b_bet":0,"a_bet_ratio":1500,"b_bet_ratio":2000
this.canBet = false;
nx.gui.setString(this.nodMyBet, "lrate/rate", parseFloat(_change.a_bet_ratio / 1000));
nx.gui.setString(this.nodMyBet, "rrate/rate", parseFloat(_change.b_bet_ratio / 1000));
nx.gui.setActive(this.nodOps, "rop/bet", _change.a_bet_ratio >= 2000);
nx.gui.setActive(this.nodOps, "lop/bet", _change.b_bet_ratio >= 2000);
if (_change.b_bet_ratio >= 2000) {
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 1;
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 0;
}
if (_change.a_bet_ratio >= 2000) {
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 1;
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 0;
}
if (_change.b_bet_ratio < 2000 && _change.a_bet_ratio < 2000) {
nx.gui.getComponent(this.nodOps, "prog/left", cc.Sprite).fillRange = 0.5;
nx.gui.getComponent(this.nodOps, "prog/right", cc.Sprite).fillRange = 0.5;
}
},
onTouchGuess: function onTouchGuess(_index) {
if (!this.canBet) {
nx.tbox("champion_str5");
return;
}
var price = 0;
var a = parseInt(_index);
price = a == 1 ? parseFloat(this.race.a_bet_ratio / 1000) : parseFloat(this.race.b_bet_ratio / 1000);
var own = CrossChampionController.getInstance().getModel().getRoleInfo();
var icon = game.configs.arena_cluster_champion_data.data_const.like_reward.val[0][0];
var EC = TipsController.getInstance();
var item = {
item_bid: icon,
price: price,
pay_type: icon,
own: own.can_bet
};
EC.openBuyPanel(true, item, 9, function (_data) {
CrossChampionController.getInstance().sender26204(a, _data.num);
EC.openBuyPanel(false);
});
}
});
cc._RF.pop();