源战役客户端
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.

140 lines
6.3 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 经验副本模块Controller,只用于控制界面开关,相关协议逻辑移步BaseDungeonController
  4. -- *>
  5. require("game.expDun.ExpDunModel")
  6. require("game.expDun.ExpHangupMainView") -- 经验副本主界面(新)
  7. require("game.expDun.ExpQuickHangUpView") -- 经验副本快速挂机购买界面
  8. require("game.expDun.ExpHangUpReceiveView") -- 经验副本放置挂机奖励界面
  9. -- 2020年5月12日第三版重构经验副本新增
  10. require("game.expDun.ExpDunAnimConst")
  11. require("game.expDun.ExpDunRouteItem") -- 经验副本主入口副本里程碑按钮
  12. require("game.expDun.ExpHangupAwardItem") -- 经验副本通用奖励item
  13. require("game.expDun.ExpHangupMonModelItem") -- 经验副本怪物模型节点
  14. require("game.expDun.ExpHangupBulletItem") -- 经验副本子弹例子效果容器
  15. require("game.expDun.ExpDunRouteWaveItem") -- 经验副本路线节点内波数节点
  16. -- 2021年5月11日第七版优化新增
  17. require("game.expDun.ExpDunWaveRankView") -- 经验副本路线排行界面
  18. require("game.expDun.ExpDunWaveRankTopItem") -- 经验副本路线排行界面前三名节点
  19. require("game.expDun.ExpDunWaveRankItem") -- 经验副本路线排行界面滚动节点
  20. ExpDunController = ExpDunController or BaseClass(BaseController, true)
  21. local ExpDunController = ExpDunController
  22. function ExpDunController:__init()
  23. ExpDunController.Instance = self
  24. self.model = ExpDunModel:getInstance()
  25. self:AddEvents()
  26. end
  27. function ExpDunController:__delete()
  28. end
  29. function ExpDunController:AddEvents()
  30. -- do return end
  31. local function open_exp_main_view(show, need_show_guide, need_show_offline_con)
  32. self:OpenView("ExpHangupMainView", show, need_show_guide, need_show_offline_con)
  33. end
  34. self.model:Bind(ExpDunModel.OPEN_EXP_HANGUP_MAIN_VIEW, open_exp_main_view)
  35. local function open_hangup_view(show)
  36. self:OpenView("ExpQuickHangUpView", show)
  37. end
  38. self.model:Bind(ExpDunModel.OPEN_QUICK_HANGUP_VIEW, open_hangup_view)
  39. local function open_hangup_receive_view(show, reward_list)
  40. self:OpenView("ExpHangUpReceiveView", show, reward_list)
  41. end
  42. self.model:Bind(ExpDunModel.OPEN_HANGUP_RECEIVE_VIEW, open_hangup_receive_view)
  43. local function check_open_hangup_receive_view()
  44. local condition = Config.Modulesub["610@16"].open_lv
  45. local lv = RoleManager.Instance.mainRoleInfo.level
  46. if condition > lv then
  47. local str = string.format("%s级开放", condition)
  48. Message.show(str, "fault")
  49. else
  50. -- 满足条件的情况下,要判断当前的挂机时间是否满足1个小时,否则用不可领取奖励界面的表现显示
  51. -- 获取已累计的挂机时间
  52. local contain_time = self.model:GetHangUpContainTimeData()
  53. -- local pass_time = TimeUtil:getServerTime() - last_time
  54. if contain_time > 3601 then
  55. BaseDungeonModel:getInstance():Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61050, 0, 0)
  56. else
  57. open_hangup_receive_view(true, nil)
  58. end
  59. end
  60. end
  61. self.model:Bind(ExpDunModel.CHECK_OPEN_HANGUP_RECEIVE_VIEW, check_open_hangup_receive_view)
  62. local function open_wave_rank_view(show)
  63. self:OpenView("ExpDunWaveRankView", show)
  64. end
  65. self.model:Bind(ExpDunModel.OPEN_WAVE_RANK_VIEW, open_wave_rank_view)
  66. local main_role = RoleManager.Instance.mainRoleInfo
  67. -- 战力更新时刷新主界面经验副本按钮tips
  68. local function update_expdun_tips_by_power_change()
  69. self.model:UpdateMainTipsOnChangePowerOrWave(true, false)
  70. end
  71. if self.update_expdun_tips_by_power_change_id then
  72. main_role:UnBind(self.update_expdun_tips_by_power_change_id)
  73. self.update_expdun_tips_by_power_change_id = nil
  74. end
  75. if self.update_expdun_tips_by_level_change_id then
  76. main_role:UnBind(self.update_expdun_tips_by_level_change_id)
  77. self.update_expdun_tips_by_level_change_id = nil
  78. end
  79. self.update_expdun_tips_by_power_change_id = main_role:BindOne("fighting", update_expdun_tips_by_power_change)
  80. self.update_expdun_tips_by_level_change_id = main_role:Bind(EventName.CHANGE_LEVEL, update_expdun_tips_by_power_change) -- 等级变化也要刷
  81. -- 如果有需要在返回大世界重新打开经验副本界面
  82. local function onSceneLoadViewFinish()
  83. if SceneManager:getInstance():IsMainCityorYieldScene() then
  84. if self.model._need_open_exp_view then
  85. self.model._need_open_exp_view = false
  86. --新手期间不要停,继续做任务就好了
  87. if RoleManager.Instance.mainRoleInfo.level <= Config.ConfigTaskEffect.GuideLevel then
  88. GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
  89. return
  90. end
  91. open_exp_main_view(true)
  92. -- open_exp_dun_main_view(true)
  93. end
  94. end
  95. -- 无论如何都要置false,不然这个会影响正常流程
  96. self.model._need_open_exp_view = false
  97. end
  98. self:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, onSceneLoadViewFinish)
  99. -- 监听限制红点的任务完成情况
  100. local function update_newly_red_by_finishtasks(id)
  101. if not self.model:GetExpDunLimitNewlyRed() then
  102. if not id or id == ExpDunModel.Newly_Limit_Taskid then
  103. self.model:CheckExpDunLimitNewlyRed()
  104. self.model:CheckExpRedDotAll()
  105. end
  106. end
  107. end
  108. self:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, update_newly_red_by_finishtasks)
  109. -- 如果激活了经验挂机相关的宝宝生活技能,则需要推送更新刷新挂机时间相关的逻辑
  110. local function on_pet_life_skill_actived(skill_id)
  111. if skill_id == PetConst.LifeSkill.ExpOnHookTimeUp then
  112. self.model:CheckExpRedDot(ExpDunModel.Red_Type.HangUp)
  113. self.model:Fire(ExpDunModel.UPDATE_HANGUP_RECEIVE_TIME)
  114. end
  115. end
  116. PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived)
  117. local function updata_buff_state(id)--刷新免费BUFF次数状态
  118. if id == KfActivityModel.TabID.MaterialSubmit then--
  119. self.model:CheckExpRedDot(ExpDunModel.Red_Type.QuickHangUp)
  120. end
  121. end
  122. KfActivityModel:getInstance():Bind(KfActivityModel.ANS_UPDATE_VIEW,updata_buff_state)
  123. end