91 lines
3.8 KiB
Lua
91 lines
3.8 KiB
Lua
---@class XUiSettleEncorePrice
|
||
local XUiSettleEncorePrice = XClass(nil, "XUiSettleEncorePrice")
|
||
|
||
function XUiSettleEncorePrice:Ctor(ui, stageId, path)
|
||
path = path or "SafeAreaContentPane/PanelNorWinInfo/PanelNor/PanelBtn/PanelBtns/PanelInformation"
|
||
self._UiParent = ui
|
||
self._Panel = XUiHelper.TryGetComponent(ui.Transform, path, "RectTransform")
|
||
if not self._Panel then
|
||
XLog.Error("[XUiSettleEncorePrice] '再次挑战'无法显示血清,结算界面ui找不到PanelInformation")
|
||
return
|
||
end
|
||
self._PanelEnough = XUiHelper.TryGetComponent(self._Panel, "TxtEnough", "RectTransform")
|
||
self._PanelNotEnough = XUiHelper.TryGetComponent(self._Panel, "TxtNoEnough", "RectTransform")
|
||
self._TxtChallengeAmountEnough = XUiHelper.TryGetComponent(self._PanelEnough, "TxtTim", "Text")
|
||
self._TxtChallengeAmountNotEnough = XUiHelper.TryGetComponent(self._PanelNotEnough, "TxtTim", "Text")
|
||
self._TxtActionPointEnough = XUiHelper.TryGetComponent(self._PanelEnough, "TxtSerum", "Text")
|
||
self._TxtActionPointNotEnough = XUiHelper.TryGetComponent(self._PanelNotEnough, "TxtSerum", "Text")
|
||
self:SetStage(stageId)
|
||
end
|
||
|
||
function XUiSettleEncorePrice:SetStage(stageId)
|
||
if not self:MoveToEncoreBtn(stageId) then
|
||
self:HidePriceUi()
|
||
return
|
||
end
|
||
local price = XDataCenter.FubenManager.GetStageActionPointConsume(stageId)
|
||
if price <= 0 then
|
||
self:HidePriceUi()
|
||
return
|
||
end
|
||
self:ShowPriceUi()
|
||
-- 上一次挑战次数
|
||
local challengeAmount = XDataCenter.FubenManager.GetFightChallengeCount()
|
||
self:SetPrice(stageId, price * challengeAmount, challengeAmount)
|
||
end
|
||
|
||
function XUiSettleEncorePrice:SetPrice(stageId, totalPrice, challengeAmount)
|
||
-- 挑战次数
|
||
local maxChallengeAmount = XDataCenter.FubenManager.GetStageMaxChallengeCountSafely(stageId)
|
||
local isChallengeAmountEnough = challengeAmount <= maxChallengeAmount
|
||
self._TxtChallengeAmountEnough.gameObject:SetActiveEx(isChallengeAmountEnough)
|
||
self._TxtChallengeAmountNotEnough.gameObject:SetActiveEx(not isChallengeAmountEnough)
|
||
if isChallengeAmountEnough then
|
||
self._TxtChallengeAmountEnough.text = challengeAmount
|
||
else
|
||
self._TxtChallengeAmountNotEnough.text = challengeAmount
|
||
end
|
||
|
||
-- 行动点数
|
||
local actionPointAmount = XDataCenter.ItemManager.GetActionPointsNum()
|
||
local isActionPointEnough = actionPointAmount >= totalPrice
|
||
self._TxtActionPointEnough.gameObject:SetActiveEx(isActionPointEnough)
|
||
self._TxtActionPointNotEnough.gameObject:SetActiveEx(not isActionPointEnough)
|
||
if isActionPointEnough then
|
||
self._TxtActionPointEnough.text = totalPrice
|
||
else
|
||
self._TxtActionPointNotEnough.text = totalPrice
|
||
end
|
||
end
|
||
|
||
function XUiSettleEncorePrice:ShowPriceUi()
|
||
self._Panel.gameObject:SetActiveEx(true)
|
||
end
|
||
|
||
function XUiSettleEncorePrice:HidePriceUi()
|
||
self._Panel.gameObject:SetActiveEx(false)
|
||
end
|
||
|
||
-- “再次挑战” 按钮的位置根据配置stage决定
|
||
function XUiSettleEncorePrice:MoveToEncoreBtn(stageId)
|
||
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
||
local attachBtn
|
||
if stageCfg.FunctionLeftBtn == XRoomSingleManager.BtnType.Again then
|
||
attachBtn = self._UiParent.BtnLeft
|
||
elseif stageCfg.FunctionRightBtn == XRoomSingleManager.BtnType.Again then
|
||
-- 默认ui放在右边
|
||
return true
|
||
end
|
||
if not attachBtn then
|
||
return false
|
||
end
|
||
local rightBtnPos = self._UiParent.BtnRight.transform.localPosition
|
||
local attachBtnPos = attachBtn.transform.localPosition
|
||
local pricePanelPos = self._Panel.transform.localPosition
|
||
local offset2Right = pricePanelPos - rightBtnPos
|
||
local posShouldAttach = attachBtnPos + offset2Right
|
||
self._Panel.transform.localPosition = posShouldAttach
|
||
return true
|
||
end
|
||
|
||
return XUiSettleEncorePrice
|