5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
179 lines
6.9 KiB
Lua
179 lines
6.9 KiB
Lua
local ChapterRewardCtrl = class("ChapterRewardCtrl", BaseCtrl)
|
|
local barLength = 228
|
|
local tbColor = {
|
|
Color(0.6078431372549019, 0.7176470588235294, 0.8274509803921568, 1),
|
|
Color(0.9921568627450981, 0.7333333333333333, 0.2823529411764706, 1),
|
|
Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764, 1)
|
|
}
|
|
ChapterRewardCtrl._mapNodeConfig = {
|
|
imgChapterWindow = {sComponentName = "Image"},
|
|
imgIconChapterWindow = {sComponentName = "Image"},
|
|
imgProgressWindowF = {sComponentName = "Transform", nCount = 2},
|
|
BubbleWindow = {sComponentName = "Transform", nCount = 3},
|
|
TMPTotalStar = {sComponentName = "TMP_Text"},
|
|
reward = {sComponentName = "Transform", nCount = 3},
|
|
rtItem = {
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
|
|
nCount = 3
|
|
},
|
|
rtItemBtn = {
|
|
sNodeName = "rtItem",
|
|
callback = "OnBtnClick_Item",
|
|
sComponentName = "Button",
|
|
nCount = 3
|
|
},
|
|
barProgressWindow = {sComponentName = "Image"},
|
|
btnCloseWindow = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
btnConfirm2 = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_GetReward"
|
|
},
|
|
btnNoReward = {}
|
|
}
|
|
ChapterRewardCtrl._mapEventConfig = {}
|
|
function ChapterRewardCtrl:Awake()
|
|
end
|
|
function ChapterRewardCtrl:FadeOut()
|
|
end
|
|
function ChapterRewardCtrl:OnEnable()
|
|
end
|
|
function ChapterRewardCtrl:OnDisable()
|
|
end
|
|
function ChapterRewardCtrl:OnDestroy()
|
|
end
|
|
function ChapterRewardCtrl:OnRelease()
|
|
end
|
|
function ChapterRewardCtrl:OpenPanel(mapChapterData, nTotalStar, nCurIdx, tbReward, nMaxStar)
|
|
self.gameObject:SetActive(true)
|
|
self:SetPngSprite(self._mapNode.imgChapterWindow, mapChapterData.ChapterImg)
|
|
self:SetPngSprite(self._mapNode.imgIconChapterWindow, mapChapterData.ChapterIcon)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgIconChapterWindow)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTotalStar, nTotalStar)
|
|
self.tbReward = tbReward
|
|
self.bReceive = false
|
|
self.rewardIdx = 0
|
|
local nCurStar = nTotalStar
|
|
local nRewardCount = #tbReward
|
|
local sum = 3 - nRewardCount
|
|
if sum < 0 then
|
|
sum = 0
|
|
end
|
|
NovaAPI.SetImageFillAmount(self._mapNode.barProgressWindow, nCurStar / nMaxStar)
|
|
for index = 1, 2 do
|
|
local rtF = self._mapNode.imgProgressWindowF[index]
|
|
if index <= sum then
|
|
rtF.gameObject:SetActive(false)
|
|
self._mapNode.reward[4 - index].gameObject:SetActive(false)
|
|
else
|
|
self._mapNode.reward[4 - index].gameObject:SetActive(true)
|
|
rtF.gameObject:SetActive(true)
|
|
local nStar = tbReward[index].nStar
|
|
rtF.anchoredPosition = Vector2(barLength * nStar / nMaxStar, 0)
|
|
end
|
|
end
|
|
for idx, mapReward in ipairs(tbReward) do
|
|
local nStar = mapReward.nStar
|
|
local rtBubble = self._mapNode.BubbleWindow[sum + idx]
|
|
local txtOn = rtBubble:Find("On/NumberOn"):GetComponent("TMP_Text")
|
|
local txtOff = rtBubble:Find("Off/NumberOff"):GetComponent("TMP_Text")
|
|
rtBubble:Find("On").gameObject:SetActive(nCurStar >= nStar)
|
|
rtBubble:Find("Off").gameObject:SetActive(nCurStar < nStar)
|
|
self:SetChapterItem(self._mapNode.reward[idx], nStar, nCurStar, idx <= nCurIdx)
|
|
if nCurStar >= nStar and nCurIdx < idx then
|
|
self.bReceive = true
|
|
self.rewardIdx = idx
|
|
end
|
|
self._mapNode.btnNoReward:SetActive(not self.bReceive)
|
|
self._mapNode.btnConfirm2.gameObject:SetActive(self.bReceive)
|
|
NovaAPI.SetTMPText(txtOn, tostring(nStar))
|
|
NovaAPI.SetTMPText(txtOff, tostring(nStar))
|
|
self._mapNode.rtItem[idx]:SetItem(mapReward.nReward, nil, mapReward.nCount, nil, idx <= nCurIdx, false, false)
|
|
end
|
|
end
|
|
function ChapterRewardCtrl:Refresh(mapChapterData, nTotalStar, nCurIdx, tbReward, nMaxStar)
|
|
self:SetPngSprite(self._mapNode.imgChapterWindow, mapChapterData.ChapterImg)
|
|
self:SetPngSprite(self._mapNode.imgIconChapterWindow, mapChapterData.ChapterIcon)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPTotalStar, nTotalStar)
|
|
self.bReceive = false
|
|
self.rewardIdx = 0
|
|
local nCurStar = nTotalStar
|
|
local nRewardCount = #tbReward
|
|
local sum = 3 - nRewardCount
|
|
if sum < 0 then
|
|
sum = 0
|
|
end
|
|
NovaAPI.SetImageFillAmount(self._mapNode.barProgressWindow, nCurStar / nMaxStar)
|
|
for index = 1, 2 do
|
|
local rtF = self._mapNode.imgProgressWindowF[index]
|
|
if index <= sum then
|
|
rtF.gameObject:SetActive(false)
|
|
self._mapNode.reward[4 - index].gameObject:SetActive(false)
|
|
else
|
|
self._mapNode.reward[4 - index].gameObject:SetActive(true)
|
|
rtF.gameObject:SetActive(true)
|
|
local nStar = tbReward[index].nStar
|
|
rtF.anchoredPosition = Vector2(barLength * nStar / nMaxStar, 0)
|
|
end
|
|
end
|
|
for idx, mapReward in ipairs(tbReward) do
|
|
local nStar = mapReward.nStar
|
|
local rtBubble = self._mapNode.BubbleWindow[sum + idx]
|
|
local txtOn = rtBubble:Find("On/NumberOn"):GetComponent("TMP_Text")
|
|
local txtOff = rtBubble:Find("Off/NumberOff"):GetComponent("TMP_Text")
|
|
rtBubble:Find("On").gameObject:SetActive(nCurStar >= nStar)
|
|
rtBubble:Find("Off").gameObject:SetActive(nCurStar < nStar)
|
|
self:SetChapterItem(self._mapNode.reward[idx], nStar, nCurStar, idx <= nCurIdx)
|
|
if nCurStar >= nStar and nCurIdx < idx then
|
|
self.bReceive = true
|
|
self.rewardIdx = idx
|
|
end
|
|
self._mapNode.btnNoReward:SetActive(not self.bReceive)
|
|
self._mapNode.btnConfirm2.gameObject:SetActive(self.bReceive)
|
|
NovaAPI.SetTMPText(txtOn, tostring(nStar))
|
|
NovaAPI.SetTMPText(txtOff, tostring(nStar))
|
|
self._mapNode.rtItem[idx]:SetItem(mapReward.nReward, nil, mapReward.nCount, nil, idx <= nCurIdx, false, false)
|
|
end
|
|
end
|
|
function ChapterRewardCtrl:SetChapterItem(rtItem, nCondStar, nCurStar, bHasReceive)
|
|
local imgStarOn = rtItem:Find("imgStarOn").gameObject
|
|
local imgStarOff = rtItem:Find("imgStarOff").gameObject
|
|
local TMPTitle = rtItem:Find("TMPTitle"):GetComponent("TMP_Text")
|
|
local TMPCond = rtItem:Find("TMPCond"):GetComponent("TMP_Text")
|
|
local imgReceive = rtItem:Find("imgReceive").gameObject
|
|
local imgComplete = rtItem:Find("imgComplete").gameObject
|
|
imgStarOn:SetActive(nCondStar <= nCurStar)
|
|
imgStarOff:SetActive(nCurStar < nCondStar)
|
|
NovaAPI.SetTMPText(TMPTitle, orderedFormat(ConfigTable.GetUIText("ChapterRewardCond") or "", nCondStar))
|
|
if bHasReceive then
|
|
NovaAPI.SetTMPColor(TMPTitle, tbColor[1])
|
|
elseif nCondStar <= nCurStar then
|
|
NovaAPI.SetTMPColor(TMPTitle, tbColor[2])
|
|
else
|
|
NovaAPI.SetTMPColor(TMPTitle, tbColor[3])
|
|
end
|
|
NovaAPI.SetTMPText(TMPCond, string.format("%d/%d", nCurStar, nCondStar))
|
|
TMPCond.gameObject:SetActive(not bHasReceive and nCurStar < nCondStar)
|
|
imgReceive:SetActive(bHasReceive)
|
|
imgComplete:SetActive(not bHasReceive and nCondStar <= nCurStar)
|
|
end
|
|
function ChapterRewardCtrl:OnBtnClick_Close(btn)
|
|
self.gameObject:SetActive(false)
|
|
EventManager.Hit("GetChapterReward", true)
|
|
end
|
|
function ChapterRewardCtrl:OnBtnClick_GetReward()
|
|
if not self.bReceive then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("TitleNoChapterReward"))
|
|
return
|
|
end
|
|
print("GetChapterReward")
|
|
EventManager.Hit("GetChapterReward", false, self.rewardIdx)
|
|
end
|
|
function ChapterRewardCtrl:OnBtnClick_Item(btn)
|
|
local nIdx = table.indexof(self._mapNode.rtItemBtn, btn)
|
|
UTILS.ClickItemGridWithTips(self.tbReward[nIdx].nReward, btn.transform, true, true, false)
|
|
end
|
|
return ChapterRewardCtrl
|