-- <* -- @Author: Saber -- @Description: 经验副本模块Controller,只用于控制界面开关,相关协议逻辑移步BaseDungeonController -- *> require("game.expDun.ExpDunModel") require("game.expDun.ExpHangupMainView") -- 经验副本主界面(新) require("game.expDun.ExpQuickHangUpView") -- 经验副本快速挂机购买界面 require("game.expDun.ExpHangUpReceiveView") -- 经验副本放置挂机奖励界面 -- 2020年5月12日第三版重构经验副本新增 require("game.expDun.ExpDunAnimConst") require("game.expDun.ExpDunRouteItem") -- 经验副本主入口副本里程碑按钮 require("game.expDun.ExpHangupAwardItem") -- 经验副本通用奖励item require("game.expDun.ExpHangupMonModelItem") -- 经验副本怪物模型节点 require("game.expDun.ExpHangupBulletItem") -- 经验副本子弹例子效果容器 require("game.expDun.ExpDunRouteWaveItem") -- 经验副本路线节点内波数节点 -- 2021年5月11日第七版优化新增 require("game.expDun.ExpDunWaveRankView") -- 经验副本路线排行界面 require("game.expDun.ExpDunWaveRankTopItem") -- 经验副本路线排行界面前三名节点 require("game.expDun.ExpDunWaveRankItem") -- 经验副本路线排行界面滚动节点 ExpDunController = ExpDunController or BaseClass(BaseController, true) local ExpDunController = ExpDunController function ExpDunController:__init() ExpDunController.Instance = self self.model = ExpDunModel:getInstance() self:AddEvents() end function ExpDunController:__delete() end function ExpDunController:AddEvents() -- do return end local function open_exp_main_view(show, need_show_guide, need_show_offline_con) self:OpenView("ExpHangupMainView", show, need_show_guide, need_show_offline_con) end self.model:Bind(ExpDunModel.OPEN_EXP_HANGUP_MAIN_VIEW, open_exp_main_view) local function open_hangup_view(show) self:OpenView("ExpQuickHangUpView", show) end self.model:Bind(ExpDunModel.OPEN_QUICK_HANGUP_VIEW, open_hangup_view) local function open_hangup_receive_view(show, reward_list) self:OpenView("ExpHangUpReceiveView", show, reward_list) end self.model:Bind(ExpDunModel.OPEN_HANGUP_RECEIVE_VIEW, open_hangup_receive_view) local function check_open_hangup_receive_view() local condition = Config.Modulesub["610@16"].open_lv local lv = RoleManager.Instance.mainRoleInfo.level if condition > lv then local str = string.format("%s级开放", condition) Message.show(str, "fault") else -- 满足条件的情况下,要判断当前的挂机时间是否满足1个小时,否则用不可领取奖励界面的表现显示 -- 获取已累计的挂机时间 local contain_time = self.model:GetHangUpContainTimeData() -- local pass_time = TimeUtil:getServerTime() - last_time if contain_time > 3601 then BaseDungeonModel:getInstance():Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61050, 0, 0) else open_hangup_receive_view(true, nil) end end end self.model:Bind(ExpDunModel.CHECK_OPEN_HANGUP_RECEIVE_VIEW, check_open_hangup_receive_view) local function open_wave_rank_view(show) self:OpenView("ExpDunWaveRankView", show) end self.model:Bind(ExpDunModel.OPEN_WAVE_RANK_VIEW, open_wave_rank_view) local main_role = RoleManager.Instance.mainRoleInfo -- 战力更新时刷新主界面经验副本按钮tips local function update_expdun_tips_by_power_change() self.model:UpdateMainTipsOnChangePowerOrWave(true, false) end if self.update_expdun_tips_by_power_change_id then main_role:UnBind(self.update_expdun_tips_by_power_change_id) self.update_expdun_tips_by_power_change_id = nil end if self.update_expdun_tips_by_level_change_id then main_role:UnBind(self.update_expdun_tips_by_level_change_id) self.update_expdun_tips_by_level_change_id = nil end self.update_expdun_tips_by_power_change_id = main_role:BindOne("fighting", update_expdun_tips_by_power_change) self.update_expdun_tips_by_level_change_id = main_role:Bind(EventName.CHANGE_LEVEL, update_expdun_tips_by_power_change) -- 等级变化也要刷 -- 如果有需要在返回大世界重新打开经验副本界面 local function onSceneLoadViewFinish() if SceneManager:getInstance():IsMainCityorYieldScene() then if self.model._need_open_exp_view then self.model._need_open_exp_view = false --新手期间不要停,继续做任务就好了 if RoleManager.Instance.mainRoleInfo.level <= Config.ConfigTaskEffect.GuideLevel then GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK) return end open_exp_main_view(true) -- open_exp_dun_main_view(true) end end -- 无论如何都要置false,不然这个会影响正常流程 self.model._need_open_exp_view = false end self:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, onSceneLoadViewFinish) -- 监听限制红点的任务完成情况 local function update_newly_red_by_finishtasks(id) if not self.model:GetExpDunLimitNewlyRed() then if not id or id == ExpDunModel.Newly_Limit_Taskid then self.model:CheckExpDunLimitNewlyRed() self.model:CheckExpRedDotAll() end end end self:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, update_newly_red_by_finishtasks) -- 如果激活了经验挂机相关的宝宝生活技能,则需要推送更新刷新挂机时间相关的逻辑 local function on_pet_life_skill_actived(skill_id) if skill_id == PetConst.LifeSkill.ExpOnHookTimeUp then self.model:CheckExpRedDot(ExpDunModel.Red_Type.HangUp) self.model:Fire(ExpDunModel.UPDATE_HANGUP_RECEIVE_TIME) end end PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived) local function updata_buff_state(id)--刷新免费BUFF次数状态 if id == KfActivityModel.TabID.MaterialSubmit then-- self.model:CheckExpRedDot(ExpDunModel.Red_Type.QuickHangUp) end end KfActivityModel:getInstance():Bind(KfActivityModel.ANS_UPDATE_VIEW,updata_buff_state) end