|
|
- require("game.proto.462.Require462")
- require("game.bossHome.BossHomeConst")
- require("game.bossHome.BossHomeModel")
- require("game.bossHome.BossHomeSceneBossItem")
- require("game.bossHome.BossHomeSceneRankItem")
- require("game.bossHome.BossHomeSceneView")
- require("game.bossHome.BossHomeSubView")
- require("game.bossHome.BossHomeMainTabItem")
- require("game.bossHome.BossHomeTabItem")
-
- BossHomeController = BossHomeController or BaseClass(BaseController, true)
- local BossHomeController = BossHomeController
-
- function BossHomeController:__init()
- BossHomeController.Instance = self
- self.model = BossHomeModel:getInstance()
- self:AddEvents()
- self:RegisterAllProtocal()
- end
-
- function BossHomeController:AddEvents()
- --请求信息 i|32 h|16 c|8 l|64 s|字符串
- local function onRequestHandler(...)
- local args_list = {...}
- if args_list[1] == 46201 then
- self:SendFmtToGame(args_list[1], "ccl", args_list[2], args_list[3], args_list[4])
- elseif args_list[1] == 46202 then
- self:SendFmtToGame(args_list[1], "ci", args_list[2], args_list[3])
- elseif args_list[1] == 46203 then
- self:SendFmtToGame(args_list[1])
- elseif args_list[1] == 46204 then
- self:SendFmtToGame(args_list[1], "ci", args_list[2], args_list[3])
- else
- self:SendFmtToGame(args_list[1])
- end
- end
- self.model:Bind(BossHomeConst.REQUEST_CCMD_EVENT, onRequestHandler)
-
- local function req_basic_data(level)
- if GetModuleIsOpen(462) and (level == nil or GetModuleOpenLevel(462) == level ) then
- self.model:Fire(BossHomeConst.REQUEST_CCMD_EVENT, 46205)
- self.model:CheckBossHomeRedByType(BossConst.RedType.Login)
- end
- end
- GlobalEventSystem:Bind(EventName.GAME_START, req_basic_data)
- -- 跨天红点请求, 4点
- local function chnage_day_func(type)
- if SettingModel.CHANGE_DAY.HOUR_4 == type then
- req_basic_data()
- end
- end
- GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
- --升级
- local function onLevelUp(level)
- req_basic_data(level)
- if GetModuleOpenLevel(462) == level then
- --首次开启幻魔之家时,给一个红点,点击界面后消失
- self.model:CheckBossHomeRedByType(BossConst.RedType.ModuleOpen, true)
- -- self.model:SetBossHomeFirstRed(true)
- -- BossModel.Instance:Fire(BossModel.EVENT_UPDATE_RED_DOT)
- end
- end
- RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
-
- local function loadComplete()
- self:ChangeScene()
- --刷新所有墓碑
- if SceneManager:getInstance():IsShowGraveScene() and self.scmd_boss_info then
- self.model:UpdateSceneGrave(self.scmd_boss_info)
- end
- self.scmd_boss_info = false
- local function delay_method( )
- local need_find_boss_id = self.model:GetNeedFindBoss()
- if need_find_boss_id then
- local cfg = Config.Homeboss["1@"..need_find_boss_id]
- cfg = cfg or Config.Homeboss["2@"..need_find_boss_id]
- local pos = stringtotable(cfg.born_pos)
- local function call_back( ... )
- GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
- end
- local findVo = FindVo.New()
- findVo.sceneId = SceneManager.Instance:GetSceneId()
- findVo.type = FindVo.POINT
- findVo.x = pos[1]/ SceneObj.LogicRealRatio.x
- findVo.y = pos[2]/ SceneObj.LogicRealRatio.y
- findVo.call_back = call_back
- findVo.range = 3
- GlobalEventSystem:Fire(EventName.FIND,findVo)
- self.model:SetNeedFindBoss(false)
- end
- end
- setTimeout(delay_method, 1.5)
- end
- GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, loadComplete)
- end
-
- --切换场景
- function BossHomeController:ChangeScene()
- local scene_mgr = SceneManager.Instance
- local last = scene_mgr.last_scene_id
- -------------------------
- if scene_mgr:IsBossHomeScene(last) then
- -- 需要确确实实是从星域幻魔返回到大世界场景,才需要撤销相关信息栏的隐藏
- if scene_mgr:IsMainCityAndFieldScene() then
- self:SetMainUIVisible(true)
- end
- self.model:SetCurFightBossId(nil)--重置boss_id
- end
-
- if self.bossHomesceneview and self.bossHomesceneview:HasOpen() then
- self.bossHomesceneview:Close()
- end
- -------------------------
- if scene_mgr:IsBossHomeScene() then
- self:SetMainUIVisible(false)
- if not self.bossHomesceneview then
- self.bossHomesceneview = BossHomeSceneView.New()
- end
- if not self.bossHomesceneview:HasOpen() then
- self.bossHomesceneview:Open()
- end
- end
- end
-
- function BossHomeController:SetMainUIVisible( value )
- self:Fire(EventName.HIDE_NEW_OPEN_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
- self:Fire(EventName.CHANGE_PK_MODE, not value, MainUIModel.DESERTED_BOSS_MODE)
- self:Fire(EventName.HIDE_LEFT_MIDDLE_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
- self:Fire(EventName.HIDE_TASK_TEAM_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
- GlobalEventSystem:Fire(EventName.LEFT_VIPICON_VISIBLE, not value)
- GlobalEventSystem:Fire(EventName.CHANGE_RIGHT_TIP_ICON, not value,MainUIModel.DESERTED_BOSS_MODE)
- GlobalEventSystem:Fire(EventName.HIDE_LEFT_TOP_ACT_VIEW,not value,MainUIModel.DESERTED_BOSS_MODE)
- GlobalEventSystem:Fire(EventName.SHOW_MAIN_TASK_ANNOUNCE_ROOT, not value, MainUIModel.DESERTED_BOSS_MODE)
- end
-
-
- function BossHomeController:RegisterAllProtocal( )
- local register_cfg = {
- [46201] = { -- 列表信息
- handler = function(self, vo)
- self.scmd_boss_info = vo
- for k,v in pairs(vo.boss_info) do
- self.model:SetBossHomeInfo(v.boss_id,v.reborn_time,v.killer)
- end
- self.model:Fire(BossHomeConst.ANS_BOSS_HOME_INFO, vo.boss_type, vo.level, vo.guild)
- if SceneManager.Instance:IsShowGraveScene() then
- self.model:UpdateSceneGrave(vo)
- end
- end,
- },
- [46202] = { -- 伤害排名信息
- handler = function(self, vo)
- if self.delay_clear_desert_call then
- self.delay_clear_desert_call()
- end
- self.model:SetBossHomeRankInfo(vo)
- self.model:Fire(BossHomeConst.ANS_BOSS_HOME_RANK_INFO)
- end,
- },
- [46203] = { -- 脱战通知
- handler = function(self, vo)
- if self.delay_clear_desert then
- GlobalTimerQuest:CancelQuest(self.delay_clear_desert)
- self.delay_clear_desert = nil
- end
- self.delay_clear_desert_call = false
- -------------------------
- local function clear_call( )
- self.model:CleanBossHomeRankInfoById(vo.boss_id)
- self.model:SetCurFightBossId(nil)--重置boss_id
- self.model:Fire(BossHomeConst.OUT_OF_BOSS_HOME_LIST, vo.boss_id, true)
- end
- local cur_data = self.model:GetBossHomeRankInfo(vo.boss_id)
- if cur_data and cur_data.boss_hp == 0 then
- --击杀boss后数据保留5s
- self.delay_clear_desert_call = function( )
- clear_call()
- -------------------------
- if self.delay_clear_desert then
- GlobalTimerQuest:CancelQuest(self.delay_clear_desert)
- self.delay_clear_desert = nil
- end
- self.delay_clear_desert_call = false
- -------------------------
- end
- self.delay_clear_desert = setTimeout(self.delay_clear_desert_call,5)
- else
- clear_call()
- end
- end,
- },
- [46204] = { -- boss进场
- handler = function(self, vo)
- if vo.res == 1 then
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
- Message.show("进入场景中")
- if vo.boss_type == 1 then
-
- elseif vo.boss_type == 2 then
-
- end
- else
- ErrorCodeShow(vo.res)
- end
- end,
- },
- [46205] = { -- 社团之家信息
- handler = function(self, vo)
- self.model:SetBossHomeGuildExclusiveData(vo)
- self.model:Fire(BossHomeConst.UPDATE_GUILD_EXCLUSIVE_DATA)
- end,
- },
- [46206] = { -- 社团之家后端通知10s后踢人
- handler = function(self, vo)
- if SceneManager:getInstance():IsBossHomeScene() then
- local special_tip_data = {
- type = SpecialTipType.Timer1,
- sepeical_str = "您所在社团已丧失领地归属,%s秒后您将离开领地",
- show_time = 10,
- }
- CommonController.Instance:Fire(EventName.OPEN_SPECIALTIPVIEW, special_tip_data)
- end
- end,
- },
- }
- self:RegisterProtocalByCFG(register_cfg)
- end
|