源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

227 lines
7.9 KiB

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