/****************************************************************** * * 个人推送界面 * ******************************************************************/ const BridgeWindow = require( "bridge.window" ); const PPushMod = require( "personal.push.mod" ); cc.Class( { extends: BridgeWindow, properties: { menu: { default: null, type: cc.Node }, pages: { default: null, type: cc.Node }, togWords: { default: null, type: cc.Node }, }, // 载入 onLoad: function() { this.cur = 0; this.ids = []; this.gifts = {}; // 菜单初始化 this.menu.children.forEach( _item => { nx.gui.setActive( _item, "on", false ); nx.gui.setActive( _item, "off", true ); } ); }, // 展示 onEnable: function() { // 视图绑定 nx.bridge.vbind( this, [ [ "PPushGifts", this.onFreshGifts.bind( this ) ], ] ); // 开关 let tmp = nx.storage.getNumber( "PPHideTip", 0 ); this.showTip = tmp == 1; nx.gui.setActive( this.togWords, "ck/on", this.showTip ); nx.gui.setActive( this.togWords, "ck/off", !this.showTip ); }, // 销毁 onDisable: function() { // 视图监听解除 nx.bridge.vunbind( this ); }, // 礼包刷新 onFreshGifts: function( _list ) { // 空隐藏 if( nx.dt.arrEmpty( _list ) ) { this.close(); return; } // 没有改变 let arr = []; _list.forEach( _t => { arr.push( _t.gift_id ); } ); if( this.ids.toString() == arr.toString() ) { return; } // 刷新 this.ids = arr; this.gifts = {}; const DATA = game.configs.personal_push_data.data_gift_info; _list.forEach( _t => { let cfg = DATA[_t.gift_id]; if( !cfg ) { nx.error( `$Push:无效礼包:${_t.gift_id}` ); return; } let DATA2 = game.configs.personal_push_data.data_gift_layout_info[cfg.layout]; let detail = DATA2 ? DATA2[cfg.gift_id] : null; if( !detail ) { nx.error( `$Push:无效礼包:${cfg.gift_id}` ); return; } let tmp = nx.dt.objClone( _t ); tmp.fab = cfg.layout; tmp.price = cfg.money; tmp.icon = cc.path.join( `resDB/models/${cfg.face_id}/play/pkicon`); tmp.bg = detail.bg; tmp.hover = detail.content_img; tmp.model = detail.res_id; tmp.action = detail.action; tmp.desc1 = detail.desc || ""; tmp.desc2 = detail.name; tmp.name = cfg.name; this.gifts[_t.gift_id] = tmp; } ); this.menu.active = true; this.pages.active = true; this.reMenu(); }, // ================================================ // 礼包相关 // ================================================ // 礼包重建 reMenu: function() { if( nx.dt.arrEmpty( this.ids ) ) { return; } let chds = this.menu.children; nx.gui.gocChildren( this.menu, "", this.ids.length, chds[0] ); for( let i = 0; i < this.ids.length; ++i ) { let id = this.ids[i]; let tm = this.gifts[id]; let node = chds[i]; node.gift = tm; nx.gui.setString( node, "on/txt", tm.name ); nx.gui.setString( node, "off/txt", tm.name ); nx.gui.setSpriteFrame( node, "role", tm.icon ); } // 初始聚焦 let gift = this.gifts[this.cur]; if( !gift ) { let news = nx.bridge.vget( "PPushNews" ); if( news && news.length > 0 ) { let id = news[0].new_gift_id; gift = this.gifts[id]; } if( !gift ) { gift = this.gifts[this.ids[0]]; } } this.togGift( gift ); }, // 点击切换 onTouchMenu: function( _item ) { if( _item && _item.parent && _item.parent.gift ) { console.log( _item.parent.gift.gift_id ); this.togGift( _item.parent.gift ); } }, // 切换礼包 togGift: function( _gift ) { if( !_gift ) { return; } // 菜单切换 this.menu.children.forEach( _item => { let info = _item.gift || {}; nx.gui.setActive( _item, "on", info.gift_id == _gift.gift_id ); nx.gui.setActive( _item, "off", info.gift_id != _gift.gift_id ); } ); // 展示切换 this.showPage( _gift ); }, // ================================================ // 页面相关 // ================================================ // 页面展示 showPage: function( _gift ) { let name = "p" + _gift.fab; let node = nx.gui.find( this.pages, name ); if( !_gift || !node ) { return; } this.pages.children.forEach( _page => { _page.active = ( _page.name == name ); } ); let cmp = node.getComponent( 'cmp.personal.push.page' ); cmp.rebuild( _gift ); }, // ================================================ // 其他 // ================================================ // 对话框显隐开关 onTogWords: function() { this.showTip = !this.showTip; nx.storage.set( "PPHideTip", this.showTip ? 1 : 0 ); nx.gui.setActive( this.togWords, "ck/on", this.showTip ); nx.gui.setActive( this.togWords, "ck/off", !this.showTip ); }, } );