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

248 lines
7.2 KiB
JavaScript

/******************************************************************
*
* 七日周期任务
*
******************************************************************/
const ActPopup = require( "act.popup.base" );
const PathTool = require("pathtool");
const NxExpand = require("nx.fx.sv.expand");
const ItemLay = require("cmp.common.itemlayout");
const TipsController = require("tips_controller");
const SevenMod = require("act.seven.mod");
const NxSpine = require("nx.fx.spine");
const FxTog = require("nx.fx.togs");
cc.Class( {
extends: ActPopup,
properties: {
titles:{
default:[],
type:[cc.Node]
},
list:{
default:null,
type:NxExpand
},
expBar:{
default:null,
type:cc.ProgressBar
},
expIco:{
default:null,
type:cc.Node
},
expLev:{
default:null,
type:cc.Node
},
expScore:{
default:null,
type:cc.Node
},
curList:{
default:null,
type:ItemLay
},
nextList:{
default:null,
type:ItemLay
},
daysTogs:{
default:null,
type:cc.Node
// type:FxTog
},
togs:{
default:null,
type:FxTog
},
lastTime:{
default:null,
type:cc.Node
},
roleSp:{
default:null,
type:NxSpine
}
},
// 初始化
onLoad: function( ) {
this.mod = SevenMod.getInstance();
this.goals_data = game.configs.day_goals_new_data;
this.task_index = 0;
this.cur_day = 0;
this.select_day = 0;
this.togs.posTog = this.onTogMenu.bind( this );
// 活动监听
this.mod.vbind( this, [
[ "sevenGoalData", this.freshInfos.bind( this ) ],
] );
},
onTogMenu(_index){
if(_index >= this.cur_day){
nx.tbox("Locked");
return this.togs.togTo(_index - 1);
}
this.select_day = _index + 1;
let data = this.mod.vget("sevenGoalData");
this.setTaskList(this.select_day,data.list);
},
onOpenConfigs(_params){
this._super( _params );
this.mod.send13604();
this.mod.send13607();
let cds = this.daysTogs.children;
for(let i=0;i<cds.length;i++){
let tog = cds[i];
if(tog){
nx.gui.setString(tog,"off/txt",cc.js.formatStr(nx.text.getKey("action_str16"),i+1));
nx.gui.setString(tog,"on/txt",cc.js.formatStr(nx.text.getKey("action_str16"),i+1));
}
}
this.scheduleOnce( () => {
let res_path1 = PathTool.getSpinePath( "H30059", "show", false );
this.roleSp.load( res_path1, ( _e ) => {
if( !_e ) {
this.roleSp.action( "action1", true );
} else {
this.roleSp.stop();
}
} );
}, 0.2 );
},
onPreClosed(){
this.list.rebuild([]);
this.curList.rebuild([]);
this.nextList.rebuild([]);
// 活动监听解除
if( this.mod ) {
this.mod.vunbind( this );
}
},
onSelectTaskType(_index){
let idx = Number(_index);
if(idx == this.task_index)return;
this.task_index = idx;
let data = this.mod.vget("sevenGoalData");
this.setTaskList(this.cur_day,data.list);
},
freshInfos(data){
if(nx.dt.objEmpty(data))return;
let lev = this.mod.getLev();
let exp = this.mod.getExp();
this.period = data.period;
//判断一下第几期
nx.gui.setActive(this.titles[0],"",(this.period%2) == 0);
nx.gui.setActive(this.titles[1],"",(this.period%2) == 1);
this.cur_day = data.cur_day;
this.select_day = this.cur_day;
this.togs.togTo(data.cur_day-1);
let cds = this.daysTogs.children;
for(let i=0;i<cds.length;i++){
if(i < data.cur_day){//已解鎖
nx.gui.setActive(cds[i],"off/lock",false);
}
}
// let tog = this.daysTogs.children[data.cur_day - 1];
// if(tog){
// nx.gui.setActive(tog,"on",true);
// }
let cfg = this.goals_data.data_make_lev_list[this.period];
nx.gui.setString(this.expLev,"",cc.js.formatStr(nx.text.getKey("LvNumber"),lev));
if(!cfg)return;
let max_exp = cfg[lev+1]?cfg[lev+1].exp:cfg[lev].exp;
nx.gui.setString(this.expScore,"",cc.js.formatStr("<color=#4eff00>%s</color>/%s",exp,max_exp));
//计算进度条,每次都从0开始
let last_exp = 0;
if(cfg[lev - 1]){
last_exp = cfg[lev - 1].exp;
}
this.expBar.progress = (exp - last_exp)/(max_exp - last_exp);
//获取积分图标
let item_id = this.goals_data.data_circle_exp_item[this.period].item_id;
nx.bridge.setIcon(this.expIco,"",item_id);
//设置当前和下级奖励
this.setLevReward(lev);
//设置任务
this.setTaskList(this.cur_day,data.list);
//設置時間
nx.gui.setCdTxt(this.lastTime,"",data.end_time - client.socket.getTime());
},
setLevReward(lev){
let cur_awards = [];
let next_awards = [];
let cfg = this.goals_data.data_make_lev_list[this.period];
if(!cfg)return;
cur_awards = cfg[lev].reward;
if(cfg[lev + 1]){
next_awards = cfg[lev + 1].reward;
}
this.curList.rebuild(cur_awards);
this.nextList.rebuild(next_awards);
},
setTaskList(curDay,tasks){
if(nx.dt.arrEmpty(tasks))return;
//需要区分任务和累充任务 0 1
let cfg = {};
if(this.task_index == 0){
let groups = this.goals_data.data_group_list[this.period];
for(let gid in groups){
if(groups[gid].day == curDay){
cfg[gid] = groups[gid];
}
}
}else{
cfg = this.goals_data.data_charge_list[this.period];
}
if(nx.dt.objEmpty(cfg))return;
let list1 = [];
let list2 = [];
let list3 = [];
for(let i = 0;i < tasks.length;i++){
if(cfg[tasks[i].id]){
tasks[i].cfgs = cfg[tasks[i].id];
if(tasks[i].finish == 1){
list1.push(tasks[i]);
}else if(tasks[i].finish == 0){
list2.push(tasks[i]);
}else if(tasks[i].finish == 2){
list3.push(tasks[i]);
}
}
}
let list = list1.concat(list2.concat(list3));
this.list.rebuild(list);
},
onClickRule(){
let TC = TipsController.getInstance();
if( TC ) {
let key = (this.period%2 == 0)?"tips":"tips_1";
let config = this.goals_data.data_constant[key];
TC.showTextPanel(null,config.desc );
}
},
onClickLevAward(){
nx.bridge.createPanel("WndActSevenGoalAward",{mod:this.mod,period:this.period});
},
} );