|
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
|