diff --git a/lua/app/ui/bounty/bounty_main_ui.lua b/lua/app/ui/bounty/bounty_main_ui.lua index 9d4e911c..6bfbfc11 100644 --- a/lua/app/ui/bounty/bounty_main_ui.lua +++ b/lua/app/ui/bounty/bounty_main_ui.lua @@ -24,7 +24,6 @@ function BountyMainUI:ctor() end function BountyMainUI:onClose() - self:clearAdaptScrollrect() if self.autoRotateTween then self.autoRotateTween:Kill() end @@ -122,6 +121,10 @@ function BountyMainUI:initRewards() ModuleManager.BountyManager:buyBountyLevel() end) + self.progressBg = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.progress_bg"] + self.progressComp = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.progress_bg.progress"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.rewardsMaskBg = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.mask_img"] + self.scrollrect = self.uiMap["bounty_main_ui.mid_node.scrollrect"] self.scrollrectViewport = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport"] self.rewardsContent = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content"] @@ -129,18 +132,12 @@ function BountyMainUI:initRewards() self.scrollrectComp:clearCells() self.scrollrectComp:setTotalCount(0) self.scrollrectComp:addInitCallback(function() + self.rewardsMaskBg:getTransform():SetAsLastSibling() + self.line:getTransform():SetAsLastSibling() + self.repeatRewardRoot:getTransform():SetAsLastSibling() return "app/ui/bounty/cell/bounty_cell" end) self.scrollrectComp:addRefreshCallback(function(index, cell) - -- TODO 有时候顺序还是不对 - if self.refreshIndex then - if index > self.refreshIndex then - cell:getBaseObject():getTransform():SetAsLastSibling() - elseif index < self.refreshIndex then - cell:getBaseObject():getTransform():SetAsFirstSibling() - end - end - self.refreshIndex = index local totalCount = self.scrollrectComp:getTotalCount() local isFinalCell = index == totalCount if not self.disablePreviewReward then @@ -157,29 +154,14 @@ function BountyMainUI:initRewards() end end end - cell:refresh(index, isFinalCell) - local lv = DataManager.BountyData:getLevel() - if index > lv - 1 or index < lv + 1 then - self.line:getTransform():SetAsLastSibling() - end - if not self.adjustRepeatRewardRoot then - self.adjustRepeatRewardRoot = true - local posY = -totalCount*self.cellHeight - self.repeatRewardRoot:setAnchoredPositionY(posY) - end - self.repeatRewardRoot:getTransform():SetAsLastSibling() + cell:refresh(index) end) self.cellHeight = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.cell"]:getRectHeight() - local scrollBottom = 106 - local scrollTop = 464 - local height = self.root:getRectHeight() - height = height - scrollTop - scrollBottom + local height = self.scrollrect:getRectHeight() - self.scrollrectComp:getTopRecoveryOffset() - self.scrollrectComp:getDownRecoveryOffset() self.rewardCellNum = math.ceil(height/self.cellHeight) - self:adaptScrollrect() end function BountyMainUI:initRepeatReward() - self.adjustRepeatRewardRoot = false self.repeatRewardRoot = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat"] self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_BOX_DESC)) self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.BOUNTY_DESC_3)) @@ -202,26 +184,6 @@ function BountyMainUI:initRepeatReward() end) end -function BountyMainUI:adaptScrollrect() - if not self.rectDefaultSize then - self.rectDefaultSize = self.scrollrect:getSizeDelta() - end - if not self.viewDefaultSize then - self.viewDefaultSize = self.scrollrectViewport:getSizeDelta() - end - local addH = GFunc.calculateFitSizeY() - self.scrollrect:setSizeDelta(self.rectDefaultSize.x, self.rectDefaultSize.y + addH) - self.scrollrectViewport:setSizeDelta(self.viewDefaultSize.x, self.viewDefaultSize.y + addH) -end - -function BountyMainUI:clearAdaptScrollrect() - if not self.rectDefaultSize then - return - end - self.scrollrect:setSizeDelta(self.rectDefaultSize.x, self.rectDefaultSize.y) - self.scrollrectViewport:setSizeDelta(self.viewDefaultSize.x, self.viewDefaultSize.y) -end - function BountyMainUI:bindData() self:bind(DataManager.BountyData, "dirty", function() self:onRefresh() @@ -292,14 +254,28 @@ function BountyMainUI:refreshRewards() self.scrollrectComp:updateAllCell() self.disablePreviewReward = false end + local topRecoveryOffset = self.scrollrectComp:getTopRecoveryOffset() + local downRecoveryOffset = self.scrollrectComp:getDownRecoveryOffset() + local cellHeight = self.scrollrectComp:getCellHeight() if lv >= maxLv then self.line:setVisible(false) else self.line:setVisible(true) - local posY = -lv*self.cellHeight - self.line:setAnchoredPositionY(posY) + self.line:setAnchoredPositionY(-topRecoveryOffset - lv*cellHeight) end + self.progressBg:setAnchoredPositionY((topRecoveryOffset + downRecoveryOffset)/2 - cellHeight/2) + self.progressBg:setSizeDeltaY(cellHeight*(maxLv - 1)) + local percent = (lv - 1) / (maxLv - 1) + if percent < 0 then + percent = 0 + end + self.progressComp.value = percent + + self.rewardsMaskBg:setAnchoredPositionY(-topRecoveryOffset - lv*cellHeight) + self.rewardsMaskBg:setSizeDeltaY(cellHeight*maxLv + GConst.UI_SCREEN_HEIGHT) + + self.repeatRewardRoot:setAnchoredPositionY(downRecoveryOffset) if DataManager.BountyData:getIfCanClaimRepeatReward() then self.repeatRewardRoot:addRedPoint(74, 15) else diff --git a/lua/app/ui/bounty/cell/bounty_cell.lua b/lua/app/ui/bounty/cell/bounty_cell.lua index 94d4a437..7a3e4188 100644 --- a/lua/app/ui/bounty/cell/bounty_cell.lua +++ b/lua/app/ui/bounty/cell/bounty_cell.lua @@ -9,12 +9,9 @@ function BountyCell:init() self.bountyRewardCell1 = uiMap["cell.bg.bounty_reward_cell_1"]:addLuaComponent(BOUNTY_REWARD_CELL) uiMap["cell.bg.bounty_reward_cell_2"]:setAnchoredPositionX(GConst.UI_SCREEN_WIDTH/4) self.bountyRewardCell2 = uiMap["cell.bg.bounty_reward_cell_2"]:addLuaComponent(BOUNTY_REWARD_CELL) - self.maskImg = uiMap["cell.mask_img"] self.lvBg = uiMap["cell.bg.lv_bg"] self.lvTx = uiMap["cell.bg.lv_bg.lv_tx"] - self.progressBg = uiMap["cell.bg.progress_bg"] - self.progressComp = uiMap["cell.bg.progress_bg.progress"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) self.bountyRewardCell1:addClickListener(function() if self.idx == nil then return @@ -44,7 +41,7 @@ function BountyCell:init() end) end -function BountyCell:refresh(idx, isFinalCell) +function BountyCell:refresh(idx) self.idx = idx local bountyInfo = DataManager.BountyData:getSeasonInfoByLevel(idx) local lv = DataManager.BountyData:getLevel() @@ -56,13 +53,7 @@ function BountyCell:refresh(idx, isFinalCell) self.bountyRewardCell1:refresh(bountyInfo.reward, false, false, state) self.bountyRewardCell2:refresh(bountyInfo.reward_pro, true, not isBought, proState) if lv >= idx then - self.maskImg:setVisible(false) self.lvBg:setImageGray(false) - if lv == idx then - self.progressComp.value = 0 - else - self.progressComp.value = 1 - end if state then -- 已经领过了 self.bountyRewardCell1:hideLight() else @@ -75,16 +66,9 @@ function BountyCell:refresh(idx, isFinalCell) end else self.lvBg:setImageGray(true) - self.maskImg:setVisible(true) - self.progressComp.value = 0 self.bountyRewardCell1:hideLight() self.bountyRewardCell2:hideLight() end - if isFinalCell then - self.progressBg:setVisible(false) - else - self.progressBg:setVisible(true) - end end function BountyCell:setVisible(visible)