|
require("game.boss.BossConst")
|
|
require("game.boss.BossModel")
|
|
require("game.proto.460.Require460")
|
|
require("game.proto.461.Require461")
|
|
|
|
require("game.boss.view.BossBaseView") -- boss主界面
|
|
require("game.boss.view.BossPersonSubView") -- 专属幻魔子界面
|
|
require("game.boss.view.BossPersonTabItem") -- 专属幻魔标签Tab
|
|
require("game.boss.view.BossPersonWaveItem") -- 专属幻魔波数进度item
|
|
require("game.boss.view.BossWorldSubView") -- 世界boss子界面
|
|
require("game.boss.view.BossWorldTabItem") -- 世界boss标签Tab
|
|
require("game.boss.view.BossWorldWeekRankView") -- 世界周榜
|
|
require("game.boss.view.BossWorldWeekRankItem") -- 世界周榜
|
|
require("game.boss.view.BossWorldWeekTabItem") -- 世界周榜
|
|
require("game.boss.view.BossBreakProtectView") -- 破盾礼包界面
|
|
require("game.boss.view.BossWorldSceneView") -- 世界boss场景
|
|
require("game.boss.view.BossWorldSceneRankItem") -- 世界boss场景的排行
|
|
require("game.boss.view.BossMoneySubView") -- 赏金幻魔子界面
|
|
require("game.boss.view.BossMoneyTabItem") -- 赏金幻魔标签Tab
|
|
require("game.boss.view.BossMoneyKillView") -- 赏金幻魔击杀日志
|
|
require("game.boss.view.BossMoneyKillItem") -- 赏金幻魔击杀日志
|
|
require("game.boss.view.BossMoneyRewardView") -- 赏金幻魔奖励查询界面
|
|
require("game.boss.view.BossMoneyResultView") -- 赏金幻魔结算界面
|
|
require("game.boss.view.BossMoneySceneView") -- 赏金幻魔场景
|
|
require("game.boss.view.BossMoneySceneRankItem") -- 赏金幻魔场景
|
|
require("game.boss.view.BossMoneyHelpRankView") -- 赏金幻魔协助界面
|
|
require("game.boss.view.BossMoneyHelpRankItem") -- 赏金幻魔协助界面
|
|
require("game.boss.view.BossReliveTip") -- 复活提示tip
|
|
require("game.boss.view.BossDesertedSubView") -- 星域幻魔
|
|
require("game.boss.view.BossDesertedSceneView") -- 星域幻魔场景
|
|
require("game.boss.view.BossDesertedSceneBossItem") -- 星域幻魔场景幻魔信息节点
|
|
require("game.boss.view.BossDesertedSceneRankItem") -- 星域幻魔场景排行节点
|
|
require("game.boss.view.BossCardItem") -- boss刷新卡item
|
|
require("game.boss.view.BossCardView") -- boss刷新卡View
|
|
require("game.boss.view.BossCardTap") -- boss刷新卡标签
|
|
require("game.boss.view.BossVipCardTipItem") -- boss尊享卡提示标签
|
|
require("game.boss.view.BossProtectTipsView") --boss免战提示界面
|
|
|
|
require("game.boss.view.BossEquipShowTIps") --boss装备掉落展示
|
|
|
|
|
|
-------------------------
|
|
|
|
BossController = BossController or BaseClass(BaseController)
|
|
|
|
function BossController:__init()
|
|
BossController.Instance = self
|
|
|
|
self.model = BossModel:GetInstance()
|
|
self:EnableCheckoutClear()
|
|
self:InitEvent()
|
|
self:RegisterAllProtocals()
|
|
end
|
|
|
|
function BossController:RegisterAllProtocals()
|
|
self:RegisterProtocal(46001, 'on46001') --世界BOSS活动状态
|
|
self:RegisterProtocal(46002, 'on46002') --世界BOSS列表信息
|
|
self:RegisterProtocal(46003, 'on46003') --世界BOSS血量
|
|
self:RegisterProtocal(46004, 'on46004') --世界BOSS前往周榜
|
|
self:RegisterProtocal(46005, 'on46005') --世界BOSS收到护盾礼包
|
|
self:RegisterProtocal(46006, 'on46006') --世界BOSS开启护盾礼包
|
|
self:RegisterProtocal(46007, 'on46007') --世界BOSS伤害列表
|
|
self:RegisterProtocal(46008, 'on46008') --世界BOSS单个伤害
|
|
self:RegisterProtocal(46009, 'on46009') --单个世界BOSS状态刷新
|
|
self:RegisterProtocal(46010, 'on46010') --退出BOSS场景
|
|
self:RegisterProtocal(46011, 'on46011') --获取赏金幻魔玩家次数信息
|
|
self:RegisterProtocal(46012, 'on46012') --获取赏金幻魔列表信息
|
|
self:RegisterProtocal(46013, 'on46013') --赏金幻魔击杀日志
|
|
self:RegisterProtocal(46014, 'on46014') --赏金幻魔鼓舞
|
|
self:RegisterProtocal(46015, 'on46015') --收到赏金幻魔结算
|
|
self:RegisterProtocal(46016, 'on46016') --赏金幻魔进入场景
|
|
self:RegisterProtocal(46017, 'on46017') --赏金幻魔倒计时踢人
|
|
self:RegisterProtocal(46018, 'on46018') --赏金幻魔单个boss状态变更
|
|
self:RegisterProtocal(46019, 'on46019') --赏金幻魔鼓舞次数查询
|
|
self:RegisterProtocal(46020, 'on46020') --世界BOSS-护盾上限值
|
|
self:RegisterProtocal(46021, 'on46021') --赏金幻魔协助者伤害
|
|
self:RegisterProtocal(46022, 'on46022') --赏金幻魔拾取掉落奖励
|
|
self:RegisterProtocal(46023, 'on46023') --场景对应Boss_id
|
|
self:RegisterProtocal(46024, 'on46024') --关注操作
|
|
self:RegisterProtocal(46025, 'on46025') --boss自己的总伤害
|
|
----------星域幻魔--------------------------
|
|
self:RegisterProtocal(46101, 'on46101') --星域幻魔-列表信息
|
|
self:RegisterProtocal(46102, 'on46102') --星域幻魔-个人次数信息
|
|
self:RegisterProtocal(46103, 'on46103') --星域幻魔-伤害排名信息
|
|
self:RegisterProtocal(46104, 'on46104') --星域幻魔-协助者伤害
|
|
self:RegisterProtocal(46105, 'on46105') --星域幻魔-脱战通知
|
|
self:RegisterProtocal(46106, 'on46106') --星域幻魔-boss进场
|
|
self:RegisterProtocal(46107, 'on46107') -- 次元/星域幻魔刷新
|
|
self:RegisterProtocal(46108, 'on46108') -- 混乱星域每日剩余免费原地复活次数
|
|
self:RegisterProtocal(46109, 'on46109') -- 废都boss-精英怪物信息
|
|
self:RegisterProtocal(46110, 'on46110') -- 废都boss-星域幻魔精英怪物信息(广播)
|
|
self:RegisterProtocal(46111, 'on46111') -- 废都boss-查询免战时间
|
|
self:RegisterProtocal(46112, 'on46112') -- 废都boss-使用免战时间
|
|
self:RegisterProtocal(46113, 'on46113') -- 废都boss-免战时间停止通知
|
|
self:RegisterProtocal(46114, 'on46114') -- 废都boss-推荐幻魔卡
|
|
|
|
----------活动幻魔--------------------------
|
|
self:RegisterProtocal(46026, 'on46026') --活动BOSS-信息
|
|
self:RegisterProtocal(46027, 'on46027') --活动BOSS-当前场景的BOSS信息
|
|
self:RegisterProtocal(46028, 'on46028') --活动BOSS-点击立即前往某个活动场景
|
|
self:RegisterProtocal(46029, 'on46029') --活动BOSS-伤害排名信息-进入BOSS区域请求
|
|
self:RegisterProtocal(46030, 'on46030') --活动BOSS-单个玩家总伤害
|
|
self:RegisterProtocal(46031, 'on46031') --活动BOSS-分享
|
|
|
|
self:RegisterProtocal(46032, 'on46032') --召唤独享BOSS
|
|
self:RegisterProtocal(46033, 'on46033') --赏金查询免战时间
|
|
self:RegisterProtocal(46034, 'on46034') --赏金使用免战时间
|
|
self:RegisterProtocal(46035, 'on46035') --赏金免战时间停止通知
|
|
end
|
|
|
|
function BossController:BossControllerCheckRed( check_new )
|
|
self.model:HasBossRed(check_new)
|
|
-- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 460,bool_red)
|
|
self.model:Fire(BossModel.EVENT_UPDATE_RED_DOT)
|
|
end
|
|
|
|
--刷新boss疲劳
|
|
function BossController:RefreshBossTired( )
|
|
if SceneManager.Instance:IsBossDesertedScene() then
|
|
local has_num = self.model:HasDesertedBossRed()
|
|
if not has_num then
|
|
local role = Scene.Instance:GetMainRole()
|
|
if role then
|
|
role:SetBossTired(true)
|
|
end
|
|
return
|
|
end
|
|
end
|
|
local role = Scene.Instance:GetMainRole()
|
|
if role then
|
|
role:SetBossTired(false)
|
|
end
|
|
end
|
|
--切换场景
|
|
function BossController:ChangeScene()
|
|
self.model:SetFestivalBossRankInfo(false)--活动幻魔清数据
|
|
self:CheckFestivalBossView()
|
|
self:CheckFestivalFindWay()
|
|
-------------------------
|
|
local scene_mgr = SceneManager.Instance
|
|
local last = scene_mgr.last_scene_id
|
|
-------------------------
|
|
--[[if scene_mgr:IsBossWorldScene(last) and (not scene_mgr:IsBossWorldScene()) then
|
|
self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.World)
|
|
self:SetMainUIVisible(true)
|
|
self.model:SetCurFightBossId(nil)--重置boss_id
|
|
else--]]
|
|
if scene_mgr:IsBossMoneyScene(last) and (not scene_mgr:IsBossMoneyScene()) then
|
|
self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.Money)
|
|
self:SetMainUIVisible(true)
|
|
if self.listen_support_result or self.force_no_open_view then
|
|
self.force_no_open_view = false
|
|
--加一个判断,有收到协助者结算的坚决不弹
|
|
else
|
|
if (not scene_mgr:IsBossMoneyScene()) and (not scene_mgr:IsBossPersonScene()) and self.model:HasMoneyBossRed() then
|
|
OpenFun.Open(460,3)
|
|
end
|
|
end
|
|
if self.model.need_show_money_result then
|
|
self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,self.model.need_show_money_result)
|
|
end
|
|
self.model:SetCurFightBossId(nil)--重置boss_id
|
|
elseif scene_mgr:IsBossDesertedScene(last) then
|
|
-- 需要确确实实是从星域幻魔返回到大世界场景,才需要撤销相关信息栏的隐藏
|
|
if scene_mgr:IsMainCityAndFieldScene() then
|
|
self:SetMainUIVisible(true)
|
|
end
|
|
if not scene_mgr:IsBossMoneyScene() then--赏金不用重置,会有协议更新
|
|
self.model:SetCurFightBossId(nil)--重置boss_id
|
|
end
|
|
else
|
|
if scene_mgr:IsBossPersonScene(last) then
|
|
--新手期间打完出来要继续任务
|
|
if RoleManager.Instance.mainRoleInfo.level <= Config.ConfigTaskEffect.GuideLevel then
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
return
|
|
end
|
|
if (not scene_mgr:IsBossPersonScene()) and self.model:HasPersonBossRed() then
|
|
OpenFun.Open(460,1)
|
|
end
|
|
self.model:SetCurFightBossId(nil)--重置boss_id
|
|
end
|
|
end
|
|
|
|
-------------------------
|
|
-- if self.bossworldsceneview and self.bossworldsceneview:HasOpen() then
|
|
-- self.bossworldsceneview:Close()
|
|
-- end
|
|
if self.bossmoneysceneview and self.bossmoneysceneview:HasOpen() then
|
|
self.bossmoneysceneview:Close()
|
|
end
|
|
if self.bossdesertedsceneview and self.bossdesertedsceneview:HasOpen() then
|
|
self.bossdesertedsceneview:Close()
|
|
end
|
|
-------------------------
|
|
--[[if scene_mgr:IsBossWorldScene() then
|
|
self:SetMainUIVisible(false)
|
|
if not self.bossworldsceneview then
|
|
self.bossworldsceneview = BossWorldSceneView.New()
|
|
end
|
|
if not self.bossworldsceneview:HasOpen() then
|
|
self.bossworldsceneview:Open()
|
|
end
|
|
GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
|
|
else--]]
|
|
if scene_mgr:IsBossMoneyScene() then
|
|
self.listen_support_result = false--赏金幻魔协助者结算标记
|
|
self:SetMainUIVisible(false)
|
|
if not self.bossmoneysceneview then
|
|
self.bossmoneysceneview = BossMoneySceneView.New()
|
|
end
|
|
if not self.bossmoneysceneview:HasOpen() then
|
|
self.bossmoneysceneview:Open()
|
|
end
|
|
GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
|
|
elseif scene_mgr:IsBossDesertedScene() then
|
|
self:SetMainUIVisible(false)
|
|
if not self.bossdesertedsceneview then
|
|
self.bossdesertedsceneview = BossDesertedSceneView.New()
|
|
end
|
|
if not self.bossdesertedsceneview:HasOpen() then
|
|
self.bossdesertedsceneview:Open()
|
|
end
|
|
end
|
|
self:RefreshBossTired()
|
|
end
|
|
|
|
function BossController: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 BossController:InitEvent()
|
|
local function gameStartHandler( )
|
|
self.model:ResetData()
|
|
self.never_req_46027 = nil
|
|
local delay = function()
|
|
-- self.model:Fire(BossConst.REQ_WORLD_BOSS_STATUS)
|
|
self.model:Fire(BossConst.REQ_MONEY_PLAYER_INFO)
|
|
-- 请求一下剩余的幻魔星域次数 不然红点不正确
|
|
self:SendFmtToGame(46102)
|
|
self:SendFmtToGame(46108)
|
|
end
|
|
setTimeout(delay,2)
|
|
end
|
|
GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler)
|
|
|
|
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 need_find_boss_id = self.model:GetNeedFindBoss()
|
|
if need_find_boss_id then
|
|
local cfg = Config.Desertedbossinfo[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
|
|
GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, loadComplete)
|
|
|
|
local function onOpenBossView(boss_type, boss_id)
|
|
if (not boss_type) and boss_id then
|
|
boss_type = self.model:GetBossTypeByBossId( boss_id )
|
|
end
|
|
if self.bossbaseview == nil then
|
|
self.bossbaseview = BossBaseView.New()
|
|
self.bossbaseview:Open(boss_type, boss_id)
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.OPEN_BOSS_VIEW, onOpenBossView)
|
|
|
|
local function OPEN_WORLD_WEEK_RANK( boss_id )
|
|
if not boss_id then return end
|
|
if not self.bossworldweekrankview then
|
|
self.bossworldweekrankview = BossWorldWeekRankView.New()
|
|
self.bossworldweekrankview:Open(boss_id)
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.OPEN_WORLD_WEEK_RANK,OPEN_WORLD_WEEK_RANK)
|
|
|
|
local function OPEN_BREAK_PROTECT_VIEW( data )
|
|
if not data then return end
|
|
if not self.bossbreakprotectview then
|
|
self.bossbreakprotectview = BossBreakProtectView.New()
|
|
self.bossbreakprotectview:Open(data)
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.OPEN_BREAK_PROTECT_VIEW,OPEN_BREAK_PROTECT_VIEW)
|
|
|
|
local function OPEN_MONEY_KILL_HISTORY_VIEW( )
|
|
if not self.bossmoneykillview then
|
|
self.bossmoneykillview = BossMoneyKillView.New()
|
|
self.bossmoneykillview:Open()
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.OPEN_MONEY_KILL_HISTORY_VIEW,OPEN_MONEY_KILL_HISTORY_VIEW)
|
|
|
|
local function OPEN_MONEY_REWARD_VIEW( boss_id )
|
|
if not boss_id then return end
|
|
if not self.bossmoneyrewardview then
|
|
self.bossmoneyrewardview = BossMoneyRewardView.New()
|
|
self.bossmoneyrewardview:Open(boss_id)
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.OPEN_MONEY_REWARD_VIEW,OPEN_MONEY_REWARD_VIEW)
|
|
|
|
local function OPEN_MONEY_RESULT_VIEW( data )
|
|
--如果这个时候有极品装备展示,就缓存这次打开界面
|
|
if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then
|
|
GlobalEventSystem:Fire(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, nil, BossEquipShowTIps.BossType.MoneyBoss, data)
|
|
return
|
|
end
|
|
|
|
print('----LZR BossController.lua 297--=',data)
|
|
PrintCallStack()
|
|
if self.money_result_view then
|
|
self.money_result_view:Close()
|
|
self.money_result_view = nil
|
|
end
|
|
if self.delay_show_result_id then
|
|
GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
|
|
self.delay_show_result_id = nil
|
|
end
|
|
-------------------------
|
|
local show_data = DeepCopy(data)--打开界面的时候界面为空,保存下来确定数据不丢失
|
|
local function delay( )
|
|
self.money_result_view = BossMoneyResultView.New()
|
|
self.money_result_view:Open(show_data)
|
|
end
|
|
self.delay_show_result_id = setTimeout(delay,0.25)
|
|
end
|
|
self.model:Bind(BossConst.OPEN_MONEY_RESULT_VIEW,OPEN_MONEY_RESULT_VIEW)
|
|
|
|
local function OPEN_BOSS_RELIVE_TIP( boss_id )
|
|
if SceneManager.Instance:IsMainCityorYieldScene() then
|
|
local bossrelivetip = BossReliveTip.New()
|
|
bossrelivetip:Open(boss_id)
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.OPEN_BOSS_RELIVE_TIP,OPEN_BOSS_RELIVE_TIP)
|
|
|
|
local function OPEN_BOSS_CARD_VIEW(type_id)
|
|
local floor = false
|
|
--赏金幻魔刷新卡
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
|
|
if type_id == BossModel.BOSS_CARD.REFRESH_MONEY_BOSS_ID then
|
|
if not SceneManager.getInstance():IsMainCityorYieldScene() then
|
|
Message.show(string.format("请在野外场景使用%s", basic.goods_name))
|
|
return
|
|
end
|
|
|
|
--星域幻魔刷新卡
|
|
elseif type_id == BossModel.BOSS_CARD.REFRESH_DESERTED_BOSS_ID then
|
|
if not SceneManager.getInstance():IsBossDesertedScene() then
|
|
Message.show(string.format("请在幻魔星域场景使用%s", basic.goods_name))
|
|
return
|
|
end
|
|
floor = BossModel:GetInstance():GetDesertedSceneFloor()
|
|
--赏金幻魔独享卡
|
|
elseif type_id == BossModel.BOSS_CARD.OWNER_MONEY_BOSS_ID then
|
|
if not SceneManager.getInstance():IsMainCityorYieldScene() then
|
|
Message.show(string.format("请在野外场景使用%s", basic.goods_name))
|
|
return
|
|
end
|
|
--星域幻魔独享卡
|
|
elseif type_id == BossModel.BOSS_CARD.OWNER_DESERTED_BOSS_ID then
|
|
if not SceneManager.getInstance():IsMainCityorYieldScene() then
|
|
Message.show(string.format("请在野外场景使用%s", basic.goods_name))
|
|
return
|
|
end
|
|
else
|
|
return
|
|
end
|
|
if self.boss_card_view == nil then
|
|
self.boss_card_view = BossCardView.New()
|
|
end
|
|
self.boss_card_view:Open(type_id, floor)
|
|
end
|
|
self.model:Bind(BossConst.OPEN_BOSS_CARD_VIEW,OPEN_BOSS_CARD_VIEW)
|
|
|
|
local function onOpenBossProtectTipsView(boss_type)
|
|
if boss_type == BossProtectTipsView.BossType.Money then
|
|
self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46033)
|
|
elseif boss_type == BossProtectTipsView.BossType.Deserted then
|
|
self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46111)
|
|
end
|
|
if self.boss_protect_tips_view == nil then
|
|
self.boss_protect_tips_view = BossProtectTipsView.New()
|
|
end
|
|
self.boss_protect_tips_view:Open(boss_type)
|
|
end
|
|
self.model:Bind(BossConst.OPEN_BOSS_PROTECT_TIPS_VIEW,onOpenBossProtectTipsView)
|
|
|
|
|
|
local function CLOSE_BOSS_CARD_VIEW()
|
|
if self.boss_card_view and self.boss_card_view:HasOpen() then
|
|
self.boss_card_view:Close()
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.CLOSE_BOSS_CARD_VIEW,CLOSE_BOSS_CARD_VIEW)
|
|
|
|
local function onLevelChange( level )
|
|
if GetModuleOpenLevel( 460,1,true ) == level or GetModuleOpenLevel( 460,3,true ) == level
|
|
then
|
|
self:BossControllerCheckRed(true)
|
|
elseif self.model.check_red_money_lv[level] or self.model.check_red_person_lv[level] then
|
|
self:BossControllerCheckRed(true)
|
|
elseif GetModuleOpenLevel(331,117) then--节日幻魔左侧栏
|
|
self:CheckFestivalBossView()
|
|
end
|
|
end
|
|
RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelChange)
|
|
|
|
local function BOARD_GUILD_SUPPOR_REMOVE( role_id )
|
|
if role_id then
|
|
self.model:SetMoneyHelperInfo(nil,role_id)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
|
|
end
|
|
end
|
|
GuildModel:getInstance():Bind(GuildModel.BOARD_GUILD_SUPPOR_REMOVE,BOARD_GUILD_SUPPOR_REMOVE)
|
|
|
|
--世界BOSS活动状态
|
|
local function REQ_WORLD_BOSS_STATUS( )
|
|
self:SendFmtToGame(46001)
|
|
end
|
|
self.model:Bind(BossConst.REQ_WORLD_BOSS_STATUS,REQ_WORLD_BOSS_STATUS)
|
|
|
|
--世界BOSS列表信息
|
|
local function REQ_WORLD_BOSS_LIST_INFO( )
|
|
self:SendFmtToGame(46002)
|
|
end
|
|
self.model:Bind(BossConst.REQ_WORLD_BOSS_LIST_INFO,REQ_WORLD_BOSS_LIST_INFO)
|
|
|
|
--世界BOSS血量
|
|
local function REQ_WORLD_BOSS_HP( boss_id )
|
|
if not boss_id then return end
|
|
self:SendFmtToGame(46003,"i",boss_id)
|
|
end
|
|
self.model:Bind(BossConst.REQ_WORLD_BOSS_HP,REQ_WORLD_BOSS_HP)
|
|
|
|
--世界BOSS前往周榜
|
|
local function REQ_WORLD_BOSS_WEEK_RANK( show_week_type )
|
|
if not show_week_type then return end
|
|
self:SendFmtToGame(46004,"i",show_week_type)
|
|
end
|
|
self.model:Bind(BossConst.REQ_WORLD_BOSS_WEEK_RANK,REQ_WORLD_BOSS_WEEK_RANK)
|
|
|
|
--世界BOSS开启护盾礼包
|
|
local function REQ_OPEN_PROTECT_GIFT( boss_id,no )
|
|
if not boss_id or not no then return end
|
|
self:SendFmtToGame(46006,"ic",boss_id,no)
|
|
end
|
|
self.model:Bind(BossConst.REQ_OPEN_PROTECT_GIFT,REQ_OPEN_PROTECT_GIFT)
|
|
|
|
--退出BOSS场景
|
|
local function REQ_QUIT_SCENE( )
|
|
self:SendFmtToGame(46010)
|
|
end
|
|
self.model:Bind(BossConst.REQ_QUIT_SCENE,REQ_QUIT_SCENE)
|
|
|
|
--获取赏金幻魔玩家次数信息
|
|
local function REQ_MONEY_PLAYER_INFO( )
|
|
self:SendFmtToGame(46011)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_PLAYER_INFO,REQ_MONEY_PLAYER_INFO)
|
|
|
|
--获取赏金幻魔列表信息
|
|
local function REQ_MONEY_BOSS_INFO( )
|
|
self:SendFmtToGame(46012)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_BOSS_INFO,REQ_MONEY_BOSS_INFO)
|
|
|
|
--赏金幻魔击杀日志
|
|
local function REQ_MONEY_KILL_HISTORY( )
|
|
self:SendFmtToGame(46013)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_KILL_HISTORY,REQ_MONEY_KILL_HISTORY)
|
|
|
|
--赏金幻魔鼓舞
|
|
local function REQ_MONEY_BOSS_INSPIRE( type_id )
|
|
--type:int8 // 1彩钻/2红钻
|
|
if not type_id then return end
|
|
self:SendFmtToGame(46014,"c",type_id)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_BOSS_INSPIRE,REQ_MONEY_BOSS_INSPIRE)
|
|
|
|
--赏金幻魔进入场景
|
|
local function REQ_MONEY_BOSS_ENTER_SCENE( boss_id )
|
|
if not boss_id then return end
|
|
self:SendFmtToGame(46016,"i",boss_id)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_BOSS_ENTER_SCENE,REQ_MONEY_BOSS_ENTER_SCENE)
|
|
|
|
--赏金幻魔鼓舞次数查询
|
|
local function REQ_MONEY_BOSS_ENSPIRE_COUNT( boss_id )
|
|
if not boss_id then return end
|
|
self:SendFmtToGame(46019,"i",boss_id)
|
|
end
|
|
self.model:Bind(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,REQ_MONEY_BOSS_ENSPIRE_COUNT)
|
|
|
|
--关注操作
|
|
local function REQ_FOCUS_CHANGE( boss_type,boss_id,op_type )
|
|
if not boss_type or not boss_id or not op_type then return end
|
|
self:SendFmtToGame(46024,"cic",boss_type,boss_id,op_type)
|
|
end
|
|
self.model:Bind(BossConst.REQ_FOCUS_CHANGE,REQ_FOCUS_CHANGE)
|
|
|
|
function on_req_scmd( ... )
|
|
local args_list = {...}
|
|
if args_list[1] == 46101 or args_list[1] == 46109 then
|
|
self:SendFmtToGame(args_list[1],"c",args_list[2])
|
|
elseif args_list[1] == 46028 or args_list[1] == 46029 or args_list[1] == 46031 or args_list[1] == 46032 or args_list[1] == 46106 then
|
|
self:SendFmtToGame(args_list[1],"i",args_list[2])
|
|
elseif args_list[1] == 46107 then
|
|
self:SendFmtToGame(args_list[1],"ci",args_list[2], args_list[3])
|
|
else
|
|
self:SendFmtToGame(args_list[1])
|
|
end
|
|
end
|
|
self.model:Bind(BossConst.REQ_DESERTED_BOSS_SCMD, on_req_scmd)
|
|
|
|
-- 如果激活了星域幻魔免费复活相关的宠物生活技能,则需要主动请求次数
|
|
local function on_pet_life_skill_actived(skill_id)
|
|
if skill_id == PetConst.LifeSkill.BossFreeReBornTimes then
|
|
self:SendFmtToGame(46108)
|
|
end
|
|
end
|
|
PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived)
|
|
|
|
local function chnage_day_func(type)
|
|
if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
|
|
self:SendFmtToGame(46108)
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
|
|
|
|
local function onBossEquipShowTips(goods_vo, boss_type, close_data)
|
|
--这里处理延时打开界面界面操作
|
|
if boss_type or close_data then
|
|
if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then
|
|
self.BossEquipShowTIps:SetCloseData(boss_type, close_data)
|
|
self.model.boss_equip_tips_view_close_data = false
|
|
else
|
|
self.model.boss_equip_tips_view_close_data = {boss_type = boss_type,close_data = close_data}
|
|
|
|
--如果判断到专属boss有极品装备,如果2秒后没有捡到,也弹结算
|
|
if self.delay_show_result_id then
|
|
GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
|
|
self.delay_show_result_id = false
|
|
end
|
|
local function onDelayShow( ... )
|
|
if self.delay_show_result_id then
|
|
GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
|
|
self.delay_show_result_id = false
|
|
end
|
|
if self.model.boss_equip_tips_view_close_data then
|
|
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_DUNGEON_RESULT_VIEW,self.model.boss_equip_tips_view_close_data.close_data)
|
|
self.model.boss_equip_tips_view_close_data = false
|
|
end
|
|
end
|
|
self.delay_show_result_id = GlobalTimerQuest:AddDelayQuest(onDelayShow,4)
|
|
end
|
|
return
|
|
end
|
|
if not goods_vo then return end
|
|
if self.delay_show_result_id then
|
|
GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
|
|
self.delay_show_result_id = false
|
|
end
|
|
|
|
--如果此时已经弹了结算界面,就不在显示获得极品装备的提示
|
|
if BaseDungeonModel:getInstance().is_showing_dungeon_result_view then
|
|
return
|
|
end
|
|
if not self.BossEquipShowTIps then
|
|
self.BossEquipShowTIps = BossEquipShowTIps.New()
|
|
self.BossEquipShowTIps:Open(goods_vo)
|
|
else
|
|
self.BossEquipShowTIps:AddGoodsData(goods_vo)
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, onBossEquipShowTips)
|
|
|
|
end
|
|
|
|
--世界BOSS活动状态
|
|
function BossController:on46001( )
|
|
local scmd = SCMD46001.New(true)
|
|
self.model:SetWorldBossStatus(scmd.end_time)
|
|
-------------------------
|
|
local curTime = TimeUtil:getServerTime()
|
|
local status_time = scmd.end_time - curTime
|
|
if status_time > 0 then
|
|
ActivityIconManager:getInstance():addIcon(46002, status_time)
|
|
self.model:Fire(BossConst.REQ_WORLD_BOSS_LIST_INFO)
|
|
else
|
|
ActivityIconManager:getInstance():deleteIcon(46002)
|
|
end
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_STATUS)
|
|
end
|
|
|
|
--世界BOSS列表信息
|
|
function BossController:on46002( )
|
|
local scmd = SCMD46002.New(true)
|
|
self.model:SetWorldBossInfo(scmd)
|
|
-------------------------
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO)
|
|
end
|
|
|
|
--世界BOSS血量
|
|
function BossController:on46003( )
|
|
local scmd = SCMD46003.New(true)
|
|
self.model:SetWorldBossHpList(scmd)
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_HP)
|
|
end
|
|
|
|
--世界BOSS前往周榜
|
|
function BossController:on46004( )
|
|
local scmd = SCMD46004.New(true)
|
|
self.model:SetWorldBossWeekRankList(scmd)
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_WEEK_RANK)
|
|
end
|
|
|
|
--世界BOSS收到护盾礼包
|
|
function BossController:on46005( )
|
|
local scmd = SCMD46005.New(true)
|
|
Message.show("收到护盾礼包")
|
|
self.model:Fire(BossConst.OPEN_BREAK_PROTECT_VIEW,scmd)
|
|
end
|
|
|
|
--世界BOSS开启护盾礼包
|
|
function BossController:on46006( )
|
|
local scmd = SCMD46006.New(true)
|
|
if scmd.res == 1 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.AWARD)
|
|
Message.show("开启成功!")
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--世界BOSS伤害列表
|
|
function BossController:on46007( )
|
|
local scmd = SCMD46007.New(true)
|
|
local type_id = self.model:GetBossTypeByBossId(scmd.boss_id)
|
|
self.model:ResetBossHurtInfo(type_id)
|
|
-------------------------
|
|
if TableSize(scmd.rank_list) > 0 then
|
|
for k,v in pairs(scmd.rank_list) do
|
|
self.model:SetBossHurtInfo( scmd.boss_id,v.role_id,v.name,v.hurt,scmd.boss_hp,v.type )
|
|
end
|
|
else
|
|
self.model:SetBossHurtInfo( scmd.boss_id,nil,nil,nil,scmd.boss_hp,nil )
|
|
end
|
|
-------------------------
|
|
self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT)
|
|
end
|
|
|
|
--世界BOSS单个伤害
|
|
function BossController:on46008( )
|
|
local scmd = SCMD46008.New(true)
|
|
self.model:SetBossHurtInfo( scmd.boss_id,scmd.role_id,scmd.name,scmd.hurt, nil, scmd.type )
|
|
self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT)
|
|
end
|
|
|
|
--单个世界BOSS状态刷新
|
|
function BossController:on46009( )
|
|
local scmd = SCMD46009.New(true)
|
|
local success = self.model:SetWorldBossInfoOne(scmd)
|
|
-------------------------
|
|
if success then
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO)
|
|
end
|
|
end
|
|
|
|
--退出BOSS场景
|
|
function BossController:on46010( )
|
|
local scmd = SCMD46010.New(true)
|
|
end
|
|
|
|
--获取赏金幻魔玩家次数信息
|
|
function BossController:on46011( )
|
|
local scmd = SCMD46011.New(true)
|
|
self.model:SetMoneyBossMyInfo(scmd)
|
|
self:BossControllerCheckRed(true)
|
|
self.model:Fire(BossConst.ANS_MONEY_PLAYER_INFO)
|
|
end
|
|
|
|
--获取赏金幻魔列表信息
|
|
function BossController:on46012( )
|
|
local scmd = SCMD46012.New(true)
|
|
for k,v in pairs(scmd.boss_info) do
|
|
self.model:SetMoneyBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count)
|
|
end
|
|
self:BossControllerCheckRed(true)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO)
|
|
end
|
|
|
|
--赏金幻魔击杀日志
|
|
function BossController:on46013( )
|
|
local scmd = SCMD46013.New(true)
|
|
self.model:SetMoneyBossKillHistory(scmd.drop_log)
|
|
self.model:Fire(BossConst.ANS_MONEY_KILL_HISTORY)
|
|
end
|
|
|
|
--赏金幻魔鼓舞
|
|
function BossController:on46014( )
|
|
local scmd = SCMD46014.New(true)
|
|
if scmd.res == 1 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
|
|
Message.show("鼓舞成功!")
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_INSPIRE)
|
|
if self.model:GetCurFightBossId( ) then
|
|
self.model:Fire(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,self.model:GetCurFightBossId( ))
|
|
end
|
|
else
|
|
if scmd.res == 1001 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT)
|
|
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true)
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
end
|
|
|
|
--收到赏金幻魔结算
|
|
function BossController:on46015( )
|
|
local scmd = SCMD46015.New(true)
|
|
if SceneManager.Instance:IsBossMoneyScene() then
|
|
self.model.need_show_money_result = scmd
|
|
else
|
|
self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,scmd)
|
|
self.model.need_show_money_result = false
|
|
end
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_RESULT)
|
|
end
|
|
|
|
--赏金幻魔进入场景
|
|
function BossController:on46016( )
|
|
local scmd = SCMD46016.New(true)
|
|
if scmd.res == 1 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
|
|
Message.show("进入场景中")
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_ENTER_SCENE)
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--赏金幻魔倒计时踢人
|
|
function BossController:on46017( )
|
|
local scmd = SCMD46017.New(true)
|
|
end
|
|
|
|
--赏金幻魔单个boss状态变更
|
|
function BossController:on46018( )
|
|
local scmd = SCMD46018.New(true)
|
|
--[[if scmd.next_time == 0 then
|
|
local ser_data = false
|
|
for k,v in pairs(self.model:GetMoneyBossInfo()) do
|
|
if v.boss_id == scmd.boss_id then
|
|
ser_data = v
|
|
end
|
|
end
|
|
if ser_data and ser_data.reborn_time ~= 0 and ser_data.is_focus == 1 then
|
|
--旧数据是已死亡,新数据是活着
|
|
self.model:Fire(BossConst.OPEN_BOSS_RELIVE_TIP,scmd.boss_id)
|
|
end
|
|
end--]]
|
|
self.model:SetMoneyBossInfo(scmd.boss_id,scmd.next_time,scmd.killer)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO)
|
|
end
|
|
|
|
--赏金幻魔鼓舞次数查询
|
|
function BossController:on46019( )
|
|
local scmd = SCMD46019.New(true)
|
|
self.model:SetMoneyInspireCount(scmd.boss_id,scmd.by_gold,scmd.by_bgold)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_ENSPIRE_COUNT)
|
|
end
|
|
|
|
--世界BOSS-护盾上限值
|
|
function BossController:on46020( )
|
|
local scmd = SCMD46020.New(true)
|
|
self.model:SetWorldBossProtectMax(scmd)
|
|
self.model:Fire(BossConst.ANS_WORLD_BOSS_PROTECT)
|
|
end
|
|
|
|
--赏金幻魔协助者伤害
|
|
function BossController:on46021( )
|
|
local scmd = SCMD46021.New(true)
|
|
self.model:SetMoneyHelperInfo(scmd)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
|
|
end
|
|
|
|
--赏金幻魔拾取掉落奖励
|
|
function BossController:on46022( )
|
|
local scmd = SCMD46022.New(true)
|
|
for k,v in pairs(scmd.list) do
|
|
local new_data = {style = 0,typeId = v.goods_id,num = v.num}
|
|
if self.model.need_show_money_result then
|
|
table.insert( self.model.need_show_money_result.base_reward_list, new_data )
|
|
end
|
|
end
|
|
end
|
|
|
|
--场景对应Boss_id
|
|
function BossController:on46023( )
|
|
local scmd = SCMD46023.New(true)
|
|
self.model:SetCurFightBossId(scmd.boss_id)
|
|
self.model:Fire(BossConst.ANS_BOSS_ID_IN_SCENE)
|
|
end
|
|
|
|
function BossController:on46024( )
|
|
local scmd = SCMD46024.New(true)
|
|
if scmd.res == 1 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
|
|
self.model:ChangeBossFocusStatus( scmd.boss_id, scmd.op )
|
|
self.model:Fire(BossConst.ANS_FOCUS_CHANGE,scmd.boss_id, scmd.op)
|
|
if scmd.op == 1 then
|
|
Message.show("关注成功")
|
|
else
|
|
Message.show("已取消关注")
|
|
end
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--boss自己的总伤害(只在组队状态下有用)
|
|
function BossController:on46025( )
|
|
local scmd = SCMD46025.New(true)
|
|
self.model:SetMyHurtOnly(scmd)
|
|
self.model:Fire(BossConst.ANS_MY_HURT_INFO)
|
|
end
|
|
|
|
-- ############# 星域幻魔-列表信息 ###############
|
|
-- protocol=46101
|
|
-- {
|
|
-- c2s{
|
|
-- level:int8 // 层数
|
|
-- }
|
|
-- s2c{
|
|
-- boss_info:array{
|
|
-- boss_id:int32 // BossId
|
|
-- status:int32 // 0存活|复活时间
|
|
-- is_follow:int8 // 0未关注|1已关注
|
|
-- killer:string // 上次击杀者
|
|
-- }
|
|
-- }
|
|
-- }
|
|
|
|
function BossController:on46101( )
|
|
local scmd = SCMD46101.New(true)
|
|
self.scmd_boss_info = scmd
|
|
for k,v in pairs(scmd.boss_info) do
|
|
self.model:SetDesertedBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count)
|
|
end
|
|
self.model:Fire(BossConst.ANS_DESERTED_BOSS_INFO)
|
|
if SceneManager.Instance:IsShowGraveScene() then
|
|
self.model:UpdateSceneGrave(scmd)
|
|
end
|
|
end
|
|
|
|
function BossController:on46102( )
|
|
local scmd = SCMD46102.New(true)
|
|
self.model:SetDesertedBossNumInfo(scmd)
|
|
self:BossControllerCheckRed(true)
|
|
self:RefreshBossTired()
|
|
end
|
|
|
|
function BossController:on46103( )
|
|
if self.delay_clear_desert_call then
|
|
self.delay_clear_desert_call()
|
|
end
|
|
-------------------------
|
|
local scmd = SCMD46103.New(true)
|
|
self.model:SetDesertedBossRankInfo(scmd)
|
|
end
|
|
|
|
function BossController:on46104( )
|
|
local scmd = SCMD46104.New(true)
|
|
self.model:SetMoneyHelperInfo(scmd)
|
|
self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
|
|
end
|
|
|
|
function BossController:on46105( )
|
|
local scmd = SCMD46105.New(true)
|
|
-------------------------
|
|
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:CleanDesertedBossRankInfoById(scmd.boss_id)
|
|
self.model:SetCurFightBossId(nil)--重置boss_id
|
|
self.model:Fire(BossConst.OUT_OF_DESERTED_BOSS_LIST, scmd.boss_id, true)
|
|
end
|
|
local cur_data = self.model:GetDesertedBossRankInfo(scmd.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
|
|
|
|
function BossController:on46106( )
|
|
local scmd = SCMD46106.New(true)
|
|
if scmd.res == 1 then
|
|
GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
|
|
Message.show("进入场景中")
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
function BossController:on46107( )
|
|
local scmd = SCMD46107.New(true)
|
|
if scmd.res == 1 then
|
|
if scmd.type == 1 then
|
|
self.model:Fire(BossConst.REQ_MONEY_BOSS_INFO)
|
|
else
|
|
local floor = BossModel:GetInstance():GetDesertedSceneFloor()
|
|
self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46101,floor)
|
|
self.model:Fire(BossConst.BOSS_CARD_REFRESH, scmd.type, scmd.boss_id)
|
|
end
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--活动BOSS-信息
|
|
function BossController:on46026( )
|
|
local scmd = SCMD46026.New(true)
|
|
self.model:SetFestivalBossList(scmd)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REFRESH_FESTIVAL_BOSS)
|
|
-------------------------
|
|
local sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS)
|
|
if scmd.list and TableSize(scmd.list) > 0 then
|
|
if not self.never_req_46027 then
|
|
-- 上线拿一次46027,以后不用,会推送,防止死循环
|
|
self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46027)
|
|
self.never_req_46027 = true
|
|
end
|
|
-------------------------
|
|
if OperateActivityModel:getInstance().is_open_festival_boss_view then
|
|
else
|
|
--如果是boss活动状态,那么就出一下红点
|
|
KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false )
|
|
end
|
|
else
|
|
local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {}
|
|
if data[sub_type] == nil then
|
|
--第一次活动出现,给个红点
|
|
KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false )
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 活动BOSS-当前场景的BOSS信息
|
|
function BossController:on46027( )
|
|
local scmd = SCMD46027.New(true)
|
|
self.model:SetFestivalBossSceneList(scmd)
|
|
self:CheckFestivalBossView()
|
|
self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46026)
|
|
end
|
|
|
|
function BossController:CheckFestivalBossView( )
|
|
if not self.opfestivalbosssceneview then
|
|
--进场景创界面,隐藏,更新数据的时候显示
|
|
--当前怪物死亡/离场的时候清榜单数据隐藏界面
|
|
--切场景的时候立即关界面,立即清榜单数据
|
|
local function scene_have_act_boss( )
|
|
local fes_boss_list = self.model:GetFestivalBossSceneList()
|
|
if fes_boss_list and fes_boss_list.scene_id_list and fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()] and
|
|
fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()][MapModel:getInstance():GetServerLine() or 1] then
|
|
--检查活动幻魔场景以及分线
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
-------------------------
|
|
local id = KfActivityModel.TabID.FestivalBoss
|
|
local act_type = KfActivityModel:getInstance():GetActType(nil,id)
|
|
if not act_type then
|
|
-- Message.show("活动未开启","fault")
|
|
return
|
|
end
|
|
if id then
|
|
local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启
|
|
if not open_bool then
|
|
-- Message.show("活动未开启","fault")
|
|
return
|
|
end
|
|
end
|
|
if scene_have_act_boss() and GetModuleIsOpen(331,117) then
|
|
--有活动且活动已开放
|
|
self.opfestivalbosssceneview = OpFestivalBossSceneView.New()
|
|
self.opfestivalbosssceneview:Open()
|
|
end
|
|
end
|
|
end
|
|
|
|
--活动BOSS-寻路检查
|
|
function BossController:CheckFestivalFindWay( )
|
|
if self.model.festival_boss_find_way_data then
|
|
local param_list = self.model.festival_boss_find_way_data
|
|
local scene_id = tonumber(param_list[2])
|
|
local line = tonumber(param_list[3]) or 1
|
|
if scene_id ~= SceneManager.Instance:GetSceneId() or MapModel:getInstance():GetServerLine() ~= line then
|
|
--场景不对路,中止交易
|
|
self.model.festival_boss_find_way_data = nil
|
|
return
|
|
end
|
|
local scene_info = SceneManager:getInstance():GetSceneInfo(scene_id)
|
|
local x = tonumber(param_list[4]) or 0
|
|
local y = tonumber(param_list[5]) or 0
|
|
if scene_info then
|
|
--如果在当前场景当前线路,就直接寻路
|
|
local findVo = FindVo.New()
|
|
findVo.type = FindVo.POINT
|
|
findVo.sceneId = scene_id
|
|
findVo.x = x/SceneObj.LogicRealRatio.x
|
|
findVo.y = y/SceneObj.LogicRealRatio.y
|
|
findVo.range = 3
|
|
GlobalEventSystem:Fire(EventName.FIND,findVo)
|
|
end
|
|
end
|
|
end
|
|
|
|
--活动BOSS-点击立即前往某个活动场景
|
|
function BossController:on46028( )
|
|
local scmd = SCMD46028.New(true)
|
|
if scmd.res == 1 then
|
|
Message.show("操作成功~")
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--活动BOSS-伤害排名信息-进入BOSS区域请求
|
|
--把榜单请求放到界面里面去,免得controller太多浪费
|
|
function BossController:on46029( )
|
|
local scmd = SCMD46029.New(true)
|
|
self.model:SetFestivalBossRankInfo(scmd)
|
|
-------------------------
|
|
local id = KfActivityModel.TabID.FestivalBoss
|
|
local act_type = KfActivityModel:getInstance():GetActType(nil,id)
|
|
if not act_type then
|
|
return
|
|
end
|
|
if id then
|
|
local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启
|
|
if not open_bool then
|
|
return
|
|
end
|
|
end
|
|
if GetModuleIsOpen(331,117) then
|
|
--有活动且活动已开放
|
|
if self.opfestivalbosssceneview then
|
|
self.opfestivalbosssceneview:UpdateView()
|
|
end
|
|
end
|
|
end
|
|
|
|
--活动BOSS-单个玩家总伤害
|
|
function BossController:on46030( )
|
|
local scmd = SCMD46030.New(true)
|
|
if self.opfestivalbosssceneview then
|
|
local rank_info = self.model:GetFestivalBossRankInfo()
|
|
if rank_info then
|
|
if TableSize(rank_info.rank_list) == 0 then
|
|
BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id)
|
|
else
|
|
if rank_info and rank_info.id == scmd.id then
|
|
rank_info.list_role[scmd.role_id] = scmd
|
|
end
|
|
self.opfestivalbosssceneview:UpdateView()
|
|
end
|
|
else
|
|
BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
--活动BOSS-分享
|
|
function BossController:on46031( )
|
|
local scmd = SCMD46031.New(true)
|
|
if scmd.res == 1 then
|
|
--发送坐标 用超链接的方法
|
|
local role = Scene.Instance:GetMainRole()
|
|
if not role then return end
|
|
local scene_id = scmd.scene_id
|
|
local line = scmd.pool
|
|
local x = role.logic_pos.x
|
|
local y = role.logic_pos.y
|
|
|
|
if not SceneManager:getInstance():IsBlockXY(x, y) then
|
|
Message.show("分享成功!")
|
|
local scene_name = SceneManager:getInstance():GetSceneInfo(scene_id).name
|
|
local content = string.format("%s<a@pos_festival_boss@%s@%s@%s@%s><color=%s>[%s(%d,%d)]</color></a>","发现<color=#ff203a>远古魔龙</color>,我在", scene_id, line, role.real_pos.x, role.real_pos.y, ColorUtil.BLUE_DARK,scene_name, x, y)
|
|
local tmpArgs = ChatModel:getInstance():GetAllArgsText(content)
|
|
content = ChatModel:getInstance():GetHyperlinkText(content)
|
|
ChatModel:getInstance():Fire(ChatModel.SEND_MSG, self.model.festival_boss_share_channel, content, 0, tmpArgs, ChatModel.CHAT_COMMON_TYPE.SYSTEM)
|
|
end
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--召唤独享BOSS
|
|
function BossController:on46032( )
|
|
local scmd = SCMD46032.New(true)
|
|
if scmd.res == 1 then
|
|
Message.show("召唤成功")
|
|
self.model:Fire(BossConst.CLOSE_BOSS_CARD_VIEW)
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--赏金查询免战时间
|
|
function BossController:on46033( )
|
|
local scmd = SCMD46033.New(true)
|
|
PrintTable(scmd)
|
|
self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
end
|
|
|
|
--赏赏金使用免战时间
|
|
function BossController:on46034( )
|
|
local scmd = SCMD46034.New(true)
|
|
PrintTable(scmd)
|
|
if scmd.res == 1 then
|
|
self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--赏金免战时间停止通知
|
|
function BossController:on46035( )
|
|
local scmd = SCMD46035.New(true)
|
|
PrintTable(scmd)
|
|
self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Money)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
end
|
|
|
|
--星域幻魔剩余免费复活次数
|
|
function BossController:on46108( )
|
|
local scmd = SCMD46108.New(true)
|
|
self.model:UpdateLeftDesertedBossFreeReliveTimes(scmd)
|
|
end
|
|
|
|
--星域幻魔精英怪物信息
|
|
function BossController:on46109( )
|
|
local scmd = SCMD46109.New(true)
|
|
self.model:SetLeftDesertedMonsterInfo(scmd)
|
|
self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH)
|
|
end
|
|
|
|
--星域幻魔精英怪物信息(广播)
|
|
function BossController:on46110( )
|
|
local scmd = SCMD46110.New(true)
|
|
self.model:SetLeftDesertedMonsterNumber(scmd)
|
|
self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH)
|
|
end
|
|
|
|
--星域幻魔 查询免战时间
|
|
function BossController:on46111( )
|
|
local scmd = SCMD46111.New(true)
|
|
PrintTable(scmd)
|
|
self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
end
|
|
|
|
--星域幻魔 使用免战时间
|
|
function BossController:on46112( )
|
|
local scmd = SCMD46112.New(true)
|
|
PrintTable(scmd)
|
|
if scmd.res == 1 then
|
|
self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
else
|
|
ErrorCodeShow(scmd.res)
|
|
end
|
|
end
|
|
|
|
--星域幻魔 免战时间停止通知
|
|
function BossController:on46113( )
|
|
local scmd = SCMD46113.New(true)
|
|
PrintTable(scmd)
|
|
self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Deserted)
|
|
self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
|
|
end
|
|
|
|
|
|
--废都幻魔-推荐幻魔卡
|
|
function BossController:on46114( )
|
|
local scmd = SCMD46114.New(true)
|
|
print('Ych:BossController.lua[1175] data', VipModel.getInstance():IsCanShowVipCardTips() )
|
|
if VipModel.getInstance():IsCanShowVipCardTips() then
|
|
GlobalEventSystem:Fire(EventName.SHOW_KILL_DESERTED_BOSS_BUY_VIP_CARD_TIPS_EVENT)
|
|
end
|
|
end
|