Files
2026-05-23 22:10:14 +08:00

344 lines
14 KiB
JavaScript

const BridgeWindow = require("bridge.window");
const FxSVC = require( "nx.fx.sv.expand" );
var PathTool = require("pathtool");
var BattleDramaController = require("battle_drama_controller");
var RoleController = require("role_controller");
var DramaEvent = require("battle_drama_event");
const TPC = require("tips_controller");
const ActMod = require( "act.month.mod" );
const PartnerBodyShow = require( "cmp.partner.body.show" );
const NxSpine = require( "nx.fx.spine" );
cc.Class({
extends: BridgeWindow,
properties: {
SVClist:{
default:null,
type:FxSVC
},
desc:{
default:null,
type:cc.RichText
},
source_label:{
default:null,
type:cc.Label
},
notice_label:{
default:null,
type:cc.RichText
},
btn_buy_rt:{
default:null,
type:cc.RichText
},
source_icon:{
default:null,
type:cc.Node
},
smod:{
default:null,
type:cc.Prefab
},
mod_tar:{
default:null,
type:cc.Node
},
nodRole: { default : null, type : NxSpine }
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.controller = BattleDramaController.getInstance();
this.drama_model = this.controller.getModel();
this.role_vo = RoleController.getInstance().getRoleVo();
this.quick_battle_status = 0;
this.privilege_status = RoleController.getInstance().getModel().checkPrivilegeStatus(1); // 是否有特权
//快速战斗数据更新
this.bindGEvent(DramaEvent.BattleDrama_Quick_Battle_Data, this.updateData.bind(this));
},
start() {
this.btn_buy_rt.string = cc.js.formatStr("<u>%s</u>",nx.text.getKey("newfirstcharge_window_tip2"));
//秘书组id
let _id = nx.bridge.vget("clerkShowId");
let arr = _id.split( "_" );
let id = cc.js.formatStr("%s_%s",arr[0],arr[1]);
let cfg = gdata( "partner_data", "data_partner_star", id );
let rcfg = gdata( "partner_data", "data_partner_base", id );
let path = cc.path.join( "resDB/models/" + cfg.res_id + "/show" );
this.nodRole.load( path, ( _e ) => {
if( !_e ) {
this.nodRole.action( "drama1" , true );
} else {
this.nodRole.stop();
}
} );
// this.nodRole.setPartner( cfg );
// if(!this.splayer){
// this.splayer = cc.instantiate(this.smod);
// this.splayer.parent = this.mod_tar;
// this.splayer.position = cc.v2(0,0);
// }
// let cmp = this.splayer.getComponent("cmp.partner.smod");
// if(cmp &&( arr.length>1)){
// cmp.setData(cfg,true,false);
// }
},
touchVIp(){
nx.bridge.createPanel( "WndPayment", { page: "shop" } );
this.controller.openDramBattleQuickView(false);
},
onOpenConfigs() {
this.updateData();
this.updateShowItems();
this.cardhoner = ActMod.getInstance().vget( "monthCard1" );
this.cardsmall = ActMod.getInstance().vget( "monthCard2" ); // 説明 添加關於月卡祝福的説明
this.updateShowDesc();
},
onPreClosed() {
this.SVClist.rebuild([]);
},
// 次数和按钮显示
updateData: function () {
var quickdata = this.drama_model.getQuickData();
if(nx.dt.objEmpty(quickdata)){
return false;
}
this.quick_battle_status = 0; // 当前特权次数状态
this.quick_battle_cost = 0; // 当前特权消耗
var res = PathTool.queryIconPath(3)
nx.gui.setSpriteFrame(this.source_icon,"",res);
// 优先处理按钮显示
// this.source_label.node.x = -85;
if (quickdata.fast_combat_free_num > 0) { // 免费就不做任何处理了.直接判断了
this.source_label.string =nx.text.getKey("lab_battle_fastfight");
this.source_icon.active = false;
this.notice_label.string = "<color=#373857>" + nx.text.getKey("btn_battle_fast_fight_free") + "</color>";
} else {
var combat_num = quickdata.fast_combat_max - quickdata.fast_combat_num; // 剩余普通次数
var privilege_num = game.configs.privilege_data.data_fast_combat_cost_length - quickdata.fast_combat_p_num; // 剩余特权数量
if (privilege_num > 0 && this.privilege_status) {
this.notice_label.string = cc.js.formatStr("%s<color=#373857>%s+%s</color>%s", nx.text.getKey("lab_battle_fast_fight_left"), combat_num, privilege_num, (""));
} else {
this.notice_label.string = cc.js.formatStr("%s<color=#373857>%s</color>%s",nx.text.getKey("lab_battle_fast_fight_left"), combat_num, (""));
}
// 先判断普通次数,在判断是否是有特权,判断特权消耗
var next_config = game.configs.dungeon_data.data_drama_quick_cost[quickdata.fast_combat_num + 1];
var cost = 0
if (next_config) {
cost = next_config.cost;
this.quick_battle_status = 2;
} else {
if (this.privilege_status) { // 开了特权的
var privilege_config = game.configs.privilege_data.data_fast_combat_cost[quickdata.fast_combat_p_num + 1];
if (privilege_config) {
cost = privilege_config.cost; // 下一次特权消耗
this.quick_battle_status = 2;
}
this.notice_label.string = cc.js.formatStr("%s<color=#249003>%s+%s</color>%s", nx.text.getKey("lab_battle_fast_fight_left"), combat_num, privilege_num, (""));
}
}
this.quick_battle_cost = cost;
if (cost == 0) {
this.quick_battle_status = 3; // 没有次数了
this.source_icon.active = false;
if (this.privilege_status) {
this.source_label.string = nx.text.getKey("lab_battle_fastfight");
} else {
this.source_label.string =nx.text.getKey("lab_battle_fast_fight_up_free");
}
} else {
this.source_icon.active = true;
if (!this.source_icon_status) {
this.source_icon_status = true;
}
this.source_label.string = cost +" "+ nx.text.getKey("lab_battle_fastfight");
}
}
},
// 描述文字库
updateShowDesc: function () {
var tips_str = nx.text.getKey("lab_battle_fast_fight_vip_cantip");
let str_card1 = "";
let str_card = "";
let desc = "";
if( this.cardhoner && this.cardsmall ){
if( this.cardhoner.is_reward == 1 || this.cardhoner.is_reward == 2 ){
str_card = nx.text.format( "msg_battle_fast_fight_month", 3 ) + nx.text.getKey("lab_battle_fast_fight_vip_is") ;
if( this.cardsmall.is_reward == 1 || this.cardsmall.is_reward == 2 ){
str_card1 = nx.text.format( "msg_battle_fast_fight_month1", 1 ) + nx.text.getKey("lab_battle_fast_fight_vip_is");
}else{
str_card1 = nx.text.format( "msg_battle_fast_fight_month1", 1 ) + nx.text.getKey("lab_battle_fast_fight_vip_no");
}
}else{
// str_card = nx.text.format( "msg_battle_fast_fight_month", 3 ) + nx.text.getKey("lab_battle_fast_fight_vip_no") ;
if( this.cardsmall.is_reward == 1 || this.cardsmall.is_reward == 2 ){
str_card1 = nx.text.format( "msg_battle_fast_fight_month1", 1 ) + nx.text.getKey("lab_battle_fast_fight_vip_is");
str_card = nx.text.format( "msg_battle_fast_fight_month", 3 ) + nx.text.getKey("lab_battle_fast_fight_vip_no") ;
}else{
str_card1 = nx.text.format( "msg_battle_fast_fight_month1", 1 ) + nx.text.getKey("lab_battle_fast_fight_vip_no");
str_card = nx.text.format( "msg_battle_fast_fight_month", 3 ) + nx.text.getKey("lab_battle_fast_fight_vip_no") ;
}
}
}else{
str_card = nx.text.format( "msg_battle_fast_fight_month", 3 ) + nx.text.getKey("lab_battle_fast_fight_vip_no");
str_card1 = nx.text.format( "msg_battle_fast_fight_month1", 1 ) + nx.text.getKey("lab_battle_fast_fight_vip_no");
}
// let activem = this.cardsmall.is_reward == 2
// let active = this.cardsmall.is_reward == 2 ?
if (this.privilege_status == true) {
tips_str = tips_str + nx.text.getKey("lab_battle_fast_fight_vip_is") + "\n" + str_card1 + "\n" + str_card ;
this.btn_buy_rt.node.active = false;
} else {
tips_str = tips_str + nx.text.getKey("lab_battle_fast_fight_vip_no") + "\n" + str_card1 + "\n" + str_card ;
this.btn_buy_rt.node.active = true;
}
this.desc.string = tips_str;
},
// 增加物品展示
updateShowItems: function () {
var data = this.drama_model.getDramaData();
if(nx.dt.objEmpty(data)){
return false;
}
var drama_config = game.configs.dungeon_data.data_drama_dungeon_info[data.max_dun_id];
if(nx.dt.objEmpty(drama_config)){
return false;
}
var item_list = [];
for (let index = 0; index < drama_config.quick_show_items.length; index++) {
const element = drama_config.quick_show_items[index];
item_list.push({ bid: element[0], num: element[1] });
}
this.SVClist.rebuild(item_list);
},
send13004: function () {
if (!this.role_vo) return
var cur_energy = this.role_vo.energy;
var max_energy = this.role_vo.energy_max;
var qingbao_val = 0;
var vip_add_per = 0;
var hook_max_time = this.drama_model.hook_max_time || 120;
var drama_data = this.drama_model.getDramaData() || {};
var config = gdata("dungeon_data", "data_drama_dungeon_info", [drama_data.dun_id]);
if (config && config.per_hook_items) {
for (var i in config.per_hook_items) {
var v = config.per_hook_items[i];
if (v[0] == game.configs.item_data.data_assets_label2id.energy) {
qingbao_val = v[1] * hook_max_time * (1 + vip_add_per);
}
}
}
if (cur_energy + qingbao_val > max_energy) {
let call_back = (_key,_box)=> {
_box.close();
if(_key == "confirm"){
this.controller.send13004();
}
};
let str = cc.js.formatStr(nx.text.getKey("msg_battle_fast_fight_warring"), cur_energy, max_energy);
nx.mbox(str, ['cancel','confirm'], call_back)
} else {
this.controller.send13004();
}
},
touchSourceBtn(){
if (this.quick_battle_status == 0 || this.quick_battle_status == 1) { // 可以直接使用
this.send13004()
} else if (this.quick_battle_status == 2 && this.quick_battle_cost != 0) { // 需要花费钻石
if (this.drama_model.getFirstFresh() && !this.privilege_status) {
this.controller.send13039();
var str = nx.text.getKey("msg_battle_fast_fight_goto_buy");
let fun = (_key,_box)=> {
_box.close()
if(_key == "confirm"){
nx.bridge.createPanel( "WndPayment", { page: "shop" } );
this.controller.openDramBattleQuickView(false);
}else if(_key == "cancel"){
var str = cc.js.formatStr(nx.text.getKey("msg_battle_fast_fight_cost"), game.configs.item_data.data_assets_label2id.gold,this.quick_battle_cost)
var res = PathTool.queryIconPath(3)
nx.gui.setSpriteFrame(this.source_icon,"",res);
let fun2 = (_key,_box)=> {
_box.close()
if(_key == "confirm"){
this.send13004();
}
}
nx.mbox(str, ['cancel','confirm'], fun2)
}
}
nx.mbox(str, ['cancel','confirm'], fun)
return
}
var str = cc.js.formatStr(nx.text.getKey("msg_battle_fast_fight_cost"), game.configs.item_data.data_assets_label2id.gold,this.quick_battle_cost)
var res = PathTool.queryIconPath(3)
nx.gui.setSpriteFrame(this.source_icon,"",res);
let fun = (_key,_box)=> {
_box.close()
if(_key == "confirm"){
this.send13004();
}
}
nx.mbox(str, ['cancel','confirm'], fun)
} else if (this.quick_battle_status == 3) { // 没有次数了,需要判断特权
if (this.privilege_status) {
this.send13004()
} else {
var str = nx.text.getKey("msg_battle_fast_fight_goto_buy");
let fun = (_key,_box)=> {
_box.close()
if(_key == "confirm"){
nx.bridge.createPanel( "WndPayment", { page: "shop" } );
this.controller.openDramBattleQuickView(false);
}
}
nx.mbox(str, ['cancel','confirm'], fun)
}
} else {
this.send13004()
}
},
touchExplain(){
let desc = game.configs.dungeon_data.data_drama_const.game_rule.desc;
TPC.getInstance().showTextPanel("",desc);
},
// update (dt) {},
});