diff --git a/lua/app/ui/arena/cell/arena_grading_reward_cell.lua b/lua/app/ui/arena/cell/arena_grading_reward_cell.lua index 4984e9d9..8b13f80c 100644 --- a/lua/app/ui/arena/cell/arena_grading_reward_cell.lua +++ b/lua/app/ui/arena/cell/arena_grading_reward_cell.lua @@ -60,10 +60,11 @@ function ArenaGradingRewardCell:refresh(id) end) self.txGrading:setText(DataManager.ArenaData:getGradingName(gradingId)) + self.baseObject:setSizeDeltaY(DataManager.ArenaData:getGradingRewardItemHeight(self.id)) if cfg.unlock_hero and #cfg.unlock_hero > 0 then -- 解锁英雄 + self.gradingNode:setActive(true) self.gradingNode:setAnchoredPositionY(UNLOCK_GRADING_POSY) - self.baseObject:setSizeDeltaY(DataManager.ArenaData:getGradingRewardItemHeight(true)) self.heroUnlock:setActive(true) if maxPoint >= cfg.score then @@ -88,8 +89,12 @@ function ArenaGradingRewardCell:refresh(id) end end else - self.gradingNode:setAnchoredPositionY(COMMON_GRADING_POSY) - self.baseObject:setSizeDeltaY(DataManager.ArenaData:getGradingRewardItemHeight(false)) + if DataManager.ArenaData:isGradingMin(self.id) then + self.gradingNode:setActive(true) + self.gradingNode:setAnchoredPositionY(COMMON_GRADING_POSY) + else + self.gradingNode:setActive(false) + end self.heroUnlock:setActive(false) end @@ -105,13 +110,14 @@ function ArenaGradingRewardCell:refresh(id) local posY = rootHeight * curProg -- 高度超框处理 - if self.id == 1 or self.id == #table.keys(cfg) then + if self.id == 1 or self.id == #DataManager.ArenaData:getGradingRewardCfg() then local tagHeight = self.tagProg:fastGetSizeDeltaY() if posY < tagHeight / 2 then posY = tagHeight / 2 end end self.tagProg:setAnchoredPositionY(posY) + self.baseObject:getTransform():SetAsLastSibling() else self.tagProg:setVisible(false) end diff --git a/lua/app/userdata/arena/arena_data.lua b/lua/app/userdata/arena/arena_data.lua index ef963b0c..3ffda486 100644 --- a/lua/app/userdata/arena/arena_data.lua +++ b/lua/app/userdata/arena/arena_data.lua @@ -568,11 +568,8 @@ function ArenaData:getGradingRewardProgressByScore(id, score) if id == 1 then -- 第一个档位特殊处理 - local minScore = self:getSeasonGradingMinScore() - local prog = (score - minScore) / (point - minScore) - if prog > 0.5 then - prog = 0.5 - end + local prog = 0.5 + if score > point then prog = prog + ((score - point) / (rangeMax - point)) end @@ -606,12 +603,35 @@ function ArenaData:hasGradingRewardRedDot() return false end -local GRADING_REWARD_COMMON_SIZE = 460 +-- 奖励段位是否是段位分界线 +function ArenaData:isGradingMin(id) + local score = self:getGradingRewardCfg()[id].score + + for id, data in pairs(self.cfgRank) do + if score == data.score then + return true + end + end + + return false +end + +local GRADING_REWARD_COMMON_SIZE = 220 +local GRADING_REWARD_GRADING_SIZE = 460 local GRADING_REWARD_UNLOCK_SIZE = 570 -- 获取段位奖励项的高 -function ArenaData:getGradingRewardItemHeight(hasUnlockHero) - return hasUnlockHero and GRADING_REWARD_UNLOCK_SIZE or GRADING_REWARD_COMMON_SIZE +function ArenaData:getGradingRewardItemHeight(id) + if self:getGradingRewardCfg()[id].unlock_hero ~= nil then + -- 有解锁的英雄 + return GRADING_REWARD_UNLOCK_SIZE + elseif self:isGradingMin(id) then + -- 是段位分界线 + return GRADING_REWARD_GRADING_SIZE + else + -- 普通奖励 + return GRADING_REWARD_COMMON_SIZE + end end -- 获取当前列表定位所在档位的高度 @@ -624,7 +644,7 @@ function ArenaData:getCurTargetPosY() return totalHeight end - totalHeight = totalHeight + (data.unlock_hero ~= nil and GRADING_REWARD_UNLOCK_SIZE or GRADING_REWARD_COMMON_SIZE) + totalHeight = totalHeight + self:getGradingRewardItemHeight(id) end -- 判断当前档位 @@ -636,7 +656,7 @@ function ArenaData:getCurTargetPosY() return totalHeight end - totalHeight = totalHeight + (data.unlock_hero ~= nil and GRADING_REWARD_UNLOCK_SIZE or GRADING_REWARD_COMMON_SIZE) + totalHeight = totalHeight + self:getGradingRewardItemHeight(id) end return 0