/****************************************************************** * * 定制页面 * ******************************************************************/ const mod = require( "act.sevencustom.mod" ); const ActPopup = require( "act.popup.base" ); const Payment = require( "payment.mod" ); const TipsController = require( "tips_controller" ); cc.Class( { extends: ActPopup, properties: { nodContent : {default: null, type: cc.Node }, nodCost : { default: null, type: cc.Node }, preItem : { default: null, type: cc.Prefab }, nodTime : { default: null, type: cc.Node } }, // 初始化 onOpenConfigs: function( _params ) { this._super( _params ); this.mod = mod.getInstance(); if( !this.mod ){ this.delayClose(); return; } let cfgs = gdata( this.mod.data.config, "data_optional_cfg" ); let rewards = gdata( this.mod.data.config, "data_optional_reward" ); let charge = game.configs.charge_data.data_charge_data; let chd = this.nodCost.children; let itemnod = this.nodContent.children[0]; this.first = []; this.second = []; for (let i in cfgs ) { let cfg = cfgs[i]; let price = cfg.charge_id > 0 ? Payment.getInstance().fmtPrice( charge[cfg.charge_id].val ) : nx.text.getKey( "Free" ); let nod = chd[cfg.id - 1]; let reward = rewards[i]; let len = Object.keys( reward ).length; let rewardnod = nx.gui.find( itemnod, "reward" ).children[cfg.id - 1]; rewardnod.children.forEach( _nod => { nx.gui.setActive( _nod, "", false ); }); for (let u = 0; u < len; u++) { let rnod = rewardnod.children[u]; nx.gui.setActive( rnod, "", true ); nx.gui.setActive( rnod, "change", false ); nx.gui.setActive( rnod, "cannot", false ); nx.gui.setActive( rnod, "focus", false ); nx.gui.setActive( rnod, "get", false ); nx.gui.setActive( rnod, "canget", false ); } for (let j in reward ) { let item = reward[j]; if( j == 1 ){ item.forEach( _item=>{ this.first.push( _item[0] ); } ) }else{ if( j == 2 ){ item.forEach( _item=>{ this.second.push( _item[0] ); } ) } } } // if( u == 0 ){ // this.first.push( ) // } nx.gui.setString( nod, "txt", price ); nx.gui.setActive( nod, "focus", false ); } let days = gdata( this.mod.data.config, "data_const" ).act_days.val; nx.gui.gocChildren( this.nodContent, "", days ); let nods = this.nodContent.children; for (let n = 0; n < nods.length; n++) { let nod = nods[n]; nx.gui.setActive( nod, "empty", false ); nx.gui.setString( nod, "day", "0" + ( n + 1 ) ); } // 视图监听 this.mod.vbind( this, [ [ "sevenCustom", this.freshDayReward.bind( this ) ], ] ); this.mod.reqOptionalGiftData(); // // this.mod.reqBaseData(); // nx.debug( "$ActPage onEnable"); // 获取指定主题信息 }, onEnable: function(){ this.unscheduleAllCallbacks(); }, // 销毁 onDestroy: function() { // 活动监听解除 if( this.mod ) { this.mod.vunbind( this ); } delete this.mod; this._super(); }, // 倒计时 updateDate: function() { let txt = nx.bridge.time.cdSimple( this.mod.data.end_time > 0 ? this.mod.data.end_time : 0 ); txt = nx.text.getKey( txt || "已结束" ); nx.gui.setString( this.nodTime, "time", txt ); }, freshDayReward : function( _cdata ){ if( !_cdata || !this.nodContent ){ return; } let time = new Date(); let left = this.mod.data.end_time > 0 ? ( this.mod.data.end_time - ( time / 1000 ) ) : 0.1; nx.gui.setCdTxt( this.nodTime, "time", left, () => { nx.gui.setString( this.nodTime, "time", nx.text.getKey( "lab_planesafk_main_have_over" ) ); } ); this.custominfo = _cdata; let chd = this.nodContent.children; let payed = _cdata.data_list; let lchd = this.nodCost.children; // let reward = _cdata.data_list; for (let p = 0; p < payed.length; p++) { let nod = lchd[p]; nx.gui.setActive( nod, "focus", false ); nx.gui.setActive( nod, "normal", true ); let cmp = nx.gui.getComponent( nod, "", cc.Button ); if( cmp ){ cmp.interactable = this.custominfo.data_list[p].is_activate == 0 && p != 0; nx.gui.setOutlineColor( nod, "txt", this.custominfo.data_list[p].is_activate == 0 && p != 0 ? new cc.color( "#b85833" ) : cc.Color.BLACK ); } } for (let c = 0; c < chd.length; c++) { let nod = chd[c]; let cmp = nod.getComponent( "cmp.act.custom.item" ); nx.gui.setActive( nod, "day", c <= ( _cdata.day - 1) ); if( c <= ( _cdata.day - 1) ){ cmp.freshInfo( { active : true, day : c, config : this.mod.data.config, rewards : payed } ) }else{ cmp.freshInfo( { active : false, day : c, config : this.mod.data.config, rewards : payed } ) } } this.setRewardInfo( payed ); this.freshTip( _cdata ); this.setBuyTimes(); }, setRewardInfo : function( _rewards ){ let self = this; let rewards = _rewards; for ( let r = 0; r < rewards.length; r++ ) { let reward = rewards[r].reward_list; if( nx.dt.arrNEmpty( reward ) ){ reward.forEach( _r =>{ let nod = self.nodContent.children[ _r.day - 1 ]; let status = _r.status; let rnod = nx.gui.find( nod, "reward" ).children[r]; for (let n = 0; n < rnod.children.length; n++) { let pnod = rnod.children[n]; let count = 0; // nx.gui.setActive( pnod, "change", false ); let nodParent = nx.gui.find( pnod, "item" ); if( pnod.active ){ // _r.item_list.sort( ( a, b ) => { // return a.item_id - b.item_id; // } ) let rewards = []; let data = _r.item_list[ pnod.touchId - 1 ]; if( data ){ let nod = cc.instantiate( self.preItem ); // nod.getComponent( "cmp.item.base" ).setDate( data ); let show = { bid : data.item_id, num : data.num } rewards.push( show ); // nod.name = "item"; // nod.setParent( nodParent ); let cmp = nx.gui.getComponent( nodParent, "", "cmp.common.itemlayout" ); if( cmp ){ // cmp.tipSelf = false; cmp.rebuild( rewards ); } nx.gui.setActive( pnod, "tip", false ); } } // nx.gui.setActive( pnod, "change", nodParent.children.length > 0 && status == 0 ); nx.gui.setActive( pnod, "focus", false ); nx.gui.setActive( pnod, "canget", rewards[r].is_activate == 1 && _r.day <= this.custominfo.day && nodParent.children.length > 0 && status == 1 ); nx.gui.setActive( pnod, "cannot", status == 3 ); nx.gui.setActive( pnod, "get", status == 2 ); } let touch = nx.gui.getComponent( rnod, "", cc.Button ); if( touch ){ if( status ){ touch.interactable = status == 1 && rewards[r].is_activate == 1; }else{ touch.interactable = false; } } // rnod.children.forEach( _nod =>{ // } ) } ) } } }, setBuyTimes: function(){ let buyinfo = this.custominfo.data_list; buyinfo.forEach( _nod =>{ if( _nod.is_activate == 1 ){ } } ) }, freshTip : function( _data ){ let count = 0; let self = this; let day = _data.day; let list = _data.data_list; let nod = self.nodContent.children[ _data.day - 1 ]; list.forEach( _item =>{ if( _item.cate == 1 ){ if( !_item.reward_list[ day - 1 ] ){ count++; } } } ) let nods = nx.gui.find( nod, "reward/free" ).children; nods.forEach( _nod => { if( _nod.active ){ nx.gui.setActive( _nod, "tip", count++ ); } } ) // nx.gui.setActive( nods, "reward/free" ) // this.openTip( "reward", count > 0 ); }, onTouchBuy: function( _idx ){ let buyinfo = this.custominfo.data_list; let count = 0; let buy = []; buyinfo.forEach( _nod =>{ if( _nod.is_activate == 1 && _idx == _nod.cate ){ count++; } if( _idx == _nod.cate ){ buy = _nod.reward_list; } } ) if( count > 0 ){ nx.tbox( "CustomBuyTip" ); return; } if( buy.length < this.nodContent.children.length ){ nx.tbox( "ActSevenCustom" ); return; } let cfgs = gdata( this.mod.data.config, "data_optional_cfg" ); if( cfgs[_idx].charge_id > 0 ){ let msg = "pay " + cfgs[_idx].charge_id; Payment.getInstance().reqPayment( cfgs[_idx].charge_id ); } }, onTouchHelp: function(){ let TC = TipsController.getInstance(); let explain = gdata( this.mod.data.config, "data_desc" )[1]; TC.showTextPanel( explain.name, explain.desc ); }, } ); /**{"day":5,"data_list":[ * {"cate":1,"is_activate":1,"reward_list":[{"day":5,"status":0,"item_list":[{"item_id":11403,"num":1}]},{"day":2,"status":0,"item_list":[{"item_id":11403,"num":1}]}]}, * {"cate":2,"is_activate":0,"reward_list":[]}, * {"cate":3,"is_activate":0,"reward_list":[]}, * {"cate":4,"is_activate":0,"reward_list":[]}]} /***/