Files
fc/dev/project/assets/Scripts/mod/battle_drama/cmp/cmp.battledrama.special.js
T
2026-05-23 22:10:14 +08:00

131 lines
4.0 KiB
JavaScript

const BridgeCmp = require("bridge.component");
const BTD = require("battle_drama_controller");
const PathTool = require("pathtool");
cc.Class({
extends: BridgeCmp,
properties: {
togNd:{
default:[],
type:[cc.Node]
},
expBar:{
default:null,
type:cc.ProgressBar
},
fabItem:{
default:null,
type:cc.Prefab
}
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
start () {
},
onEnable(){
this.barList = [0,0.2,0.5,0.8];
this.reawrdTags = {};
this.updateSpecialAward();
},
onDisable(){
},
onHideSpecial(){
this.node.active = false;
},
updateSpecialAward(){
let pass_status = nx.bridge.vget("SpecialPass");
//判斷是否所有獎勵已領取
let pass_num = 0;
for(let i in pass_status){
pass_num++;
}
if(pass_num >= 3){
this.onHideSpecial();
return;
}
let drama_data = BTD.getInstance().getModel().getDramaData(); // 当前剧情副本数据
let max_dun_id = drama_data.max_dun_id;
// 遍历出整个列表
let idx = 0;
let barPro = 0;
for (var key in game.configs.dungeon_data.data_drama_special_reward) {
var config = game.configs.dungeon_data.data_drama_special_reward[key];
if (config) {
var target_config = game.configs.dungeon_data.data_drama_dungeon_info[config.limit_id];
if (target_config) {
let nd = this.togNd[idx];
let tog = nx.gui.getComponent(nd,"",cc.Toggle);
let tag = nx.gui.find(nd,"tag");
if(tag){
nx.bridge.NodeChidrenDestroy(tag);
let item = cc.instantiate(this.fabItem);
item.parent = tag;
let cmp = nx.gui.getComponent(item,"","cmp.item.base");
if(cmp){
cmp.rebind(idx,config.special_items[0],"");
}
}
if (max_dun_id >= config.limit_id) {//可领取
tog.isChecked = true;
let is_received = pass_status[config.id]//已领取
if (is_received) {
this.setLockStatus(nd,0);
nx.gui.setString(nd,"desc",nx.text.getKey("Got"));
} else {
this.setLockStatus(nd,1);
nx.gui.setString(nd,"desc",cc.js.formatStr("<color=#fbeb65>%s</color>",nx.text.getKey("CanGet")));
}
barPro ++;
} else if (max_dun_id < config.limit_id) {//未完成
tog.isChecked = false;
nx.gui.setString(nd,"desc",cc.js.formatStr("<color=#dffcff>%s</color>",target_config.name));
}
this.reawrdTags[idx] = config.id;
}
idx ++;
}
}
this.expBar.progress = this.barList[barPro];
},
setLockStatus(nd,status){
let cmp = nx.gui.getComponent(nd,"eft","nx.fx.spine");
if(!cmp){
return nx.gui.setActive(nd,"eft",false);
}
nx.gui.setActive(nd,"eft",true);
if(status == 0){
cmp.stop();
}else if(status == 1){
let res_path = PathTool.getSpinePath( "E80030",null, false );
cmp.load( res_path, ( _e ) => {
if( !_e ) {
cmp.action( "action", true );
} else {
cmp.stop();
}
} );
}
},
touchReflect(_index) {
if(!this.reawrdTags[_index])return;
BTD.getInstance().send13009( 1, this.reawrdTags[_index] );
},
// update (dt) {},
});