// // -------------------------------------------------------------------- // // 这里填写简要说明(必填), // // @author: lwc@syg.com(必填, 创建模块的人员) // // @editor: xxx@syg.com(必填, 后续维护以及修改的人员) // // @description: // // 位面改版 参考afk的 后端 国辉 策划 中建 // //
Create: 2020-02-05 //// -------------------------------------------------------------------- const BridgeController = require( "bridge.controller" ); var BattleConst = require("battle_const"); var PlanesafkConst = require("planesafk_const"); var MainuiEvent = require("mainui_event"); var PlanesafkEvent = require("planesafk_event"); var HeroController = require("hero_controller"); var RoleController = require( "role_controller" ); var BattleController = require( "battle_controller" ); var HeroEvent =require("hero_event") var PlanesafkController = cc.Class({ extends: BridgeController, ctor: function () { }, initConfig:function() { var PlanesafkModel = require("planesafk_model"); this.model = new PlanesafkModel(this); }, // 返回当前的model getModel: function () { return this.model; }, // 注册监听事件 registerEvents: function () { if(!this.close_item_event){ this.close_item_event = gcore.GlobalEvent.bind(MainuiEvent.CLOSE_ITEM_VIEW, (function(data){ if(this.model.getIsShowSearchFinish()) { this.model.setIsShowSearchFinish(false) } }).bind(this)); } }, registerProtocals:function() { this.RegisterProtocal(28600, this.handle28600)//操作指定格子事件 this.RegisterProtocal(28601, this.handle28601)//进入副本 this.RegisterProtocal(28602, this.handle28602)//基础数据信息 this.RegisterProtocal(28603, this.handle28603)//该层格子数据信息 this.RegisterProtocal(28604, this.handle28604)//进入下一层 this.RegisterProtocal(28605, this.handle28605)//获得该层通关奖励 this.RegisterProtocal(28606, this.handle28606)//格子数据更新 this.RegisterProtocal(28607, this.handle28607)//获取对方阵容信息 this.RegisterProtocal(28608, this.handle28608)//战斗结果 this.RegisterProtocal(28609, this.handle28609)//回血事件英雄变换 this.RegisterProtocal(28610, this.handle28610)//计算变阵后总战力 this.RegisterProtocal(28611, this.handle28611)//保存阵法 this.RegisterProtocal(28612, this.handle28612)//请求阵法 this.RegisterProtocal(28613, this.handle28613)//英雄背包 this.RegisterProtocal(28614, this.handle28614)//事件信息返回 this.RegisterProtocal(28615, this.handle28615)//对话Id this.RegisterProtocal(28620, this.handle28620)//buff列表 this.RegisterProtocal(28621, this.handle28621)//商人列表 this.RegisterProtocal(28622, this.handle28622)//英雄租借 this.RegisterProtocal(28623, this.handle28623)//查看英雄信息 this.RegisterProtocal(28624, this.handle28624)//领取奖励更新 this.RegisterProtocal(28625, this.handle28625)//本日已领取奖励 this.RegisterProtocal(28616, this.handle28616)//位面战令基础信息 this.RegisterProtocal(28617, this.handle28617)//一键领取等级礼包 this.RegisterProtocal(28618, this.handle28618)//周期重置红点 this.RegisterProtocal(28619, this.handle28619)//是否要弹窗 this.RegisterProtocal(28626, this.handle28626)//日记要求 }, reqBaseFromServer: function( _cb ){ // 配置加载 let cfgs = [ "planes_data", // 位面征战 "planes_war_order_data", // 位面征战战令 ]; this.loadConfigs( cfgs, ( _ret, _data ) => { this.reqPlaneData( _cb ); } ); }, checkIsOpen:function(){ var open_config = game.configs.planes_data.data_const.planes_open_lev; if(open_config == null)return null; let ret = nx.bridge.checkConditions( ["lev",open_config.val] ); return ret; }, reqPlaneData(_cb){ // 功能解锁检查 let is_open = this.checkIsOpen(); // 锁定中不请求数据 if( nx.dt.objNEmpty( is_open ) ) { nx.dt.fnInvoke( _cb, true ); return; } this.SendProtocal( 28602, {}, _cb ); this.SendProtocal( 28616, {}); }, sender28626:function() { this.SendProtocal(28626, {}); }, handle28626:function(){ // body }, // 操作指定格子事件 //is_fight 是否进入战斗 sender28600:function(line, index, action, ext_list , extend, is_fight) { var protocal = {} protocal.line = line protocal.index = index protocal.action = action protocal.ext_list = ext_list || {} this.evt_extend = extend // 额外数据 if (is_fight) { //本次是申请进入战斗的 var delay_time = 0.4; if (this.planesafk_main_window) { var is_hide = this.planesafk_main_window.updateScrollviewByIndex(line, index); if (is_hide) { this.planesafk_main_window.isLockPlanesMapScreen(true);// 解除锁屏 } else { delay_time = 0 } } if (delay_time == 0) { this.SendProtocal(28600, protocal); } else { if (this.planesafk_main_window) { this.planesafk_main_window.isLockPlanesMapScreen(false)// 解除锁屏 } this.SendProtocal(28600, protocal) } } else { this.SendProtocal(28600, protocal); } }, handle28600:function(data){ // 事件成功,可能需要做一些表现(例如buff图标动画) if (data.code == 1 && this.evt_extend && this.evt_extend.data && this.evt_extend.data.line == data.line &&this.evt_extend.data.index == data.index) { if (this.evt_extend.buff_id) { // 选择buff成功,播放飘动动画 gcore.GlobalEvent.fire(PlanesafkEvent.Chose_Buff_Event, this.evt_extend.buff_id) this.openPlanesafkBuffChoseWindow(false) } this.evt_extend = null } }, // 主动触发格子事件(必须在场景地图内) initiativeTriggerEvtByIndex:function(line, index ){ if (!line || line == 0) { return } if (!index || index == 0) { return } if (!this.planesafk_main_window) { return } var evt_vo = this.getMapEvtData(line, index) //暂时只触发buff事件 if (evt_vo && evt_vo.evt_config && evt_vo.evt_config.type == PlanesafkConst.Evt_Type.Buff) { this.onHandlePlanesEvtById(evt_vo.evt_config.type, {line:line, index : index}) } }, //-----------------@ 处理事件 // evt_type:事件类型 index:格子索引 // function PlanesafkController:onHandlePlanesEvtById( evt_type, line, index, is_black ) //data 28603协议返回的单个list数据 //data.evt_config //game.configs.PlanesData.data_evt_info[this.data.evt_id] onHandlePlanesEvtById:function( evt_type, data) { if (!data) { return } if (evt_type == PlanesafkConst.Evt_Type.Normal) { // 空事件 // 无需处理 } else if (evt_type == PlanesafkConst.Evt_Type.Monster) { // 怪物 this.openPlanesafkMasterWindow(true, data) } else if (evt_type == PlanesafkConst.Evt_Type.Guard) { // 守卫 this.openPlanesafkMasterWindow(true, data) } else if (evt_type == PlanesafkConst.Evt_Type.Recover) { // 英雄恢复(回复泉水) // if (this.model.getAllPlanesHeroData() != null) { //英雄信息回来了才响应事件 var cfg = { btn_str: nx.text.getKey("btn_planesafk_soak"), res_id: "board_img_7", title: nx.text.getKey("lab_planesafk_reply_title") } var config = gdata("planes_data","data_const","cure_desc") if (config) { cfg.desc_1 = config.desc } else { cfg.desc_1 = nx.text.getKey("msg_planesafk_soak_tip") } this.openPlanesafkBoardWindow(true, PlanesafkConst.Recover_Id, data, {board_cfg: cfg}) // } } else if (evt_type == PlanesafkConst.Evt_Type.Revive) { // 英雄恢复(复活祭坛) // if (this.model.getAllPlanesHeroData() != null) { //英雄信息回来了才响应事件 var cfg = { btn_str: nx.text.getKey("btn_planesafk_resurrection"), res_id: "board_img_4", title: nx.text.getKey("lab_planesafk_resurrection_title") } var config = gdata("planes_data","data_const","reborn_desc") if (config) { cfg.desc_1 = config.desc } else { cfg.desc_1 = nx.text.getKey("msg_planesafk_resurrection_tip")//TI18N("可以随机复活一位已阵亡的英雄并回复其
70%
的生命值,若当前无阵亡英雄则回复生命值最低的一位英雄
100%
的生命。") } this.openPlanesafkBoardWindow(true, PlanesafkConst.Revive_Id, data, {board_cfg: cfg}) // } } else if (evt_type == PlanesafkConst.Evt_Type.LeaseHero) { // 租借英雄 this.sender28600(data.line, data.index, 0, {}) } else if (evt_type == PlanesafkConst.Evt_Type.Buff) { // buff列表 this.sender28600(data.line, data.index, 0, {}) } else if (evt_type == PlanesafkConst.Evt_Type.Businessman) { // 商人 this.sender28600(data.line, data.index, 0, {}) } }, // 事件信息返回 对应旧位面的 23108 handle28614:function(data) { if (data.ext_list && Utils.next(data.ext_list) != null) { var dic_type = {} for (var k in data.ext_list) { var v = data.ext_list[k] if (dic_type[v.type] == null) { dic_type[v.type] = {} } if (v.type == 1) { //buff选择 if (dic_type[v.type].buff_bid_list == null) { dic_type[v.type].buff_bid_list = [] } dic_type[v.type].buff_bid_list.push(v.val1) //需调试 } } for (var _type in dic_type) { if (_type == 1) { //buff选择 var v = dic_type[_type] this.openPlanesafkBuffChoseWindow(true, v.buff_bid_list, data) } } } }, // if evt_vo.config.type == PlanesConst.Evt_Type.Dialog and dialog_id { // 对话 // var dialog_cfg = game.configs.SecretDunData.data_dialogue[dialog_id] // if dialog_cfg { // MonopolyController:getInstance():openMonopolyDialogWindow(true, 88, data.index, dialog_cfg) // } // else if ( evt_vo.config.type == PlanesConst.Evt_Type.Board and board_bid { // 广告牌 // this.openPlanesBoardWindow(true, board_bid) // else if ( evt_vo.config.type == PlanesConst.Evt_Type.Buff and Utils.next(buff_bid_list) ~= null { // buff选择 // this.openPlanesBuffChoseWindow(true, buff_bid_list, data.index) // } // 进入副本 sender28601:function( ){ if (! PlanesafkController.getInstance().checkPlanesIsOpen() ){ return } var protocal = {} this.SendProtocal(28601, protocal) }, handle28601:function( data ){ if (data.flag) { // BattleConst.Fight_Type.PlanesWar = 40 BattleController.getInstance().requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.PlanesWar) } }, // 基础数据信息 sender28602:function( ){ var protocal = {} this.SendProtocal(28602, protocal) }, handle28602:function( data ){ this.model.setPlanesRoleLookId(data.look_id) this.model.setHolidayOpen(data.is_holiday) this.model.setCdTime(data.update_time); gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Main_Base_Info_Event, data) }, // 地图信息 sender28603:function( ){ var protocal = {} this.SendProtocal(28603, protocal) }, handle28603:function( data ){ if (! this.is_first_open) { this.is_first_open = true this.model.checkPlaneafkCanExploreRedPoint(data) } if (data.floor == 0) { this.openPlanesafkOrderactionWindow(false) this.openPlanesafkEndWarnView(false) this.openBuyCardView(false) this.openPlanesafkBoardWindow(false) this.openPlanesafkMasterWindow(false) this.openPlanesafkItemUsePanel(false) this.openPlanesafkHeroListPanel(false) this.openPlanesafkBuffChoseWindow(false) this.openPlanesafkBuffListPanel(false) this.openPlanesafkHireHeroWindow(false) this.openPlanesafkMainWindow(false) //最后才关闭主界面 return } if (data.floor == 1) { this.model.setIsShowSearchFinish(false) } this.model.setMapData(data) this.model.updateRolePos(data) gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Main_Map_Info_Event, data) }, //领取奖励更新 handle28624:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Last_Reward_Info_Event, data) }, // 本日已领取 sender28625:function( ){ var protocal = {} this.SendProtocal(28625, protocal) }, handle28625:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Update_Get_Reward_Event, data) }, // 进入下一层 sender28604:function(floor, difficulty){ var protocal = {} protocal.floor = floor protocal.difficulty = difficulty this.SendProtocal(28604, protocal) }, handle28604:function( data ){ nx.tbox(data.msg) if (data.flag == 1) { this.openPlanesafkMainWindow(true) gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Next_Map_Info_Event, data) } }, // 获取通关奖励 sender28605:function(floor){ var protocal = {} protocal.floor = floor this.SendProtocal(28605, protocal) }, handle28605:function( data ){ nx.tbox(data.msg) if (data.flag == 1) { gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Pass_Reward_Info_Event, data) } }, // 格子数据更新 handle28606:function( data ){ this.model.updateRolePos(data) gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_Update_Map_Info_Event, data) }, // 对方阵容数据 handle28607:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Get_Master_Data_Event, data) }, // 战斗结果 handle28608:function( data ){ nx.bridge.vset("ResultInfo",data); }, // 更新英雄血量数据 //回血事件英雄变换 handle28609:function( data ){ if (data.partners && Utils.next(data.partners) != null) { this.model.updateMyHeroData(data.partners) } }, // 请求上阵英雄战力总和 计算变阵后总战力 sender28610:function( partner_ids ){ var protocal = {} protocal.partner_ids = partner_ids this.SendProtocal(28610, protocal) }, handle28610:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Update_Form_Atk_Event, data.power) }, // 请求保存阵法 sender28611:function( formation_type, pos_info, hallows_id ){ var protocal = {} protocal.formation_type = formation_type protocal.pos_info = pos_info protocal.hallows_id = hallows_id this.SendProtocal(28611, protocal) }, handle28611:function( data ){ if (data.msg != "") { nx.tbox(data.msg) } if (data.flag == 1) { nx.tbox("msg_saveForm"); gcore.GlobalEvent.fire(PlanesafkEvent.Save_Form_Success_Event) } }, // 请求位面阵容 sender28612:function( ){ this.SendProtocal(28612, {}) }, handle28612:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Get_Form_Data_Event, data) gcore.GlobalEvent.fire(HeroEvent.Update_Fun_Form, data); }, // 请求英雄背包数据 sender28613:function( ){ this.SendProtocal(28613, {}) }, handle28613:function( data ){ this.model.setAllPlanesHeroData(data.partners) gcore.GlobalEvent.fire(PlanesafkEvent.Get_All_Hero_Event) gcore.GlobalEvent.fire(PlanesafkEvent.Get_Hero_Live_Event); }, // 触发剧情对话 对应旧位面 23111 handle28615:function( data ){ // 待处理//“lwc }, // 请求所有buff列表 sender28620:function( ){ this.SendProtocal(28620, {}) }, handle28620:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Get_Buff_Data_Event, data.buffs) }, // 返回商人信息 handle28621:function( data ){ // if (this.planesafk_evt_shop_panel) { // gcore.GlobalEvent.fire(PlanesafkEvent.Evt_Shop_Event, data) // } // else // { this.openPlanesafkEvtShopPanel(true, data) // } }, // 返回租借英雄事件的数据 handle28622:function( data ){ this.openPlanesafkHireHeroWindow(true, data) }, sender28623:function( pos ){ var protocal = {} protocal.pos = pos this.SendProtocal(28623, protocal) }, handle28623:function( data ){ gcore.GlobalEvent.fire(PlanesafkEvent.Look_Other_Hero_Event, data) }, // 打开雇佣英雄界面 openPlanesafkHireHeroWindow:function( status, data){ if(status){ nx.bridge.createPanel("WndPlanesafkHire",data); }else{ nx.bridge.closePanel("WndPlanesafkHire"); } }, getMapEvtData:function(line, index){ if (this.planesafk_main_window) { return this.planesafk_main_window.getMapEvtData(line, index) } }, //打开位面冒险主界面 openPlanesafkMainWindow:function(status,setting) { if(status){ nx.bridge.createPanel("WndPlanesafkMain",setting); }else{ nx.bridge.closePanel("WndPlanesafkMain"); } }, // 打开位面遗物列表 openPlanesafkBuffListPanel:function( status, setting ){ if(status){ nx.bridge.createPanel("WndPlanesafkBuffList",setting); }else{ nx.bridge.closePanel("WndPlanesafkBuffList"); } }, // 打开buff选择界面 openPlanesafkBuffChoseWindow:function( status, buff_list, data ){ if(status){ nx.bridge.createPanel("WndPlanesafkBuffChoose",{buff_list:buff_list, data:data}); }else{ nx.bridge.closePanel("WndPlanesafkBuffChoose"); } }, // 打开位面英雄列表 openPlanesafkHeroListPanel:function( status, setting ){ if(status){ nx.bridge.createPanel("WndPlanesafkHeroList",setting); }else{ nx.bridge.closePanel("WndPlanesafkHeroList"); } }, // 打开使用道具 openPlanesafkItemUsePanel:function( status, setting ){ if(status){ nx.bridge.createPanel("WndPlanesafkUseItem",setting); }else{ nx.bridge.closePanel("WndPlanesafkUseItem"); } }, // 打开位面商人 openPlanesafkEvtShopPanel:function( status, setting ){ if(status){ nx.bridge.createPanel("WndPlanesafkEvtShop",setting); }else{ nx.bridge.closePanel("WndPlanesafkEvtShop"); } }, // 打开敌方阵容界面 openPlanesafkMasterWindow:function( status, data ){ if(status){ nx.bridge.createPanel("WndPlanesafkMasterInfo",data); }else{ nx.bridge.closePanel("WndPlanesafkMasterInfo"); } }, openPlanesafkBoardWindow:function( status, id, data, setting ){ if(status){ nx.bridge.createPanel("WndPlanesafkEvts",{id:id, data:data, setting:setting}); }else{ nx.bridge.closePanel("WndPlanesafkEvts"); } }, //-----------------------------------------位面战令活动--------------------------------------------- // 战令基本信息 sender28616:function(){ var protocal = {} this.SendProtocal(28616, protocal) }, handle28616:function(data){ this.model.setOrderactionData(data) this.model.checkPlanesafkRedPoint() //gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_OrderAction_Init_Event, data) }, //一键领取礼包 sender28617:function(id){ var protocal = {} protocal.id = id this.SendProtocal(28617, protocal) }, handle28617:function(data){ if (data) { nx.tbox(data.msg) } }, //红点 sender28618:function(){ var protocal = {} this.SendProtocal(28618, protocal) }, handle28618:function(data){ if (data) { this.model.setOrderactionRedStatus(data.flag) this.model.checkPlanesafkRedPoint() } gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_OrderAction_First_Red_Event) }, //位面活动提示 sender28619:function(){ var protocal = {} this.SendProtocal(28619, protocal) }, handle28619:function(data){ gcore.GlobalEvent.fire(PlanesafkEvent.Planesafk_OrderAction_IsPopWarn_Event,data) }, //打开主界面 openPlanesafkOrderactionWindow:function(status){ if (status == true) { var configlv = gdata("PlanesWarOrderData","data_constant","limit_lev")//game.configs.PlanesWarOrderData.data_constant.limit_lev var configday = gdata("PlanesWarOrderData","data_constant","open_srv_day")//game.configs.PlanesWarOrderData.data_constant.open_srv_day var open_srv_day = RoleController.getInstance().getModel().getOpenSrvDay() var rolevo = RoleController.getInstance().getModel().getRoleVo() // 是否开启planes_war_order_data: if (configday && configlv && rolevo && (open_srv_day < configday.val || rolevo.lev < configlv.val)) { nx.tbox(string.format(nx.text.getKey("msg_planesafk_open_tip"), configlv.val, configday.val)) return } if (!this.planesafk_orderaction_window) { this.planesafk_orderaction_window = Utils.createClass("planesafk_orderaction_window", this); //this.planesafk_orderaction_window = new PlanesafkOrderactionWindow() } this.planesafk_orderaction_window.open() } else{ if (this.planesafk_orderaction_window) { this.planesafk_orderaction_window.close() this.planesafk_orderaction_window = null } } }, //购买进阶卡 openBuyCardView:function(status){ if (status == true) { if (!this.buy_card_view) { this.buy_card_view = Utils.createClass("planesafk_orderaction_untie_reward_window", this); //this.buy_card_view = new PlanesafkOrderactionUntieRewardWindow() } this.buy_card_view.open() } else{ if (this.buy_card_view) { this.buy_card_view.close() this.buy_card_view = null } } }, //打开活动结束警告界面 openPlanesafkEndWarnView:function(status,day){ if (status == true) { if (!this.end_warn_view) { this.end_warn_view = Utils.createClass("planesafk_orderaction_end_warn_window", this); //this.end_warn_view = new PlanesafkOrderActionEndWarnWindow() } this.end_warn_view.open(day) } else{ if (this.end_warn_view) { this.end_warn_view.close() this.end_warn_view = null } } }, //-----------------------------------------位面战令活动end--------------------------------------------- // 位面功能是否开启 checkPlanesIsOpen:function( not_tips ){ var role_vo = RoleController.getInstance().getRoleVo() var limit_lv_cfg = gdata("planes_data","data_const","planes_open_lev")//game.configs.PlanesData.data_const["planes_open_lev"] if (limit_lv_cfg) { if (role_vo.lev >= limit_lv_cfg.val) { return true } else { if (!not_tips) { nx.tbox(limit_lv_cfg.desc) } return false } } else { return false } }, __delete:function(){ if (this.model != null) { this.model.deleteMe() this.model = null } } }); module.exports = PlanesafkController;