local DailyChallengeUI = class("DailyChallengeUI", BaseUI) function DailyChallengeUI:getIsOpen() return DataManager.DailyChallengeData:isOpen() end function DailyChallengeUI:getEntranceName() return I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE) end function DailyChallengeUI:getShowEntranceRedPoint() return DataManager.DailyChallengeData:isMeetChallenge() end function DailyChallengeUI:onClickFight() ModuleManager.DailyChallengeManager:startChallenge() end function DailyChallengeUI:ctor() ModuleManager.DailyChallengeManager:checkDayChange() end function DailyChallengeUI:onLoadRootComplete() local uiMap = self.root:genAllChildren() uiMap["daily_challenge_ui.title.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.DAILY_CHALLENGE)) uiMap["daily_challenge_ui.record_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.CHAPTER_DESC_1, DataManager.DailyChallengeData:getMaxWave())) self.tasks = GFunc.getTable() table.insert(self.tasks, uiMap["daily_challenge_ui.challenge.task.icon_task1"]) table.insert(self.tasks, uiMap["daily_challenge_ui.challenge.task.icon_task2"]) table.insert(self.tasks, uiMap["daily_challenge_ui.challenge.task.icon_task3"]) self.buffObj = uiMap["daily_challenge_ui.challenge.buffs.buff.btn_buff"] self.debuffObj = uiMap["daily_challenge_ui.challenge.buffs.debuff.btn_debuff"] self.bossSpine = uiMap["daily_challenge_ui.challenge.spine_node"] self.countdownTx = uiMap["daily_challenge_ui.challenge.info.countdown.time_tx"] self.fightBtn = uiMap["daily_challenge_ui.fight_btn"] -- 体力消耗 self.fightCost = uiMap["daily_challenge_ui.fight_btn.cost"] self.costTxDesc = uiMap["daily_challenge_ui.fight_btn.cost.tx_desc"] self.costTxCost = uiMap["daily_challenge_ui.fight_btn.cost.tx_cost"] -- 剩余次数 self.countTxNum = uiMap["daily_challenge_ui.fight_btn.tx_count"] -- 按钮文本 self.txFight = uiMap["daily_challenge_ui.fight_btn.tx_desc"] end function DailyChallengeUI:updateTime() ModuleManager.DailyChallengeManager:checkDayChange() local remainTime = Time:getTodaySurplusTime() self.countdownTx:setText(GFunc.getTimeStrWithHMS(remainTime)) end function DailyChallengeUI:onRefresh() self:refreshTask() self:refreshBuff() self:refreshBoss() self:updateTime() self:refreshFightBtn() end function DailyChallengeUI:refreshTask() local tasksData = DataManager.DailyChallengeData:getTasks() for i = 1, #self.tasks do local taskObj = self.tasks[i] if DataManager.DailyChallengeData:canClaimTask(i) then -- 任务奖励可领取 taskObj:addRedPoint(30, 30, 0.6) taskObj:setSprite(GConst.ATLAS_PATH.DAILY_CHALLENGE, "daily_task_1") else -- 任务奖励不可领取 taskObj:removeRedPoint() if not DataManager.DailyChallengeData:isTaskFinish(i) then taskObj:setSprite(GConst.ATLAS_PATH.DAILY_CHALLENGE, "daily_task_1") else taskObj:setSprite(GConst.ATLAS_PATH.DAILY_CHALLENGE, "daily_task_2") end end taskObj:addClickListener(function() if DataManager.DailyChallengeData:canClaimTask(i) then ModuleManager.DailyChallengeManager:getTaskReward(i) else local rewards = DataManager.DailyChallengeData:getTaskRewards(tasksData[i].task_id) local desc = DataManager.DailyChallengeData:getTaskDesc(tasksData[i].task_id) ModuleManager.TipsManager:showRewardsTips(rewards, desc, taskObj, nil, nil, false, ModuleManager.TipsManager.REWARDS_TIPS_TYPE.TASK) end end) end end function DailyChallengeUI:refreshBuff() local buffIds = DataManager.DailyChallengeData:getTodayBuffIds() self.buffObj:addClickListener(function() ModuleManager.TipsManager:showDescTips(DataManager.DailyChallengeData:getBuffDesc(buffIds[1]), self.buffObj) end) self.debuffObj:addClickListener(function() ModuleManager.TipsManager:showDescTips(DataManager.DailyChallengeData:getBuffDesc(buffIds[2]), self.debuffObj) end) end function DailyChallengeUI:refreshBoss() local curBossInfo = DataManager.DailyChallengeData:getFinalBossInfo() if not curBossInfo then return end if self.curModelId == curBossInfo.model_id then return end if self.spineBoss then self.spineBoss:destroy() self.spineBoss = nil self.curModelId = nil end self.curModelId = curBossInfo.model_id SpineManager:loadHeroAsync(self.curModelId, self.bossSpine, function(spineObject) self.spineBoss = spineObject self.spineBoss:setDefaultMix(0) self.spineBoss:setLocalScale(curBossInfo.model_ui, curBossInfo.model_ui, curBossInfo.model_ui) self.spineBoss:playAnimation(GConst.BattleConst.SPINE_ANIMATION_NAME.IDLE, true, false) end) end function MainComp:refreshFightBtn() local isShowFight = false -- 体力消耗 local cost = DataManager.DailyChallengeData:getChallengeHpCost() if cost then isShowFight = true self.fightCost:setActive(true) self.costTxDesc:setText(I18N:getGlobalText(I18N.GlobalConst.START_DESC)) self.costTxCost:setText(GFunc.getRewardNum(cost)) else self.fightCost:setActive(false) end -- 剩余次数 local remainCount = DataManager.DailyChallengeData:getTodayRemainLimitCount() if remainCount >= 0 then isShowFight = true self.countTxNum:setActive(true) self.countTxNum:setText(I18N:getGlobalText(I18N.GlobalConst.TODAY_REMAIN_TIMES, remainCount)) else self.countTxNum:setActive(false) end if isShowFight then self.fightBtn:setActive(true) self.fightBtn:addClickListener(moduleCell.onClickFight) else self.fightBtn:setActive(false) end end return DailyChallengeUI