战令重复奖励
This commit is contained in:
parent
2b64929a70
commit
f4724ca434
@ -17,6 +17,9 @@ BF.Vector3Zero = CS.UnityEngine.Vector3(0, 0, 0)
|
||||
BF.Vector3Right = CS.UnityEngine.Vector3(1, 0, 0)
|
||||
BF.Vector3Up = CS.UnityEngine.Vector3(0, 1, 0)
|
||||
BF.Vector3Forward = CS.UnityEngine.Vector3(0, 0, 1)
|
||||
BF.CacheVector2 = CS.UnityEngine.Vector2(0, 0)
|
||||
BF.CacheVector3 = CS.UnityEngine.Vector3(0, 0, 0)
|
||||
|
||||
|
||||
BF.Color = function(r, g, b, a)
|
||||
return {r = r, g = g, b = b, a = a}
|
||||
|
||||
@ -5,15 +5,30 @@ function BountyMainUI:getPrefabPath()
|
||||
end
|
||||
|
||||
function BountyMainUI:ctor()
|
||||
self.maxCellIdx = 0
|
||||
self.maxCellNum = 0
|
||||
self.rewardCellIdx = 0
|
||||
self.rewardCellNum = 0
|
||||
self.endTime = DataManager.BountyData:getEndTime()
|
||||
-- 默认预览第10档奖励
|
||||
self.previewRewardIndex = 10
|
||||
self.previewRewardIndex = 1
|
||||
local maxLevel = DataManager.BountyData:getMaxLevel()
|
||||
local info = nil
|
||||
for i = 2, maxLevel do
|
||||
info = DataManager.BountyData:getSeasonInfoByLevel(i)
|
||||
if info == nil then
|
||||
break
|
||||
end
|
||||
if info.reward_type and info.reward_type == 1 then
|
||||
self.previewRewardIndex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BountyMainUI:onClose()
|
||||
self:clearAdaptScrollrect()
|
||||
if self.autoRotateTween then
|
||||
self.autoRotateTween:Kill()
|
||||
end
|
||||
self:clearPreviewRewardAnimation()
|
||||
end
|
||||
|
||||
function BountyMainUI:onLoadRootComplete()
|
||||
@ -62,14 +77,16 @@ end
|
||||
function BountyMainUI:initPreviewReward()
|
||||
self.previewReward = self.uiMap["bounty_main_ui.mid_node.preview"]
|
||||
self.previewRewardCellComp = self.uiMap["bounty_main_ui.mid_node.preview.bg.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL)
|
||||
self.uiMap["bounty_main_ui.mid_node.preview.bg"]:addClickListener(function()
|
||||
if not self.inPreviewRewardAction then
|
||||
self:scrollToIndex(self.previewRewardIndex)
|
||||
end
|
||||
end)
|
||||
self.previewRewardLvTx = self.uiMap["bounty_main_ui.mid_node.preview.bg.lv_tx"]
|
||||
self.previewRewardNumTx = self.uiMap["bounty_main_ui.mid_node.preview.bg.num_tx"]
|
||||
local previewRewardLight = self.uiMap["bounty_main_ui.mid_node.preview.bg.light"]
|
||||
self.autoRotateTween = previewRewardLight:getTransform():DOLocalRotate(BF.Vector3(0, 0, -360), 3, CS.DG.Tweening.RotateMode.FastBeyond360):SetEase(CS.DG.Tweening.Ease.Linear)
|
||||
self.autoRotateTween:SetLoops(-1)
|
||||
self.uiMap["bounty_main_ui.mid_node.preview.bg.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.REWARD_DESC))
|
||||
end
|
||||
|
||||
function BountyMainUI:initRewards()
|
||||
self:initRepeatReward()
|
||||
self.adjustRewardsTitleUI = false
|
||||
local rewardsLeftTitle = self.uiMap["bounty_main_ui.top_node.left"]
|
||||
rewardsLeftTitle:setAnchoredPositionX(-GConst.UI_SCREEN_WIDTH/4)
|
||||
@ -117,29 +134,58 @@ function BountyMainUI:initRewards()
|
||||
end
|
||||
end
|
||||
self.refreshIndex = index
|
||||
|
||||
if index > self.maxCellIdx then
|
||||
self.maxCellIdx = index
|
||||
self:showLevelNextCell()
|
||||
elseif index < self.maxCellIdx - self.maxCellNum then
|
||||
self.maxCellIdx = index + self.maxCellNum
|
||||
self:showLevelNextCell()
|
||||
local totalCount = self.scrollrectComp:getTotalCount()
|
||||
local isFinalCell = index == totalCount
|
||||
if isFinalCell then
|
||||
self.rewardCellIdx = index
|
||||
self:hidePreviewReward()
|
||||
else
|
||||
if index > self.rewardCellIdx then
|
||||
self.rewardCellIdx = index
|
||||
self:showNextPreviewReward()
|
||||
elseif index < self.rewardCellIdx - self.rewardCellNum then
|
||||
self.rewardCellIdx = index + self.rewardCellNum
|
||||
self:showNextPreviewReward()
|
||||
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
|
||||
cell:refresh(index, index == self.scrollrectComp:getTotalCount())
|
||||
if not self.adjustRepeatRewardRoot then
|
||||
self.adjustRepeatRewardRoot = true
|
||||
local posY = -totalCount*self.cellHeight
|
||||
self.repeatRewardRoot:setAnchoredPositionY(posY)
|
||||
end
|
||||
self.repeatRewardRoot:getTransform():SetAsLastSibling()
|
||||
end)
|
||||
self.cellHeight = 200
|
||||
local scrollBottom = 106
|
||||
local scrollTop = 464
|
||||
local height = self.root:getRectHeight()
|
||||
height = height - scrollTop - scrollBottom
|
||||
self.maxCellNum = math.ceil(height/self.cellHeight)
|
||||
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("临时文本:奖励宝箱")
|
||||
self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat.desc_tx"]:setAnchoredPositionX(-GConst.UI_SCREEN_WIDTH/2 + 8)
|
||||
self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat.desc_tx"]:setText("临时文本:当你完成通行证的所有内容,每1000个积分可以获取一个奖励宝箱")
|
||||
self.repeatBox = self.uiMap["bounty_main_ui.mid_node.scrollrect.viewport.content.repeat.box"]
|
||||
self.repeatBox:addClickListener(function()
|
||||
if DataManager.BountyData:getIfCanClaimRepeatReward() then
|
||||
local level = DataManager.BountyData:getLevel()
|
||||
ModuleManager.BountyManager:claimReward(level, false)
|
||||
else
|
||||
GFunc.showToast("显示宝箱tips")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function BountyMainUI:adaptScrollrect()
|
||||
if not self.rectDefaultSize then
|
||||
self.rectDefaultSize = self.scrollrect:getSizeDelta()
|
||||
@ -177,9 +223,14 @@ function BountyMainUI:refreshLv()
|
||||
local exp = DataManager.BountyData:getExp()
|
||||
local lvUpExp = DataManager.BountyData:getLvUpExp()
|
||||
local level = DataManager.BountyData:getLevel()
|
||||
local maxLevel = DataManager.BountyData:getMaxLevel()
|
||||
self.levelSliderTx:setText(exp .. "/" .. lvUpExp)
|
||||
self.levelSlider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = exp / lvUpExp
|
||||
self.lvTx:setText(tostring(level))
|
||||
if level >= maxLevel then
|
||||
self.lvTx:setText("临时文本:MAX")
|
||||
else
|
||||
self.lvTx:setText(tostring(level))
|
||||
end
|
||||
local expItemIcon = DataManager.BountyData:getExpItemIcon()
|
||||
self.levelItemImg:setSprite(GConst.ATLAS_PATH.ICON_ITEM, expItemIcon)
|
||||
end
|
||||
@ -200,6 +251,8 @@ function BountyMainUI:refreshPreviewReward(idx)
|
||||
return
|
||||
end
|
||||
self.previewRewardCellComp:refreshByConfig(info.reward_pro)
|
||||
self.previewRewardNumTx:setText("临时文本:X" .. GFunc.getRewardNum(info.reward_pro))
|
||||
self.previewRewardLvTx:setText("临时文本:等级" .. idx)
|
||||
end
|
||||
|
||||
function BountyMainUI:refreshRewards()
|
||||
@ -224,55 +277,99 @@ function BountyMainUI:refreshRewards()
|
||||
local posY = -lv*self.cellHeight
|
||||
self.line:setAnchoredPositionY(posY)
|
||||
end
|
||||
|
||||
if DataManager.BountyData:getIfCanClaimRepeatReward() then
|
||||
self.repeatRewardRoot:addRedPoint(74, 15)
|
||||
else
|
||||
self.repeatRewardRoot:removeRedPoint()
|
||||
end
|
||||
end
|
||||
|
||||
function BountyMainUI:showLevelNextCell()
|
||||
-- local minIdx = self.maxCellIdx
|
||||
-- local showMyCell = -1
|
||||
-- for i = minIdx, minIdx + 10 do
|
||||
-- local cfg = DataManager.BountyData:getSeasonCfgByLevel(i)
|
||||
-- if cfg and cfg.reward_type and cfg.reward_type == 1 then
|
||||
-- showMyCell = i
|
||||
-- break
|
||||
-- end
|
||||
-- end
|
||||
-- if self.previewRewardIndex == showMyCell then
|
||||
-- return
|
||||
-- end
|
||||
-- self.previewRewardIndex = showMyCell
|
||||
-- if showMyCell <= 0 then
|
||||
-- self.rewardMyCellComp3:setVisible(false)
|
||||
-- self.rewardMyCell3:setAnchoredPositionY(0)
|
||||
-- else
|
||||
-- self.rewardMyCellComp3:setVisible(true)
|
||||
-- self:showMyCellAction()
|
||||
-- end
|
||||
function BountyMainUI:showNextPreviewReward()
|
||||
local nextRewardIndex = -1
|
||||
local maxLevel = DataManager.BountyData:getMaxLevel()
|
||||
for i = self.rewardCellIdx, maxLevel do
|
||||
local info = DataManager.BountyData:getSeasonInfoByLevel(i)
|
||||
if info and info.reward_type and info.reward_type == 1 then
|
||||
nextRewardIndex = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if self.previewRewardIndex == nextRewardIndex then
|
||||
return
|
||||
end
|
||||
self.previewRewardIndex = nextRewardIndex
|
||||
if nextRewardIndex <= 0 then
|
||||
self:hidePreviewReward()
|
||||
else
|
||||
self.previewReward:setVisible(true)
|
||||
self:showPreviewRewardAnimation()
|
||||
end
|
||||
end
|
||||
|
||||
function BountyMainUI:showMyCellAction()
|
||||
-- self.inPreviewRewardAction = true
|
||||
-- if self.rewardMyCell3.aniSeq then
|
||||
-- self.rewardMyCell3.aniSeq:Kill()
|
||||
-- end
|
||||
-- local time = 0.3
|
||||
-- local maxY = 134
|
||||
-- local posY = self.rewardMyCell3:getAnchoredPositionY()
|
||||
function BountyMainUI:showPreviewRewardAnimation()
|
||||
local time = 0.3
|
||||
local maxY = 106
|
||||
local moveOutTime = 0
|
||||
local posY = self.previewReward:getAnchoredPositionY()
|
||||
if posY > 0.1 then
|
||||
moveOutTime = time/maxY*posY
|
||||
if self.previewRewardMoveOutTween == nil then
|
||||
self.previewRewardMoveOutTween = self.previewReward:getTransform():DOAnchorPosY(0, moveOutTime):SetEase(CS.DG.Tweening.Ease.InCubic)
|
||||
self.previewRewardMoveOutTween:SetAutoKill(false)
|
||||
else
|
||||
local CacheVector2 = BF.CacheVector2
|
||||
CacheVector2.x = 0
|
||||
CacheVector2.y = 0
|
||||
self.previewRewardMoveOutTween:ChangeEndValue(CacheVector2, moveOutTime, true)
|
||||
self.previewRewardMoveOutTween:Restart()
|
||||
end
|
||||
end
|
||||
if self.showPreviewRewardSid then
|
||||
self:unscheduleGlobal(self.showPreviewRewardSid)
|
||||
end
|
||||
self.showPreviewRewardSid = self:performWithDelayGlobal(function()
|
||||
self.showPreviewRewardSid = nil
|
||||
if self.previewRewardIndex > 0 then
|
||||
self:refreshPreviewReward(self.previewRewardIndex)
|
||||
end
|
||||
if self.previewRewardMoveInTween == nil then
|
||||
self.previewRewardMoveInTween = self.previewReward:getTransform():DOAnchorPosY(maxY, time):SetEase(CS.DG.Tweening.Ease.InCubic)
|
||||
self.previewRewardMoveInTween:SetAutoKill(false)
|
||||
else
|
||||
local CacheVector2 = BF.CacheVector2
|
||||
CacheVector2.x = 0
|
||||
CacheVector2.y = maxY
|
||||
self.previewRewardMoveInTween:ChangeEndValue(CacheVector2, time, true)
|
||||
self.previewRewardMoveInTween:Restart()
|
||||
end
|
||||
end, moveOutTime)
|
||||
end
|
||||
|
||||
-- local aniSeq = self.rewardMyCell3:createBindTweenSequence()
|
||||
-- if posY > 0 then
|
||||
-- aniSeq:Append(self.rewardMyCell3:getTransform():DOAnchorPosY(0, time/maxY*posY):SetEase(CS.DG.Tweening.Ease.InCubic))
|
||||
-- end
|
||||
-- aniSeq:AppendCallback(function()
|
||||
-- if self.previewRewardIndex > 0 then
|
||||
-- self.rewardMyCellComp3:refresh(self.previewRewardIndex)
|
||||
-- end
|
||||
-- end)
|
||||
-- aniSeq:Append(self.rewardMyCell3:getTransform():DOAnchorPosY(maxY, time):SetEase(CS.DG.Tweening.Ease.InCubic))
|
||||
-- aniSeq:AppendCallback(function()
|
||||
-- self.inPreviewRewardAction = false
|
||||
-- end)
|
||||
function BountyMainUI:hidePreviewReward()
|
||||
self.previewReward:setVisible(false)
|
||||
if self.previewRewardMoveOutTween then
|
||||
self.previewRewardMoveOutTween:Pause()
|
||||
end
|
||||
if self.previewRewardMoveInTween then
|
||||
self.previewRewardMoveInTween:Pause()
|
||||
end
|
||||
self.previewReward:setAnchoredPositionY(0)
|
||||
end
|
||||
|
||||
-- self.rewardMyCell3.aniSeq = aniSeq
|
||||
function BountyMainUI:clearPreviewRewardAnimation()
|
||||
if self.previewRewardMoveInTween then
|
||||
self.previewRewardMoveInTween:Kill()
|
||||
self.previewRewardMoveInTween = nil
|
||||
end
|
||||
if self.previewRewardMoveOutTween then
|
||||
self.previewRewardMoveOutTween:Kill()
|
||||
self.previewRewardMoveOutTween = nil
|
||||
end
|
||||
if self.showPreviewRewardSid then
|
||||
self:unscheduleGlobal(self.showPreviewRewardSid)
|
||||
self.showPreviewRewardSid = nil
|
||||
end
|
||||
end
|
||||
|
||||
function BountyMainUI:scrollToIndex(targetIndex)
|
||||
|
||||
@ -24,9 +24,9 @@ end
|
||||
function BountyRewardCell:refresh(reward, isPro, isLock, showCheck)
|
||||
self:showCheck(showCheck)
|
||||
if isPro then
|
||||
self.bg:setSprite(GConst.ATLAS_PATH.BOUNTY, "bounty_board_1")
|
||||
else
|
||||
self.bg:setSprite(GConst.ATLAS_PATH.BOUNTY, "bounty_board_2")
|
||||
else
|
||||
self.bg:setSprite(GConst.ATLAS_PATH.BOUNTY, "bounty_board_1")
|
||||
end
|
||||
if isLock then
|
||||
self.lock:setVisible(true)
|
||||
|
||||
@ -101,13 +101,12 @@ end
|
||||
|
||||
function BountyData:addExp(num)
|
||||
self.exp = self.exp + num
|
||||
local lvUpExp = self:getLvUpExp()
|
||||
local maxLv = self:getMaxLevel()
|
||||
while self.exp >= lvUpExp do
|
||||
self.exp = self.exp - lvUpExp
|
||||
self.level = self.level + 1
|
||||
if self.level >= maxLv then
|
||||
self.level = maxLv
|
||||
while true do
|
||||
local lvUpExp = self:getLvUpExp()
|
||||
if self.exp >= lvUpExp then
|
||||
self.exp = self.exp - lvUpExp
|
||||
self.level = self.level + 1
|
||||
else
|
||||
break
|
||||
end
|
||||
end
|
||||
@ -117,7 +116,7 @@ end
|
||||
function BountyData:getLvUpExp()
|
||||
local info = self:getSeasonInfoByLevel(self.level)
|
||||
if info == nil then
|
||||
return 1
|
||||
return self.repeatLevelInfo and self.repeatLevelInfo.exp or 1
|
||||
end
|
||||
return info.exp
|
||||
end
|
||||
@ -161,6 +160,17 @@ function BountyData:getIfCanBuyLevel()
|
||||
return false
|
||||
end
|
||||
|
||||
function BountyData:getIfCanClaimRepeatReward()
|
||||
local maxLevel = self:getMaxLevel()
|
||||
if maxLevel <= 0 then
|
||||
return false
|
||||
end
|
||||
if self.level <= maxLevel then
|
||||
return false
|
||||
end
|
||||
return not self:getLevelState(self.level)
|
||||
end
|
||||
|
||||
function BountyData:onClaimReward(level)
|
||||
self.claimed[level] = true
|
||||
self:markDirty()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user