源战役客户端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

1237 řádky
43 KiB

před 4 týdny
  1. require("game.boss.BossConst")
  2. require("game.boss.BossModel")
  3. require("game.proto.460.Require460")
  4. require("game.proto.461.Require461")
  5. require("game.boss.view.BossBaseView") -- boss主界面
  6. require("game.boss.view.BossPersonSubView") -- 专属幻魔子界面
  7. require("game.boss.view.BossPersonTabItem") -- 专属幻魔标签Tab
  8. require("game.boss.view.BossPersonWaveItem") -- 专属幻魔波数进度item
  9. require("game.boss.view.BossWorldSubView") -- 世界boss子界面
  10. require("game.boss.view.BossWorldTabItem") -- 世界boss标签Tab
  11. require("game.boss.view.BossWorldWeekRankView") -- 世界周榜
  12. require("game.boss.view.BossWorldWeekRankItem") -- 世界周榜
  13. require("game.boss.view.BossWorldWeekTabItem") -- 世界周榜
  14. require("game.boss.view.BossBreakProtectView") -- 破盾礼包界面
  15. require("game.boss.view.BossWorldSceneView") -- 世界boss场景
  16. require("game.boss.view.BossWorldSceneRankItem") -- 世界boss场景的排行
  17. require("game.boss.view.BossMoneySubView") -- 赏金幻魔子界面
  18. require("game.boss.view.BossMoneyTabItem") -- 赏金幻魔标签Tab
  19. require("game.boss.view.BossMoneyKillView") -- 赏金幻魔击杀日志
  20. require("game.boss.view.BossMoneyKillItem") -- 赏金幻魔击杀日志
  21. require("game.boss.view.BossMoneyRewardView") -- 赏金幻魔奖励查询界面
  22. require("game.boss.view.BossMoneyResultView") -- 赏金幻魔结算界面
  23. require("game.boss.view.BossMoneySceneView") -- 赏金幻魔场景
  24. require("game.boss.view.BossMoneySceneRankItem") -- 赏金幻魔场景
  25. require("game.boss.view.BossMoneyHelpRankView") -- 赏金幻魔协助界面
  26. require("game.boss.view.BossMoneyHelpRankItem") -- 赏金幻魔协助界面
  27. require("game.boss.view.BossReliveTip") -- 复活提示tip
  28. require("game.boss.view.BossDesertedSubView") -- 星域幻魔
  29. require("game.boss.view.BossDesertedSceneView") -- 星域幻魔场景
  30. require("game.boss.view.BossDesertedSceneBossItem") -- 星域幻魔场景幻魔信息节点
  31. require("game.boss.view.BossDesertedSceneRankItem") -- 星域幻魔场景排行节点
  32. require("game.boss.view.BossCardItem") -- boss刷新卡item
  33. require("game.boss.view.BossCardView") -- boss刷新卡View
  34. require("game.boss.view.BossCardTap") -- boss刷新卡标签
  35. require("game.boss.view.BossVipCardTipItem") -- boss尊享卡提示标签
  36. require("game.boss.view.BossProtectTipsView") --boss免战提示界面
  37. require("game.boss.view.BossEquipShowTIps") --boss装备掉落展示
  38. -------------------------
  39. BossController = BossController or BaseClass(BaseController)
  40. function BossController:__init()
  41. BossController.Instance = self
  42. self.model = BossModel:GetInstance()
  43. self:EnableCheckoutClear()
  44. self:InitEvent()
  45. self:RegisterAllProtocals()
  46. end
  47. function BossController:RegisterAllProtocals()
  48. self:RegisterProtocal(46001, 'on46001') --世界BOSS活动状态
  49. self:RegisterProtocal(46002, 'on46002') --世界BOSS列表信息
  50. self:RegisterProtocal(46003, 'on46003') --世界BOSS血量
  51. self:RegisterProtocal(46004, 'on46004') --世界BOSS前往周榜
  52. self:RegisterProtocal(46005, 'on46005') --世界BOSS收到护盾礼包
  53. self:RegisterProtocal(46006, 'on46006') --世界BOSS开启护盾礼包
  54. self:RegisterProtocal(46007, 'on46007') --世界BOSS伤害列表
  55. self:RegisterProtocal(46008, 'on46008') --世界BOSS单个伤害
  56. self:RegisterProtocal(46009, 'on46009') --单个世界BOSS状态刷新
  57. self:RegisterProtocal(46010, 'on46010') --退出BOSS场景
  58. self:RegisterProtocal(46011, 'on46011') --获取赏金幻魔玩家次数信息
  59. self:RegisterProtocal(46012, 'on46012') --获取赏金幻魔列表信息
  60. self:RegisterProtocal(46013, 'on46013') --赏金幻魔击杀日志
  61. self:RegisterProtocal(46014, 'on46014') --赏金幻魔鼓舞
  62. self:RegisterProtocal(46015, 'on46015') --收到赏金幻魔结算
  63. self:RegisterProtocal(46016, 'on46016') --赏金幻魔进入场景
  64. self:RegisterProtocal(46017, 'on46017') --赏金幻魔倒计时踢人
  65. self:RegisterProtocal(46018, 'on46018') --赏金幻魔单个boss状态变更
  66. self:RegisterProtocal(46019, 'on46019') --赏金幻魔鼓舞次数查询
  67. self:RegisterProtocal(46020, 'on46020') --世界BOSS-护盾上限值
  68. self:RegisterProtocal(46021, 'on46021') --赏金幻魔协助者伤害
  69. self:RegisterProtocal(46022, 'on46022') --赏金幻魔拾取掉落奖励
  70. self:RegisterProtocal(46023, 'on46023') --场景对应Boss_id
  71. self:RegisterProtocal(46024, 'on46024') --关注操作
  72. self:RegisterProtocal(46025, 'on46025') --boss自己的总伤害
  73. ----------星域幻魔--------------------------
  74. self:RegisterProtocal(46101, 'on46101') --星域幻魔-列表信息
  75. self:RegisterProtocal(46102, 'on46102') --星域幻魔-个人次数信息
  76. self:RegisterProtocal(46103, 'on46103') --星域幻魔-伤害排名信息
  77. self:RegisterProtocal(46104, 'on46104') --星域幻魔-协助者伤害
  78. self:RegisterProtocal(46105, 'on46105') --星域幻魔-脱战通知
  79. self:RegisterProtocal(46106, 'on46106') --星域幻魔-boss进场
  80. self:RegisterProtocal(46107, 'on46107') -- 次元/星域幻魔刷新
  81. self:RegisterProtocal(46108, 'on46108') -- 混乱星域每日剩余免费原地复活次数
  82. self:RegisterProtocal(46109, 'on46109') -- 废都boss-精英怪物信息
  83. self:RegisterProtocal(46110, 'on46110') -- 废都boss-星域幻魔精英怪物信息(广播)
  84. self:RegisterProtocal(46111, 'on46111') -- 废都boss-查询免战时间
  85. self:RegisterProtocal(46112, 'on46112') -- 废都boss-使用免战时间
  86. self:RegisterProtocal(46113, 'on46113') -- 废都boss-免战时间停止通知
  87. self:RegisterProtocal(46114, 'on46114') -- 废都boss-推荐幻魔卡
  88. ----------活动幻魔--------------------------
  89. self:RegisterProtocal(46026, 'on46026') --活动BOSS-信息
  90. self:RegisterProtocal(46027, 'on46027') --活动BOSS-当前场景的BOSS信息
  91. self:RegisterProtocal(46028, 'on46028') --活动BOSS-点击立即前往某个活动场景
  92. self:RegisterProtocal(46029, 'on46029') --活动BOSS-伤害排名信息-进入BOSS区域请求
  93. self:RegisterProtocal(46030, 'on46030') --活动BOSS-单个玩家总伤害
  94. self:RegisterProtocal(46031, 'on46031') --活动BOSS-分享
  95. self:RegisterProtocal(46032, 'on46032') --召唤独享BOSS
  96. self:RegisterProtocal(46033, 'on46033') --赏金查询免战时间
  97. self:RegisterProtocal(46034, 'on46034') --赏金使用免战时间
  98. self:RegisterProtocal(46035, 'on46035') --赏金免战时间停止通知
  99. end
  100. function BossController:BossControllerCheckRed( check_new )
  101. self.model:HasBossRed(check_new)
  102. -- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 460,bool_red)
  103. self.model:Fire(BossModel.EVENT_UPDATE_RED_DOT)
  104. end
  105. --刷新boss疲劳
  106. function BossController:RefreshBossTired( )
  107. if SceneManager.Instance:IsBossDesertedScene() then
  108. local has_num = self.model:HasDesertedBossRed()
  109. if not has_num then
  110. local role = Scene.Instance:GetMainRole()
  111. if role then
  112. role:SetBossTired(true)
  113. end
  114. return
  115. end
  116. end
  117. local role = Scene.Instance:GetMainRole()
  118. if role then
  119. role:SetBossTired(false)
  120. end
  121. end
  122. --切换场景
  123. function BossController:ChangeScene()
  124. self.model:SetFestivalBossRankInfo(false)--活动幻魔清数据
  125. self:CheckFestivalBossView()
  126. self:CheckFestivalFindWay()
  127. -------------------------
  128. local scene_mgr = SceneManager.Instance
  129. local last = scene_mgr.last_scene_id
  130. -------------------------
  131. --[[if scene_mgr:IsBossWorldScene(last) and (not scene_mgr:IsBossWorldScene()) then
  132. self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.World)
  133. self:SetMainUIVisible(true)
  134. self.model:SetCurFightBossId(nil)--重置boss_id
  135. else--]]
  136. if scene_mgr:IsBossMoneyScene(last) and (not scene_mgr:IsBossMoneyScene()) then
  137. self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.Money)
  138. self:SetMainUIVisible(true)
  139. if self.listen_support_result or self.force_no_open_view then
  140. self.force_no_open_view = false
  141. --加一个判断,有收到协助者结算的坚决不弹
  142. else
  143. if (not scene_mgr:IsBossMoneyScene()) and (not scene_mgr:IsBossPersonScene()) and self.model:HasMoneyBossRed() then
  144. OpenFun.Open(460,3)
  145. end
  146. end
  147. if self.model.need_show_money_result then
  148. self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,self.model.need_show_money_result)
  149. end
  150. self.model:SetCurFightBossId(nil)--重置boss_id
  151. elseif scene_mgr:IsBossDesertedScene(last) then
  152. -- 需要确确实实是从星域幻魔返回到大世界场景,才需要撤销相关信息栏的隐藏
  153. if scene_mgr:IsMainCityAndFieldScene() then
  154. self:SetMainUIVisible(true)
  155. end
  156. if not scene_mgr:IsBossMoneyScene() then--赏金不用重置,会有协议更新
  157. self.model:SetCurFightBossId(nil)--重置boss_id
  158. end
  159. else
  160. if scene_mgr:IsBossPersonScene(last) then
  161. --新手期间打完出来要继续任务
  162. if RoleManager.Instance.mainRoleInfo.level <= Config.ConfigTaskEffect.GuideLevel then
  163. GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
  164. return
  165. end
  166. if (not scene_mgr:IsBossPersonScene()) and self.model:HasPersonBossRed() then
  167. OpenFun.Open(460,1)
  168. end
  169. self.model:SetCurFightBossId(nil)--重置boss_id
  170. end
  171. end
  172. -------------------------
  173. -- if self.bossworldsceneview and self.bossworldsceneview:HasOpen() then
  174. -- self.bossworldsceneview:Close()
  175. -- end
  176. if self.bossmoneysceneview and self.bossmoneysceneview:HasOpen() then
  177. self.bossmoneysceneview:Close()
  178. end
  179. if self.bossdesertedsceneview and self.bossdesertedsceneview:HasOpen() then
  180. self.bossdesertedsceneview:Close()
  181. end
  182. -------------------------
  183. --[[if scene_mgr:IsBossWorldScene() then
  184. self:SetMainUIVisible(false)
  185. if not self.bossworldsceneview then
  186. self.bossworldsceneview = BossWorldSceneView.New()
  187. end
  188. if not self.bossworldsceneview:HasOpen() then
  189. self.bossworldsceneview:Open()
  190. end
  191. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  192. else--]]
  193. if scene_mgr:IsBossMoneyScene() then
  194. self.listen_support_result = false--赏金幻魔协助者结算标记
  195. self:SetMainUIVisible(false)
  196. if not self.bossmoneysceneview then
  197. self.bossmoneysceneview = BossMoneySceneView.New()
  198. end
  199. if not self.bossmoneysceneview:HasOpen() then
  200. self.bossmoneysceneview:Open()
  201. end
  202. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  203. elseif scene_mgr:IsBossDesertedScene() then
  204. self:SetMainUIVisible(false)
  205. if not self.bossdesertedsceneview then
  206. self.bossdesertedsceneview = BossDesertedSceneView.New()
  207. end
  208. if not self.bossdesertedsceneview:HasOpen() then
  209. self.bossdesertedsceneview:Open()
  210. end
  211. end
  212. self:RefreshBossTired()
  213. end
  214. function BossController:SetMainUIVisible( value )
  215. self:Fire(EventName.HIDE_NEW_OPEN_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
  216. self:Fire(EventName.CHANGE_PK_MODE, not value, MainUIModel.DESERTED_BOSS_MODE)
  217. self:Fire(EventName.HIDE_LEFT_MIDDLE_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
  218. self:Fire(EventName.HIDE_TASK_TEAM_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE)
  219. GlobalEventSystem:Fire(EventName.LEFT_VIPICON_VISIBLE, not value)
  220. GlobalEventSystem:Fire(EventName.CHANGE_RIGHT_TIP_ICON, not value,MainUIModel.DESERTED_BOSS_MODE)
  221. GlobalEventSystem:Fire(EventName.HIDE_LEFT_TOP_ACT_VIEW,not value,MainUIModel.DESERTED_BOSS_MODE)
  222. GlobalEventSystem:Fire(EventName.SHOW_MAIN_TASK_ANNOUNCE_ROOT, not value, MainUIModel.DESERTED_BOSS_MODE)
  223. end
  224. function BossController:InitEvent()
  225. local function gameStartHandler( )
  226. self.model:ResetData()
  227. self.never_req_46027 = nil
  228. local delay = function()
  229. -- self.model:Fire(BossConst.REQ_WORLD_BOSS_STATUS)
  230. self.model:Fire(BossConst.REQ_MONEY_PLAYER_INFO)
  231. -- 请求一下剩余的幻魔星域次数 不然红点不正确
  232. self:SendFmtToGame(46102)
  233. self:SendFmtToGame(46108)
  234. end
  235. setTimeout(delay,2)
  236. end
  237. GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler)
  238. local function loadComplete()
  239. self:ChangeScene()
  240. --刷新所有墓碑
  241. if SceneManager:getInstance():IsShowGraveScene() and self.scmd_boss_info then
  242. self.model:UpdateSceneGrave(self.scmd_boss_info)
  243. end
  244. self.scmd_boss_info = false
  245. local need_find_boss_id = self.model:GetNeedFindBoss()
  246. if need_find_boss_id then
  247. local cfg = Config.Desertedbossinfo[need_find_boss_id]
  248. local pos = stringtotable(cfg.born_pos)
  249. local function call_back( ... )
  250. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  251. end
  252. local findVo = FindVo.New()
  253. findVo.sceneId = SceneManager.Instance:GetSceneId()
  254. findVo.type = FindVo.POINT
  255. findVo.x = pos[1]/ SceneObj.LogicRealRatio.x
  256. findVo.y = pos[2]/ SceneObj.LogicRealRatio.y
  257. findVo.call_back = call_back
  258. findVo.range = 3
  259. GlobalEventSystem:Fire(EventName.FIND,findVo)
  260. self.model:SetNeedFindBoss(false)
  261. end
  262. end
  263. GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, loadComplete)
  264. local function onOpenBossView(boss_type, boss_id)
  265. if (not boss_type) and boss_id then
  266. boss_type = self.model:GetBossTypeByBossId( boss_id )
  267. end
  268. if self.bossbaseview == nil then
  269. self.bossbaseview = BossBaseView.New()
  270. self.bossbaseview:Open(boss_type, boss_id)
  271. end
  272. end
  273. GlobalEventSystem:Bind(EventName.OPEN_BOSS_VIEW, onOpenBossView)
  274. local function OPEN_WORLD_WEEK_RANK( boss_id )
  275. if not boss_id then return end
  276. if not self.bossworldweekrankview then
  277. self.bossworldweekrankview = BossWorldWeekRankView.New()
  278. self.bossworldweekrankview:Open(boss_id)
  279. end
  280. end
  281. self.model:Bind(BossConst.OPEN_WORLD_WEEK_RANK,OPEN_WORLD_WEEK_RANK)
  282. local function OPEN_BREAK_PROTECT_VIEW( data )
  283. if not data then return end
  284. if not self.bossbreakprotectview then
  285. self.bossbreakprotectview = BossBreakProtectView.New()
  286. self.bossbreakprotectview:Open(data)
  287. end
  288. end
  289. self.model:Bind(BossConst.OPEN_BREAK_PROTECT_VIEW,OPEN_BREAK_PROTECT_VIEW)
  290. local function OPEN_MONEY_KILL_HISTORY_VIEW( )
  291. if not self.bossmoneykillview then
  292. self.bossmoneykillview = BossMoneyKillView.New()
  293. self.bossmoneykillview:Open()
  294. end
  295. end
  296. self.model:Bind(BossConst.OPEN_MONEY_KILL_HISTORY_VIEW,OPEN_MONEY_KILL_HISTORY_VIEW)
  297. local function OPEN_MONEY_REWARD_VIEW( boss_id )
  298. if not boss_id then return end
  299. if not self.bossmoneyrewardview then
  300. self.bossmoneyrewardview = BossMoneyRewardView.New()
  301. self.bossmoneyrewardview:Open(boss_id)
  302. end
  303. end
  304. self.model:Bind(BossConst.OPEN_MONEY_REWARD_VIEW,OPEN_MONEY_REWARD_VIEW)
  305. local function OPEN_MONEY_RESULT_VIEW( data )
  306. --如果这个时候有极品装备展示,就缓存这次打开界面
  307. if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then
  308. GlobalEventSystem:Fire(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, nil, BossEquipShowTIps.BossType.MoneyBoss, data)
  309. return
  310. end
  311. print('----LZR BossController.lua 297--=',data)
  312. PrintCallStack()
  313. if self.money_result_view then
  314. self.money_result_view:Close()
  315. self.money_result_view = nil
  316. end
  317. if self.delay_show_result_id then
  318. GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
  319. self.delay_show_result_id = nil
  320. end
  321. -------------------------
  322. local show_data = DeepCopy(data)--打开界面的时候界面为空,保存下来确定数据不丢失
  323. local function delay( )
  324. self.money_result_view = BossMoneyResultView.New()
  325. self.money_result_view:Open(show_data)
  326. end
  327. self.delay_show_result_id = setTimeout(delay,0.25)
  328. end
  329. self.model:Bind(BossConst.OPEN_MONEY_RESULT_VIEW,OPEN_MONEY_RESULT_VIEW)
  330. local function OPEN_BOSS_RELIVE_TIP( boss_id )
  331. if SceneManager.Instance:IsMainCityorYieldScene() then
  332. local bossrelivetip = BossReliveTip.New()
  333. bossrelivetip:Open(boss_id)
  334. end
  335. end
  336. self.model:Bind(BossConst.OPEN_BOSS_RELIVE_TIP,OPEN_BOSS_RELIVE_TIP)
  337. local function OPEN_BOSS_CARD_VIEW(type_id)
  338. local floor = false
  339. --赏金幻魔刷新卡
  340. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
  341. if type_id == BossModel.BOSS_CARD.REFRESH_MONEY_BOSS_ID then
  342. if not SceneManager.getInstance():IsMainCityorYieldScene() then
  343. Message.show(string.format("请在野外场景使用%s", basic.goods_name))
  344. return
  345. end
  346. --星域幻魔刷新卡
  347. elseif type_id == BossModel.BOSS_CARD.REFRESH_DESERTED_BOSS_ID then
  348. if not SceneManager.getInstance():IsBossDesertedScene() then
  349. Message.show(string.format("请在幻魔星域场景使用%s", basic.goods_name))
  350. return
  351. end
  352. floor = BossModel:GetInstance():GetDesertedSceneFloor()
  353. --赏金幻魔独享卡
  354. elseif type_id == BossModel.BOSS_CARD.OWNER_MONEY_BOSS_ID then
  355. if not SceneManager.getInstance():IsMainCityorYieldScene() then
  356. Message.show(string.format("请在野外场景使用%s", basic.goods_name))
  357. return
  358. end
  359. --星域幻魔独享卡
  360. elseif type_id == BossModel.BOSS_CARD.OWNER_DESERTED_BOSS_ID then
  361. if not SceneManager.getInstance():IsMainCityorYieldScene() then
  362. Message.show(string.format("请在野外场景使用%s", basic.goods_name))
  363. return
  364. end
  365. else
  366. return
  367. end
  368. if self.boss_card_view == nil then
  369. self.boss_card_view = BossCardView.New()
  370. end
  371. self.boss_card_view:Open(type_id, floor)
  372. end
  373. self.model:Bind(BossConst.OPEN_BOSS_CARD_VIEW,OPEN_BOSS_CARD_VIEW)
  374. local function onOpenBossProtectTipsView(boss_type)
  375. if boss_type == BossProtectTipsView.BossType.Money then
  376. self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46033)
  377. elseif boss_type == BossProtectTipsView.BossType.Deserted then
  378. self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46111)
  379. end
  380. if self.boss_protect_tips_view == nil then
  381. self.boss_protect_tips_view = BossProtectTipsView.New()
  382. end
  383. self.boss_protect_tips_view:Open(boss_type)
  384. end
  385. self.model:Bind(BossConst.OPEN_BOSS_PROTECT_TIPS_VIEW,onOpenBossProtectTipsView)
  386. local function CLOSE_BOSS_CARD_VIEW()
  387. if self.boss_card_view and self.boss_card_view:HasOpen() then
  388. self.boss_card_view:Close()
  389. end
  390. end
  391. self.model:Bind(BossConst.CLOSE_BOSS_CARD_VIEW,CLOSE_BOSS_CARD_VIEW)
  392. local function onLevelChange( level )
  393. if GetModuleOpenLevel( 460,1,true ) == level or GetModuleOpenLevel( 460,3,true ) == level
  394. then
  395. self:BossControllerCheckRed(true)
  396. elseif self.model.check_red_money_lv[level] or self.model.check_red_person_lv[level] then
  397. self:BossControllerCheckRed(true)
  398. elseif GetModuleOpenLevel(331,117) then--节日幻魔左侧栏
  399. self:CheckFestivalBossView()
  400. end
  401. end
  402. RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelChange)
  403. local function BOARD_GUILD_SUPPOR_REMOVE( role_id )
  404. if role_id then
  405. self.model:SetMoneyHelperInfo(nil,role_id)
  406. self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
  407. end
  408. end
  409. GuildModel:getInstance():Bind(GuildModel.BOARD_GUILD_SUPPOR_REMOVE,BOARD_GUILD_SUPPOR_REMOVE)
  410. --世界BOSS活动状态
  411. local function REQ_WORLD_BOSS_STATUS( )
  412. self:SendFmtToGame(46001)
  413. end
  414. self.model:Bind(BossConst.REQ_WORLD_BOSS_STATUS,REQ_WORLD_BOSS_STATUS)
  415. --世界BOSS列表信息
  416. local function REQ_WORLD_BOSS_LIST_INFO( )
  417. self:SendFmtToGame(46002)
  418. end
  419. self.model:Bind(BossConst.REQ_WORLD_BOSS_LIST_INFO,REQ_WORLD_BOSS_LIST_INFO)
  420. --世界BOSS血量
  421. local function REQ_WORLD_BOSS_HP( boss_id )
  422. if not boss_id then return end
  423. self:SendFmtToGame(46003,"i",boss_id)
  424. end
  425. self.model:Bind(BossConst.REQ_WORLD_BOSS_HP,REQ_WORLD_BOSS_HP)
  426. --世界BOSS前往周榜
  427. local function REQ_WORLD_BOSS_WEEK_RANK( show_week_type )
  428. if not show_week_type then return end
  429. self:SendFmtToGame(46004,"i",show_week_type)
  430. end
  431. self.model:Bind(BossConst.REQ_WORLD_BOSS_WEEK_RANK,REQ_WORLD_BOSS_WEEK_RANK)
  432. --世界BOSS开启护盾礼包
  433. local function REQ_OPEN_PROTECT_GIFT( boss_id,no )
  434. if not boss_id or not no then return end
  435. self:SendFmtToGame(46006,"ic",boss_id,no)
  436. end
  437. self.model:Bind(BossConst.REQ_OPEN_PROTECT_GIFT,REQ_OPEN_PROTECT_GIFT)
  438. --退出BOSS场景
  439. local function REQ_QUIT_SCENE( )
  440. self:SendFmtToGame(46010)
  441. end
  442. self.model:Bind(BossConst.REQ_QUIT_SCENE,REQ_QUIT_SCENE)
  443. --获取赏金幻魔玩家次数信息
  444. local function REQ_MONEY_PLAYER_INFO( )
  445. self:SendFmtToGame(46011)
  446. end
  447. self.model:Bind(BossConst.REQ_MONEY_PLAYER_INFO,REQ_MONEY_PLAYER_INFO)
  448. --获取赏金幻魔列表信息
  449. local function REQ_MONEY_BOSS_INFO( )
  450. self:SendFmtToGame(46012)
  451. end
  452. self.model:Bind(BossConst.REQ_MONEY_BOSS_INFO,REQ_MONEY_BOSS_INFO)
  453. --赏金幻魔击杀日志
  454. local function REQ_MONEY_KILL_HISTORY( )
  455. self:SendFmtToGame(46013)
  456. end
  457. self.model:Bind(BossConst.REQ_MONEY_KILL_HISTORY,REQ_MONEY_KILL_HISTORY)
  458. --赏金幻魔鼓舞
  459. local function REQ_MONEY_BOSS_INSPIRE( type_id )
  460. --type:int8 // 1彩钻/2红钻
  461. if not type_id then return end
  462. self:SendFmtToGame(46014,"c",type_id)
  463. end
  464. self.model:Bind(BossConst.REQ_MONEY_BOSS_INSPIRE,REQ_MONEY_BOSS_INSPIRE)
  465. --赏金幻魔进入场景
  466. local function REQ_MONEY_BOSS_ENTER_SCENE( boss_id )
  467. if not boss_id then return end
  468. self:SendFmtToGame(46016,"i",boss_id)
  469. end
  470. self.model:Bind(BossConst.REQ_MONEY_BOSS_ENTER_SCENE,REQ_MONEY_BOSS_ENTER_SCENE)
  471. --赏金幻魔鼓舞次数查询
  472. local function REQ_MONEY_BOSS_ENSPIRE_COUNT( boss_id )
  473. if not boss_id then return end
  474. self:SendFmtToGame(46019,"i",boss_id)
  475. end
  476. self.model:Bind(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,REQ_MONEY_BOSS_ENSPIRE_COUNT)
  477. --关注操作
  478. local function REQ_FOCUS_CHANGE( boss_type,boss_id,op_type )
  479. if not boss_type or not boss_id or not op_type then return end
  480. self:SendFmtToGame(46024,"cic",boss_type,boss_id,op_type)
  481. end
  482. self.model:Bind(BossConst.REQ_FOCUS_CHANGE,REQ_FOCUS_CHANGE)
  483. function on_req_scmd( ... )
  484. local args_list = {...}
  485. if args_list[1] == 46101 or args_list[1] == 46109 then
  486. self:SendFmtToGame(args_list[1],"c",args_list[2])
  487. 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
  488. self:SendFmtToGame(args_list[1],"i",args_list[2])
  489. elseif args_list[1] == 46107 then
  490. self:SendFmtToGame(args_list[1],"ci",args_list[2], args_list[3])
  491. else
  492. self:SendFmtToGame(args_list[1])
  493. end
  494. end
  495. self.model:Bind(BossConst.REQ_DESERTED_BOSS_SCMD, on_req_scmd)
  496. -- 如果激活了星域幻魔免费复活相关的宠物生活技能,则需要主动请求次数
  497. local function on_pet_life_skill_actived(skill_id)
  498. if skill_id == PetConst.LifeSkill.BossFreeReBornTimes then
  499. self:SendFmtToGame(46108)
  500. end
  501. end
  502. PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived)
  503. local function chnage_day_func(type)
  504. if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
  505. self:SendFmtToGame(46108)
  506. end
  507. end
  508. GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
  509. local function onBossEquipShowTips(goods_vo, boss_type, close_data)
  510. --这里处理延时打开界面界面操作
  511. if boss_type or close_data then
  512. if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then
  513. self.BossEquipShowTIps:SetCloseData(boss_type, close_data)
  514. self.model.boss_equip_tips_view_close_data = false
  515. else
  516. self.model.boss_equip_tips_view_close_data = {boss_type = boss_type,close_data = close_data}
  517. --如果判断到专属boss有极品装备,如果2秒后没有捡到,也弹结算
  518. if self.delay_show_result_id then
  519. GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
  520. self.delay_show_result_id = false
  521. end
  522. local function onDelayShow( ... )
  523. if self.delay_show_result_id then
  524. GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
  525. self.delay_show_result_id = false
  526. end
  527. if self.model.boss_equip_tips_view_close_data then
  528. BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_DUNGEON_RESULT_VIEW,self.model.boss_equip_tips_view_close_data.close_data)
  529. self.model.boss_equip_tips_view_close_data = false
  530. end
  531. end
  532. self.delay_show_result_id = GlobalTimerQuest:AddDelayQuest(onDelayShow,4)
  533. end
  534. return
  535. end
  536. if not goods_vo then return end
  537. if self.delay_show_result_id then
  538. GlobalTimerQuest:CancelQuest(self.delay_show_result_id)
  539. self.delay_show_result_id = false
  540. end
  541. --如果此时已经弹了结算界面,就不在显示获得极品装备的提示
  542. if BaseDungeonModel:getInstance().is_showing_dungeon_result_view then
  543. return
  544. end
  545. if not self.BossEquipShowTIps then
  546. self.BossEquipShowTIps = BossEquipShowTIps.New()
  547. self.BossEquipShowTIps:Open(goods_vo)
  548. else
  549. self.BossEquipShowTIps:AddGoodsData(goods_vo)
  550. end
  551. end
  552. GlobalEventSystem:Bind(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, onBossEquipShowTips)
  553. end
  554. --世界BOSS活动状态
  555. function BossController:on46001( )
  556. local scmd = SCMD46001.New(true)
  557. self.model:SetWorldBossStatus(scmd.end_time)
  558. -------------------------
  559. local curTime = TimeUtil:getServerTime()
  560. local status_time = scmd.end_time - curTime
  561. if status_time > 0 then
  562. ActivityIconManager:getInstance():addIcon(46002, status_time)
  563. self.model:Fire(BossConst.REQ_WORLD_BOSS_LIST_INFO)
  564. else
  565. ActivityIconManager:getInstance():deleteIcon(46002)
  566. end
  567. self.model:Fire(BossConst.ANS_WORLD_BOSS_STATUS)
  568. end
  569. --世界BOSS列表信息
  570. function BossController:on46002( )
  571. local scmd = SCMD46002.New(true)
  572. self.model:SetWorldBossInfo(scmd)
  573. -------------------------
  574. self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO)
  575. end
  576. --世界BOSS血量
  577. function BossController:on46003( )
  578. local scmd = SCMD46003.New(true)
  579. self.model:SetWorldBossHpList(scmd)
  580. self.model:Fire(BossConst.ANS_WORLD_BOSS_HP)
  581. end
  582. --世界BOSS前往周榜
  583. function BossController:on46004( )
  584. local scmd = SCMD46004.New(true)
  585. self.model:SetWorldBossWeekRankList(scmd)
  586. self.model:Fire(BossConst.ANS_WORLD_BOSS_WEEK_RANK)
  587. end
  588. --世界BOSS收到护盾礼包
  589. function BossController:on46005( )
  590. local scmd = SCMD46005.New(true)
  591. Message.show("收到护盾礼包")
  592. self.model:Fire(BossConst.OPEN_BREAK_PROTECT_VIEW,scmd)
  593. end
  594. --世界BOSS开启护盾礼包
  595. function BossController:on46006( )
  596. local scmd = SCMD46006.New(true)
  597. if scmd.res == 1 then
  598. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.AWARD)
  599. Message.show("开启成功!")
  600. else
  601. ErrorCodeShow(scmd.res)
  602. end
  603. end
  604. --世界BOSS伤害列表
  605. function BossController:on46007( )
  606. local scmd = SCMD46007.New(true)
  607. local type_id = self.model:GetBossTypeByBossId(scmd.boss_id)
  608. self.model:ResetBossHurtInfo(type_id)
  609. -------------------------
  610. if TableSize(scmd.rank_list) > 0 then
  611. for k,v in pairs(scmd.rank_list) do
  612. self.model:SetBossHurtInfo( scmd.boss_id,v.role_id,v.name,v.hurt,scmd.boss_hp,v.type )
  613. end
  614. else
  615. self.model:SetBossHurtInfo( scmd.boss_id,nil,nil,nil,scmd.boss_hp,nil )
  616. end
  617. -------------------------
  618. self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT)
  619. end
  620. --世界BOSS单个伤害
  621. function BossController:on46008( )
  622. local scmd = SCMD46008.New(true)
  623. self.model:SetBossHurtInfo( scmd.boss_id,scmd.role_id,scmd.name,scmd.hurt, nil, scmd.type )
  624. self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT)
  625. end
  626. --单个世界BOSS状态刷新
  627. function BossController:on46009( )
  628. local scmd = SCMD46009.New(true)
  629. local success = self.model:SetWorldBossInfoOne(scmd)
  630. -------------------------
  631. if success then
  632. self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO)
  633. end
  634. end
  635. --退出BOSS场景
  636. function BossController:on46010( )
  637. local scmd = SCMD46010.New(true)
  638. end
  639. --获取赏金幻魔玩家次数信息
  640. function BossController:on46011( )
  641. local scmd = SCMD46011.New(true)
  642. self.model:SetMoneyBossMyInfo(scmd)
  643. self:BossControllerCheckRed(true)
  644. self.model:Fire(BossConst.ANS_MONEY_PLAYER_INFO)
  645. end
  646. --获取赏金幻魔列表信息
  647. function BossController:on46012( )
  648. local scmd = SCMD46012.New(true)
  649. for k,v in pairs(scmd.boss_info) do
  650. self.model:SetMoneyBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count)
  651. end
  652. self:BossControllerCheckRed(true)
  653. self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO)
  654. end
  655. --赏金幻魔击杀日志
  656. function BossController:on46013( )
  657. local scmd = SCMD46013.New(true)
  658. self.model:SetMoneyBossKillHistory(scmd.drop_log)
  659. self.model:Fire(BossConst.ANS_MONEY_KILL_HISTORY)
  660. end
  661. --赏金幻魔鼓舞
  662. function BossController:on46014( )
  663. local scmd = SCMD46014.New(true)
  664. if scmd.res == 1 then
  665. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
  666. Message.show("鼓舞成功!")
  667. self.model:Fire(BossConst.ANS_MONEY_BOSS_INSPIRE)
  668. if self.model:GetCurFightBossId( ) then
  669. self.model:Fire(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,self.model:GetCurFightBossId( ))
  670. end
  671. else
  672. if scmd.res == 1001 then
  673. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT)
  674. GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true)
  675. else
  676. ErrorCodeShow(scmd.res)
  677. end
  678. end
  679. end
  680. --收到赏金幻魔结算
  681. function BossController:on46015( )
  682. local scmd = SCMD46015.New(true)
  683. if SceneManager.Instance:IsBossMoneyScene() then
  684. self.model.need_show_money_result = scmd
  685. else
  686. self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,scmd)
  687. self.model.need_show_money_result = false
  688. end
  689. self.model:Fire(BossConst.ANS_MONEY_BOSS_RESULT)
  690. end
  691. --赏金幻魔进入场景
  692. function BossController:on46016( )
  693. local scmd = SCMD46016.New(true)
  694. if scmd.res == 1 then
  695. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
  696. Message.show("进入场景中")
  697. self.model:Fire(BossConst.ANS_MONEY_BOSS_ENTER_SCENE)
  698. else
  699. ErrorCodeShow(scmd.res)
  700. end
  701. end
  702. --赏金幻魔倒计时踢人
  703. function BossController:on46017( )
  704. local scmd = SCMD46017.New(true)
  705. end
  706. --赏金幻魔单个boss状态变更
  707. function BossController:on46018( )
  708. local scmd = SCMD46018.New(true)
  709. --[[if scmd.next_time == 0 then
  710. local ser_data = false
  711. for k,v in pairs(self.model:GetMoneyBossInfo()) do
  712. if v.boss_id == scmd.boss_id then
  713. ser_data = v
  714. end
  715. end
  716. if ser_data and ser_data.reborn_time ~= 0 and ser_data.is_focus == 1 then
  717. --旧数据是已死亡,新数据是活着
  718. self.model:Fire(BossConst.OPEN_BOSS_RELIVE_TIP,scmd.boss_id)
  719. end
  720. end--]]
  721. self.model:SetMoneyBossInfo(scmd.boss_id,scmd.next_time,scmd.killer)
  722. self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO)
  723. end
  724. --赏金幻魔鼓舞次数查询
  725. function BossController:on46019( )
  726. local scmd = SCMD46019.New(true)
  727. self.model:SetMoneyInspireCount(scmd.boss_id,scmd.by_gold,scmd.by_bgold)
  728. self.model:Fire(BossConst.ANS_MONEY_BOSS_ENSPIRE_COUNT)
  729. end
  730. --世界BOSS-护盾上限值
  731. function BossController:on46020( )
  732. local scmd = SCMD46020.New(true)
  733. self.model:SetWorldBossProtectMax(scmd)
  734. self.model:Fire(BossConst.ANS_WORLD_BOSS_PROTECT)
  735. end
  736. --赏金幻魔协助者伤害
  737. function BossController:on46021( )
  738. local scmd = SCMD46021.New(true)
  739. self.model:SetMoneyHelperInfo(scmd)
  740. self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
  741. end
  742. --赏金幻魔拾取掉落奖励
  743. function BossController:on46022( )
  744. local scmd = SCMD46022.New(true)
  745. for k,v in pairs(scmd.list) do
  746. local new_data = {style = 0,typeId = v.goods_id,num = v.num}
  747. if self.model.need_show_money_result then
  748. table.insert( self.model.need_show_money_result.base_reward_list, new_data )
  749. end
  750. end
  751. end
  752. --场景对应Boss_id
  753. function BossController:on46023( )
  754. local scmd = SCMD46023.New(true)
  755. self.model:SetCurFightBossId(scmd.boss_id)
  756. self.model:Fire(BossConst.ANS_BOSS_ID_IN_SCENE)
  757. end
  758. function BossController:on46024( )
  759. local scmd = SCMD46024.New(true)
  760. if scmd.res == 1 then
  761. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
  762. self.model:ChangeBossFocusStatus( scmd.boss_id, scmd.op )
  763. self.model:Fire(BossConst.ANS_FOCUS_CHANGE,scmd.boss_id, scmd.op)
  764. if scmd.op == 1 then
  765. Message.show("关注成功")
  766. else
  767. Message.show("已取消关注")
  768. end
  769. else
  770. ErrorCodeShow(scmd.res)
  771. end
  772. end
  773. --boss自己的总伤害(只在组队状态下有用)
  774. function BossController:on46025( )
  775. local scmd = SCMD46025.New(true)
  776. self.model:SetMyHurtOnly(scmd)
  777. self.model:Fire(BossConst.ANS_MY_HURT_INFO)
  778. end
  779. -- ############# 星域幻魔-列表信息 ###############
  780. -- protocol=46101
  781. -- {
  782. -- c2s{
  783. -- level:int8 // 层数
  784. -- }
  785. -- s2c{
  786. -- boss_info:array{
  787. -- boss_id:int32 // BossId
  788. -- status:int32 // 0存活|复活时间
  789. -- is_follow:int8 // 0未关注|1已关注
  790. -- killer:string // 上次击杀者
  791. -- }
  792. -- }
  793. -- }
  794. function BossController:on46101( )
  795. local scmd = SCMD46101.New(true)
  796. self.scmd_boss_info = scmd
  797. for k,v in pairs(scmd.boss_info) do
  798. self.model:SetDesertedBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count)
  799. end
  800. self.model:Fire(BossConst.ANS_DESERTED_BOSS_INFO)
  801. if SceneManager.Instance:IsShowGraveScene() then
  802. self.model:UpdateSceneGrave(scmd)
  803. end
  804. end
  805. function BossController:on46102( )
  806. local scmd = SCMD46102.New(true)
  807. self.model:SetDesertedBossNumInfo(scmd)
  808. self:BossControllerCheckRed(true)
  809. self:RefreshBossTired()
  810. end
  811. function BossController:on46103( )
  812. if self.delay_clear_desert_call then
  813. self.delay_clear_desert_call()
  814. end
  815. -------------------------
  816. local scmd = SCMD46103.New(true)
  817. self.model:SetDesertedBossRankInfo(scmd)
  818. end
  819. function BossController:on46104( )
  820. local scmd = SCMD46104.New(true)
  821. self.model:SetMoneyHelperInfo(scmd)
  822. self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST)
  823. end
  824. function BossController:on46105( )
  825. local scmd = SCMD46105.New(true)
  826. -------------------------
  827. if self.delay_clear_desert then
  828. GlobalTimerQuest:CancelQuest(self.delay_clear_desert)
  829. self.delay_clear_desert = nil
  830. end
  831. self.delay_clear_desert_call = false
  832. -------------------------
  833. local function clear_call( )
  834. self.model:CleanDesertedBossRankInfoById(scmd.boss_id)
  835. self.model:SetCurFightBossId(nil)--重置boss_id
  836. self.model:Fire(BossConst.OUT_OF_DESERTED_BOSS_LIST, scmd.boss_id, true)
  837. end
  838. local cur_data = self.model:GetDesertedBossRankInfo(scmd.boss_id)
  839. if cur_data and cur_data.boss_hp == 0 then
  840. --击杀boss后数据保留5s
  841. self.delay_clear_desert_call = function( )
  842. clear_call()
  843. -------------------------
  844. if self.delay_clear_desert then
  845. GlobalTimerQuest:CancelQuest(self.delay_clear_desert)
  846. self.delay_clear_desert = nil
  847. end
  848. self.delay_clear_desert_call = false
  849. -------------------------
  850. end
  851. self.delay_clear_desert = setTimeout(self.delay_clear_desert_call,5)
  852. else
  853. clear_call()
  854. end
  855. end
  856. function BossController:on46106( )
  857. local scmd = SCMD46106.New(true)
  858. if scmd.res == 1 then
  859. GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
  860. Message.show("进入场景中")
  861. else
  862. ErrorCodeShow(scmd.res)
  863. end
  864. end
  865. function BossController:on46107( )
  866. local scmd = SCMD46107.New(true)
  867. if scmd.res == 1 then
  868. if scmd.type == 1 then
  869. self.model:Fire(BossConst.REQ_MONEY_BOSS_INFO)
  870. else
  871. local floor = BossModel:GetInstance():GetDesertedSceneFloor()
  872. self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46101,floor)
  873. self.model:Fire(BossConst.BOSS_CARD_REFRESH, scmd.type, scmd.boss_id)
  874. end
  875. else
  876. ErrorCodeShow(scmd.res)
  877. end
  878. end
  879. --活动BOSS-信息
  880. function BossController:on46026( )
  881. local scmd = SCMD46026.New(true)
  882. self.model:SetFestivalBossList(scmd)
  883. OperateActivityModel:getInstance():Fire(OperateActivityModel.REFRESH_FESTIVAL_BOSS)
  884. -------------------------
  885. local sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS)
  886. if scmd.list and TableSize(scmd.list) > 0 then
  887. if not self.never_req_46027 then
  888. -- 上线拿一次46027,以后不用,会推送,防止死循环
  889. self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46027)
  890. self.never_req_46027 = true
  891. end
  892. -------------------------
  893. if OperateActivityModel:getInstance().is_open_festival_boss_view then
  894. else
  895. --如果是boss活动状态,那么就出一下红点
  896. KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false )
  897. end
  898. else
  899. local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {}
  900. if data[sub_type] == nil then
  901. --第一次活动出现,给个红点
  902. KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false )
  903. end
  904. end
  905. end
  906. -- 活动BOSS-当前场景的BOSS信息
  907. function BossController:on46027( )
  908. local scmd = SCMD46027.New(true)
  909. self.model:SetFestivalBossSceneList(scmd)
  910. self:CheckFestivalBossView()
  911. self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46026)
  912. end
  913. function BossController:CheckFestivalBossView( )
  914. if not self.opfestivalbosssceneview then
  915. --进场景创界面,隐藏,更新数据的时候显示
  916. --当前怪物死亡/离场的时候清榜单数据隐藏界面
  917. --切场景的时候立即关界面,立即清榜单数据
  918. local function scene_have_act_boss( )
  919. local fes_boss_list = self.model:GetFestivalBossSceneList()
  920. if fes_boss_list and fes_boss_list.scene_id_list and fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()] and
  921. fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()][MapModel:getInstance():GetServerLine() or 1] then
  922. --检查活动幻魔场景以及分线
  923. return true
  924. end
  925. return false
  926. end
  927. -------------------------
  928. local id = KfActivityModel.TabID.FestivalBoss
  929. local act_type = KfActivityModel:getInstance():GetActType(nil,id)
  930. if not act_type then
  931. -- Message.show("活动未开启","fault")
  932. return
  933. end
  934. if id then
  935. local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启
  936. if not open_bool then
  937. -- Message.show("活动未开启","fault")
  938. return
  939. end
  940. end
  941. if scene_have_act_boss() and GetModuleIsOpen(331,117) then
  942. --有活动且活动已开放
  943. self.opfestivalbosssceneview = OpFestivalBossSceneView.New()
  944. self.opfestivalbosssceneview:Open()
  945. end
  946. end
  947. end
  948. --活动BOSS-寻路检查
  949. function BossController:CheckFestivalFindWay( )
  950. if self.model.festival_boss_find_way_data then
  951. local param_list = self.model.festival_boss_find_way_data
  952. local scene_id = tonumber(param_list[2])
  953. local line = tonumber(param_list[3]) or 1
  954. if scene_id ~= SceneManager.Instance:GetSceneId() or MapModel:getInstance():GetServerLine() ~= line then
  955. --场景不对路,中止交易
  956. self.model.festival_boss_find_way_data = nil
  957. return
  958. end
  959. local scene_info = SceneManager:getInstance():GetSceneInfo(scene_id)
  960. local x = tonumber(param_list[4]) or 0
  961. local y = tonumber(param_list[5]) or 0
  962. if scene_info then
  963. --如果在当前场景当前线路,就直接寻路
  964. local findVo = FindVo.New()
  965. findVo.type = FindVo.POINT
  966. findVo.sceneId = scene_id
  967. findVo.x = x/SceneObj.LogicRealRatio.x
  968. findVo.y = y/SceneObj.LogicRealRatio.y
  969. findVo.range = 3
  970. GlobalEventSystem:Fire(EventName.FIND,findVo)
  971. end
  972. end
  973. end
  974. --活动BOSS-点击立即前往某个活动场景
  975. function BossController:on46028( )
  976. local scmd = SCMD46028.New(true)
  977. if scmd.res == 1 then
  978. Message.show("操作成功~")
  979. else
  980. ErrorCodeShow(scmd.res)
  981. end
  982. end
  983. --活动BOSS-伤害排名信息-进入BOSS区域请求
  984. --把榜单请求放到界面里面去,免得controller太多浪费
  985. function BossController:on46029( )
  986. local scmd = SCMD46029.New(true)
  987. self.model:SetFestivalBossRankInfo(scmd)
  988. -------------------------
  989. local id = KfActivityModel.TabID.FestivalBoss
  990. local act_type = KfActivityModel:getInstance():GetActType(nil,id)
  991. if not act_type then
  992. return
  993. end
  994. if id then
  995. local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启
  996. if not open_bool then
  997. return
  998. end
  999. end
  1000. if GetModuleIsOpen(331,117) then
  1001. --有活动且活动已开放
  1002. if self.opfestivalbosssceneview then
  1003. self.opfestivalbosssceneview:UpdateView()
  1004. end
  1005. end
  1006. end
  1007. --活动BOSS-单个玩家总伤害
  1008. function BossController:on46030( )
  1009. local scmd = SCMD46030.New(true)
  1010. if self.opfestivalbosssceneview then
  1011. local rank_info = self.model:GetFestivalBossRankInfo()
  1012. if rank_info then
  1013. if TableSize(rank_info.rank_list) == 0 then
  1014. BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id)
  1015. else
  1016. if rank_info and rank_info.id == scmd.id then
  1017. rank_info.list_role[scmd.role_id] = scmd
  1018. end
  1019. self.opfestivalbosssceneview:UpdateView()
  1020. end
  1021. else
  1022. BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id)
  1023. end
  1024. end
  1025. end
  1026. --活动BOSS-分享
  1027. function BossController:on46031( )
  1028. local scmd = SCMD46031.New(true)
  1029. if scmd.res == 1 then
  1030. --发送坐标 用超链接的方法
  1031. local role = Scene.Instance:GetMainRole()
  1032. if not role then return end
  1033. local scene_id = scmd.scene_id
  1034. local line = scmd.pool
  1035. local x = role.logic_pos.x
  1036. local y = role.logic_pos.y
  1037. if not SceneManager:getInstance():IsBlockXY(x, y) then
  1038. Message.show("分享成功!")
  1039. local scene_name = SceneManager:getInstance():GetSceneInfo(scene_id).name
  1040. 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)
  1041. local tmpArgs = ChatModel:getInstance():GetAllArgsText(content)
  1042. content = ChatModel:getInstance():GetHyperlinkText(content)
  1043. ChatModel:getInstance():Fire(ChatModel.SEND_MSG, self.model.festival_boss_share_channel, content, 0, tmpArgs, ChatModel.CHAT_COMMON_TYPE.SYSTEM)
  1044. end
  1045. else
  1046. ErrorCodeShow(scmd.res)
  1047. end
  1048. end
  1049. --召唤独享BOSS
  1050. function BossController:on46032( )
  1051. local scmd = SCMD46032.New(true)
  1052. if scmd.res == 1 then
  1053. Message.show("召唤成功")
  1054. self.model:Fire(BossConst.CLOSE_BOSS_CARD_VIEW)
  1055. else
  1056. ErrorCodeShow(scmd.res)
  1057. end
  1058. end
  1059. --赏金查询免战时间
  1060. function BossController:on46033( )
  1061. local scmd = SCMD46033.New(true)
  1062. PrintTable(scmd)
  1063. self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money)
  1064. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1065. end
  1066. --赏赏金使用免战时间
  1067. function BossController:on46034( )
  1068. local scmd = SCMD46034.New(true)
  1069. PrintTable(scmd)
  1070. if scmd.res == 1 then
  1071. self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money)
  1072. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1073. else
  1074. ErrorCodeShow(scmd.res)
  1075. end
  1076. end
  1077. --赏金免战时间停止通知
  1078. function BossController:on46035( )
  1079. local scmd = SCMD46035.New(true)
  1080. PrintTable(scmd)
  1081. self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Money)
  1082. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1083. end
  1084. --星域幻魔剩余免费复活次数
  1085. function BossController:on46108( )
  1086. local scmd = SCMD46108.New(true)
  1087. self.model:UpdateLeftDesertedBossFreeReliveTimes(scmd)
  1088. end
  1089. --星域幻魔精英怪物信息
  1090. function BossController:on46109( )
  1091. local scmd = SCMD46109.New(true)
  1092. self.model:SetLeftDesertedMonsterInfo(scmd)
  1093. self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH)
  1094. end
  1095. --星域幻魔精英怪物信息(广播)
  1096. function BossController:on46110( )
  1097. local scmd = SCMD46110.New(true)
  1098. self.model:SetLeftDesertedMonsterNumber(scmd)
  1099. self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH)
  1100. end
  1101. --星域幻魔 查询免战时间
  1102. function BossController:on46111( )
  1103. local scmd = SCMD46111.New(true)
  1104. PrintTable(scmd)
  1105. self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted)
  1106. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1107. end
  1108. --星域幻魔 使用免战时间
  1109. function BossController:on46112( )
  1110. local scmd = SCMD46112.New(true)
  1111. PrintTable(scmd)
  1112. if scmd.res == 1 then
  1113. self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted)
  1114. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1115. else
  1116. ErrorCodeShow(scmd.res)
  1117. end
  1118. end
  1119. --星域幻魔 免战时间停止通知
  1120. function BossController:on46113( )
  1121. local scmd = SCMD46113.New(true)
  1122. PrintTable(scmd)
  1123. self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Deserted)
  1124. self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME)
  1125. end
  1126. --废都幻魔-推荐幻魔卡
  1127. function BossController:on46114( )
  1128. local scmd = SCMD46114.New(true)
  1129. print('Ych:BossController.lua[1175] data', VipModel.getInstance():IsCanShowVipCardTips() )
  1130. if VipModel.getInstance():IsCanShowVipCardTips() then
  1131. GlobalEventSystem:Fire(EventName.SHOW_KILL_DESERTED_BOSS_BUY_VIP_CARD_TIPS_EVENT)
  1132. end
  1133. end