// -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-02-18 14:15:05 // -------------------------------------------------------------------- const BridgeController = require( "bridge.controller" ); var BackpackEvent = require( "backpack_event" ); var Battle_dramaEvent = require( "battle_drama_event" ); var HallowsEvent = require( "hallows_event" ); var BackPackConst = require( "backpack_const" ) // 桥接替换的界面 var HallowsController = cc.Class( { extends: BridgeController, ctor: function() { }, // 初始化配置数据 initConfig: function() { var HallowsModel = require( "hallows_model" ); this.model = new HallowsModel(); this.model.initConfig(); }, // 返回当前的model getModel: function() { return this.model; }, // 注册监听事件 registerEvents: function() { if( this.battle_drama_event == null ) { this.battle_drama_event = gcore.GlobalEvent.bind( Battle_dramaEvent.BattleDrama_Update_Max_Id, ( function( max_id ) { this.requestInitProtocals( max_id ); } ).bind( this ) ) } if( this.goods_add_event == null ) { this.goods_add_event = gcore.GlobalEvent.bind( BackpackEvent.ADD_GOODS, ( function( bag_code, item_list ) { if( bag_code != BackPackConst.Bag_Code.BACKPACK ) return; this.checkNeedUpdateRedStatus( item_list ); } ).bind( this ) ) } if( this.goods_update_event == null ) { this.goods_update_event = gcore.GlobalEvent.bind( BackpackEvent.MODIFY_GOODS_NUM, ( function( bag_code, item_list ) { if( bag_code != BackPackConst.Bag_Code.BACKPACK ) return; this.checkNeedUpdateRedStatus( item_list ); } ).bind( this ) ) } if( this.goods_del_event == null ) { this.goods_del_event = gcore.GlobalEvent.bind( BackpackEvent.DELETE_GOODS, ( function( bag_code, item_list ) { if( bag_code != BackPackConst.Bag_Code.BACKPACK ) return; this.checkNeedUpdateRedStatus( item_list ); } ).bind( this ) ) } if( this.re_link_game_event = null ) { this.re_link_game_event = gcore.GlobalEvent.bind( EventId.EVT_RE_LINK_GAME, ( function() { this.resonate_data = null; } ).bind( this ) ) } }, //物品变化的时候做处理,如果是自己操作引起的不需要这里判断的,因为那属于自身更新 checkNeedUpdateRedStatus: function( item_list ) { if( this.is_self_handle ) { this.is_self_handle = false; return; } if( this.item_list == null || Utils.next( item_list ) == null ) return; for( var i in item_list ) { var cfg = item_list[ i ].config; if( cfg ) { if( cfg.id == 72001 || cfg.id == 72002 || cfg.id == 72003 ) { this.model.checkHallowsRedStatus(); } } } }, // 注册协议接受事件 registerProtocals: function() { this.RegisterProtocal( 24100, this.handle24100 ) // 圣器基础属性 this.RegisterProtocal( 24101, this.handle24101 ) // 圣器进阶 this.RegisterProtocal( 24102, this.handle24102 ) // 圣灵穿戴 this.RegisterProtocal( 24103, this.handle24103 ) // 圣技升级 this.RegisterProtocal( 24104, this.handle24104 ) // 使用圣印 this.RegisterProtocal( 24105, this.handle24105 ) // 共鸣变化 this.RegisterProtocal( 24107, this.handle24107 ) // 更新圣器 this.RegisterProtocal( 24108, this.handle24108 ) // 新增圣器,这个时候播放激活特效 this.RegisterProtocal( 24120, this.handle24120 ) // 圣器任务列表 this.RegisterProtocal( 24121, this.handle24121 ) // 圣器任务列表 this.RegisterProtocal( 24122, this.handle24122 ) // 圣器任务列表 this.RegisterProtocal( 24123, this.handle24123 ) // 神器重铸 this.RegisterProtocal( 24124, this.handle24124 ) // 是否打开过神器界面 this.RegisterProtocal( 24135, this.handle24135 ) // 神器精炼 this.RegisterProtocal( 24140, this.handle24140 ) //满级属性预览 // this.requestInitProtocals(); }, reqBaseFromServer: function( _cb ) { // 配置加载 let cfgs = [ "hallows_data", // 行星武器 "hallows_refine_data", // 行星武器精炼 ]; this.loadConfigs( cfgs, ( _ret, _data ) => { this.reqHallowsData( _cb ); } ); }, checkIsLock: function() { var open_config = game.configs.hallows_data.data_const.hallows_open; if( open_config == null ) return null; let ret = nx.bridge.checkConditions( [ open_config.val ] ); return ret; }, reqHallowsData( _cb ) { // 功能解锁检查 let is_open = this.checkIsLock(); // 锁定中不请求数据 if( nx.dt.objNEmpty( is_open ) ) { nx.dt.fnInvoke( _cb, true ); return; } this.SendProtocal( 24100, {} ); this.SendProtocal( 24120, {}, _cb ); }, //监测圣器系统是否解锁 checkIsOpen: function( show_desc ) { var open_config = game.configs.source_data.data_source_data[ 39 ]; if( open_config == null ) return false; let ret = nx.bridge.checkConditions([open_config.lev_limit]); if( show_desc && ret.val ) { nx.tbox( ret.desc ); } let is_open = ret.val; return is_open; }, //初始登记请求的一些数据 requestInitProtocals: function() { if( this.battle_drama_event ) { gcore.GlobalEvent.unbind( this.battle_drama_event ); this.battle_drama_event = null; } this.requestHallowsInfo(); }, //打开圣器的圣印界面 openHallowsTraceWindow: function( status, data ) { if(status){ nx.bridge.createPanel( "WNdHallowsTrace", data ); }else{ nx.bridge.closePanel( "WNdHallowsTrace" ); } }, //圣器装备的tips openHallowsTips: function( status, data ) { nx.bridge.createPanel( "WndHallowsDetail", data ); }, openHallowsTipsWindow: function( status, type, data ) { if( data == null ) return; let params = {}; params.type = type;//1 激活 2进阶 params.data = data; // this.step_tips_window.open( params ); nx.bridge.createPanel( "WndHallowsTip", params ); }, //激活和进阶二合一 //圣器激活界面 //共鸣 // --[[function HallowsController:openHallowsResonateUpWindow(status, data) // if not status then // if self.resonate_up_window then // self.resonate_up_window:close() // self.resonate_up_window = null // end // else // if self.resonate_up_window == null then // self.resonate_up_window = HallowsResonateUpWindow.New() // end // self.resonate_up_window:open(data) // end // end --]] requestHallowsInfo: function() { this.SendProtocal( 24100, {} ); this.SendProtocal( 24120, {} ); }, handle24100: function( data ) { this.model.updateHallowsInfo( data ); }, //更新圣器 handle24107: function( data ) { this.model.updateHallowsData( data ); gcore.GlobalEvent.fire( HallowsEvent.HallowsUpdateEvent, data.id ); }, //激活圣器 handle24108: function( data ) { this.model.updateHallowsData( data ); // 如果是激活了最后一个神器,且神器任务界面正在显示,则切换为神器升级界面 // /通知面板更新数据 gcore.GlobalEvent.fire( HallowsEvent.HallowsActivityEvent, data.id ); //播放激活特效 this.openHallowsTipsWindow( true, 1, data ); }, //圣器进阶 requestHallowsAdvance: function( id, is_auto ) { this.is_self_handle = true; var auto_type = 0; if( is_auto ) { auto_type = 1; } var protocal = {}; protocal.id = id protocal.is_auto = auto_type this.SendProtocal( 24101, protocal ) }, handle24101: function( data ) { // nx.tbox(data.msg); //升阶了 if( data.result == 1 ) { this.openHallowsTipsWindow( true, 2, data.id ); gcore.GlobalEvent.fire( HallowsEvent.UpdateHallowsDetailInfoList, data.id ); } else { this.is_self_handle = false; } gcore.GlobalEvent.fire( HallowsEvent.HallowsAdvanceEvent, data.id, data.result ); }, //升级圣器技能 requestHallowsSkillUpgrade: function( hallows_id ) { this.is_self_handle = true; var protocal = {}; protocal.hallows_id = hallows_id this.SendProtocal( 24103, protocal ); }, handle24103: function( data ) { // 失败判定 if( !this.isGoodData( data ) ) { return; } if( data.result == 1 ) { // gcore.GlobalEvent.fire(HallowsEvent.HallowsSkillUpgradeEvent, data.hallows_id, data.id); } else { this.is_self_handle = false; } }, //穿戴一件装备 requestHallowsEquip: function( hallows_id, item_id, pos ) { this.is_self_handle = true; hallows_id = hallows_id || 0; item_id = item_id || 1; pos = pos || 1; var protocal = {}; protocal.hallows_id = hallows_id; protocal.id = item_id; protocal.pos = pos; this.SendProtocal( 24102, protocal ) }, handle24102: function( data ) { // 失败判定 if( !this.isGoodData( _data ) ) { return; } if( data.result == 1 ) { gcore.GlobalEvent.fire( HallowsEvent.HallowsEqupUpEvent, data.id, data.pos ); } else { this.is_self_handle = false; } }, //使用圣印物品 requestUseTraceItem: function( hallows_id, num ) { this.is_self_handle = true; hallows_id = hallows_id || 0; num = num || 1; var protocal = {}; protocal.hallows_id = hallows_id; protocal.num = num; this.SendProtocal( 24104, protocal ); }, handle24104: function( _data ) { // 失败判定 if( !this.isGoodData( _data ) ) { return; } if( _data.result == 1 ) { this.openHallowsTraceWindow( false ); } else { this.is_self_handle = false; } }, // 初始化圣器任务列表 handle24120: function( data ) { this.model.updateHallowsTask( data.list ); }, // 圣器任务更新信息 handle24121: function( data ) { this.model.updateHallowsTask( data.list ); }, requestSubmitHallowsTask: function( id ) { var protocal = {}; protocal.id = id this.SendProtocal( 24122, protocal ); }, handle24122: function( data ) { // 失败判定 if( !this.isGoodData( data ) ) { return; } }, //共鸣变化 handle24105: function( data ) { this.resonate_data = data; // this.openHallowsResonateUpWindow(true, data); }, // 请求神器重铸 requestHallowsReset: function( id ) { var protocal = {}; protocal.id = id; this.SendProtocal( 24123, protocal ); }, handle24123: function( _data ) { // 失败判定 if( !this.isGoodData( _data ) ) { return; } this.requestHallowsInfo(); }, // 请求标记打开神器界面 requestSignOpenHallows: function() { this.SendProtocal( 24124, {} ); }, handle24124: function( data ) { if( data.is_first ) { this.model.setOpenHallowsFlag( data.is_first ); } }, __delete: function() { if( this.model != null ) { this.model.DeleteMe(); this.model = null; } }, send24135: function( hallows_id ) { var protocal = {} protocal.hallows_id = hallows_id this.SendProtocal( 24135, protocal ) }, handle24135: function( data ) { // 失败判定 if( !this.isGoodData( data ) ) { return; } if( data.code == 1 ) { var new_data = {} new_data.id = data.hallows_id new_data.refine_lev = data.refine_lev this.model.updateHallowsData( new_data ) gcore.GlobalEvent.fire( HallowsEvent.HallowsUpdateEvent, data.hallows_id, true ) } }, send24140: function( hallows_id ) { this.detail_id = hallows_id; var protocal = {}; protocal.hallows_id = hallows_id; this.SendProtocal( 24140, protocal ); }, handle24140: function( data ) { this.model.createHallow( data ); this.openHallowsTips( true, this.detail_id ); }, } ); module.exports = HallowsController;