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

264 lines
9.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const BridgeWindow = require( "bridge.window" );
const FxSVC = require( "nx.fx.sv.expand" );
const BattleDramaController = require( "battle_drama_controller" );
const DramaEvent = require( "battle_drama_event" );
const NxSpine = require( "nx.fx.spine" );
const PathTool = require( "pathtool" );
cc.Class( {
extends: BridgeWindow,
properties: {
SVClist: { default: null, type: FxSVC },
pass_dungeon_name: {
default: null,
type: cc.Label
},
role: {
default: null,
type: NxSpine
},
sepGetIcon: {
default: null,
type: cc.Node
},
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.controller = BattleDramaController.getInstance();
this.model = this.controller.getModel();
this.config_list = {};
// this.summon_special_data = {};
this.bindGEvent( DramaEvent.BattleDrama_Drama_Reward_Data, this.updateShowInfoList.bind( this ) );
},
onEnable: function(){
},
start() {
},
onOpenConfigs() {
this.updateShowInfoList();
},
onPreClosed() {
this.SVClist.rebuild( [] );
},
// 更新显示
updateShowInfoList: function( id, type ) {
if( id == null ) {
this.initConfigRewardList();
} else {
if( nx.dt.arrEmpty( id.list ) ){
if( type == 0 ) {
var object = this.config_list[ id ];
if( object ) {
object.is_received = true; // 已领取
object.sort_index = 3; // 已领取排序id
}
}
}else{
for (let i = 0; i < id.list.length; i++) {
let info = id.list[i];
let object = this.config_list[ info.id ];
if( object ) {
object.is_received = true; // 已领取
object.sort_index = 3; // 已领取排序id
}
}
}
//特殊奖励
// if( type == 1 ) {
// var object = this.config_list[ id ];
// object.is_spe_received = true;
// object.spe_sort_index = 3;
// this.summon_special_data.sort_index = 3;
// }
}
if( this.rewards_list ) {
this.rewards_list.sort( Utils.tableLowerSorter( [ "sort_index", "sort" ] ) );
this.SVClist.rebuild( this.rewards_list );
// 引导辅助
if( nx.bridge.plot && nx.bridge.plot.isDoing() ) {
this.positionGet();
}
}
},
// 初始化奖励列表
initConfigRewardList: function() {
if( this.rewards_list ) return;
this.rewards_list = []
var floor = 0;
var pass_list = this.model.getDramaRewardPassList(); // 已通关列表
var spe_pass_list = this.model.getDramaSpeRewardPassList(); // 特殊通关奖励
var drama_data = this.model.getDramaData(); // 当前剧情副本数据
if( nx.dt.objEmpty( drama_data ) ) {
return false;
}
//spine动画,显示大奖励
let res_path = PathTool.getSpinePath( "H30095", "show", false );
this.role.load( res_path, ( _e ) => {
if( !_e ) {
this.role.action( "drama1", true );
} else {
this.role.stop();
}
} );
//已经通过显示
if(drama_data.max_dun_id == null || drama_data.max_dun_id == 0)
{
this.pass_dungeon_name.string = "--"; // 名字
}
else
{
var per_drama_dungeon_info = game.configs.dungeon_data.data_drama_dungeon_info[ drama_data.max_dun_id ];
this.pass_dungeon_name.string = per_drama_dungeon_info.name; // 名字
}
var max_dun_id = drama_data.max_dun_id;
var cur_drama_dungeon_info = game.configs.dungeon_data.data_drama_dungeon_info[ max_dun_id ];
if( cur_drama_dungeon_info ) {
floor = cur_drama_dungeon_info.floor || 0; // 当前层,用于比较的
}
//特殊关卡1-4010400,id是8,策划说写死
let bShowSepGet = false;
// 遍历出整个列表
for( var key in game.configs.dungeon_data.data_drama_reward ) {
var config = game.configs.dungeon_data.data_drama_reward[ key ];
if( config ) {
var target_config = game.configs.dungeon_data.data_drama_dungeon_info[ config.limit_id ];
if( target_config ) {
let is_spe_received = spe_pass_list[ config.id ];
var object = { config_data: config, id: config.id, is_received: pass_list[ config.id ] || false, is_spe_received: is_spe_received, cur_dunname: target_config.name, cur_dun: floor, sort_index: 0,sort: config.sort, spe_sort_index: 0, target_dun: target_config.floor };
this.rewards_list.push( object );
if( max_dun_id >= config.limit_id ) {
if( object.is_received ) {
object.sort_index = 3; // 已领取
if(object.id == 8)
{
bShowSepGet = true;
}
} else {
object.sort_index = 1; // 可领取
}
if( object.is_spe_received ) {
object.spe_sort_index = 3;
} else {
object.spe_sort_index = 1;
}
} else {
object.sort_index = 2; // 条件不满足
object.spe_sort_index = 2;
}
// 储存一下
this.config_list[ config.id ] = object;
}
}
//是否添加通关特殊奖励
// if( config.special_items.length != 0 ) {
// this.summon_special_data.id = config.id;
// this.summon_special_data.sort_index = this.config_list[ config.id ].spe_sort_index;
// if( floor < 40 ) {
// this.tips.string = cc.js.formatStr( "(%d/%d)", floor, 40 );
// } else {
// this.tips.string = "(40/40)";
// var RoleController = require( "role_controller" );
// let role_vo = RoleController.getInstance().getRoleVo();
// let claim_p = nx.storage.get( role_vo.srv_id + "_" + role_vo.rid + "chappass" );
// if( claim_p ) {//领取过
// nx.gui.setString(this.reflect_btn,"txt",nx.text.getKey("Got"));
// nx.gui.setLocked(this.reflect_btn.node,"",true);
// } else {//未领取
// nx.gui.setLocked(this.reflect_btn.node,"",false);
// }
// }
// let cmp = nx.gui.getComponent( this.summon_item, "", "nx.fx.sv.expand.item" );
// cmp.rebind( 1, { bid: config.special_items[ 0 ][ 0 ], num: config.special_items[ 0 ][ 1 ] }, "" );
// }
}
nx.gui.setActive( this.sepGetIcon, "", bShowSepGet );
},
// touchReflect() {
// if( this.summon_special_data.sort_index == 1 ) {
// this.controller.send13009( 1, this.summon_special_data.id );
// nx.gui.setString(this.reflect_btn,"txt",nx.text.getKey("Got"));
// nx.gui.setLocked(this.reflect_btn.node,"",true);
// var RoleController = require( "role_controller" );
// let role_vo = RoleController.getInstance().getRoleVo();
// nx.storage.set( role_vo.srv_id + "_" + role_vo.rid + "chappass", 1 );
// }
// },
// ============================================
// 引导辅助
// ============================================
// 首次领奖定位
positionGet: function() {
// 查找第一个能领取的任务
let node = null;
let children = this.SVClist.bindSCV.content.children;
for( let i = 0; i < children.length; ++i ) {
let temp = children[ i ];
if( temp.svItem && temp.svItem.mdata &&
temp.svItem.comfirm_btn.active && temp.svItem.mdata.id == 77 ) {
node = temp;
break;
}
}
if( !node ) {
nx.error( "$DramaReward:定位首次领奖失败!" );
node = children[ 0 ];
if( !node ) {
return;
}
}
let btn = node.svItem.comfirm_btn;
let cell = nx.gui.find( this, "container/plotCell" );
let pos = btn.convertToWorldSpaceAR( cc.Vec2.ZERO );
cell.position = cell.parent.convertToNodeSpaceAR( pos );
cell.width = btn.width;
cell.height = btn.height;
cell.svItem = node.svItem;
},
// 点击首次领奖处理
onTouchFirstGet: function() {
let cell = nx.gui.find( this, "container/plotCell" );
if( cell && cell.svItem ) {
cell.svItem.touchConfirm();
}
},
} );