Files
StellaSora_DataLua/lua/game/ui/infinitytower/infinitytowerrewardlist.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

110 lines
3.8 KiB
Lua

local InfinityTowerRewardList = class("InfinityTowerRewardList", BaseCtrl)
local texNameColor = {
Color(0.6980392156862745, 0.6588235294117647, 0.7647058823529411, 1),
Color(0.4196078431372549, 0.2901960784313726, 0.6627450980392157, 1),
Color(0.4196078431372549, 0.2901960784313726, 0.6627450980392157, 0.6980392156862745)
}
InfinityTowerRewardList._mapNodeConfig = {
obj_rewardPoint_1 = {},
obj_rewardPoint_2 = {},
obj_RewardDone_1 = {},
obj_RewardDone_2 = {},
obj_RewardDone_3 = {},
tex_RewardLayerCount = {sComponentName = "TMP_Text"},
tex_RewardLayer = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Layer"
},
rewardItemRoot = {sComponentName = "Transform"},
objRewardItem = {}
}
InfinityTowerRewardList._mapEventConfig = {}
function InfinityTowerRewardList:Awake()
self.rewardItem = {}
end
function InfinityTowerRewardList:UnbindAllGrids()
for go, ctrl in ipairs(self.rewardItem) do
self:UnbindCtrlByNode(ctrl)
end
self.rewardItem = {}
end
function InfinityTowerRewardList:OnDestroy()
end
function InfinityTowerRewardList:InitRewardList(towerId, floor, passLv, rewardLv)
local isGet = floor <= rewardLv
local isCan = floor <= passLv and rewardLv < floor
local isDont = passLv < floor
local cg = self.gameObject:GetComponent("CanvasGroup")
if isGet then
NovaAPI.SetCanvasGroupAlpha(cg, 0.6)
else
NovaAPI.SetCanvasGroupAlpha(cg, 1)
end
self._mapNode.obj_RewardDone_1:SetActive(isGet)
self._mapNode.obj_RewardDone_2:SetActive(isCan)
self._mapNode.obj_RewardDone_3:SetActive(isDont)
if isGet then
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayerCount, texNameColor[1])
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayer, texNameColor[1])
elseif isCan then
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayerCount, texNameColor[2])
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayer, texNameColor[2])
else
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayerCount, texNameColor[3])
NovaAPI.SetTMPColor(self._mapNode.tex_RewardLayer, texNameColor[3])
end
local tmpLv = "0"
if floor < 10 then
tmpLv = "00" .. floor
elseif 10 <= floor and floor < 100 then
tmpLv = "0" .. floor
else
tmpLv = tostring(floor)
end
NovaAPI.SetTMPText(self._mapNode.tex_RewardLayerCount, tmpLv)
local lvData = PlayerData.InfinityTower:GetTowerLayerData(towerId, floor)
local tbItem = {}
local _base = decodeJson(lvData.BaseAwardPreview)
for k, v in ipairs(_base) do
table.insert(tbItem, {
id = v[1],
count = UTILS.ParseRewardItemCount(v)
})
end
self:SetRewardItem(tbItem, isGet)
self._mapNode.obj_rewardPoint_1:SetActive(lvData.LevelFunc ~= GameEnum.fixedRoguelikeFunc0.Boss)
self._mapNode.obj_rewardPoint_2:SetActive(lvData.LevelFunc == GameEnum.fixedRoguelikeFunc0.Boss)
end
function InfinityTowerRewardList:SetRewardItem(tabItem, isGet)
local childCount = self._mapNode.rewardItemRoot.childCount
for i = 1, childCount do
self._mapNode.rewardItemRoot:GetChild(i - 1).gameObject:SetActive(false)
end
local index = 1
for i, v in pairs(tabItem) do
local objItem
if index > self._mapNode.rewardItemRoot.childCount then
objItem = instantiate(self._mapNode.objRewardItem, self._mapNode.rewardItemRoot)
else
objItem = self._mapNode.rewardItemRoot:GetChild(index - 1).gameObject
end
local btn = objItem:GetComponent("UIButton")
btn.onClick:RemoveAllListeners()
local clickCb = function()
self:ShowItemTips(v.id, btn.gameObject)
end
btn.onClick:AddListener(clickCb)
objItem:SetActive(true)
self.rewardItem[objItem] = self:BindCtrlByNode(objItem, "Game.UI.TemplateEx.TemplateItemCtrl")
self.rewardItem[objItem]:SetItem(v.id, nil, v.count, nil, isGet, nil, nil, true)
index = index + 1
end
end
function InfinityTowerRewardList:ShowItemTips(nTid, rtBtn)
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
end
function InfinityTowerRewardList:OnDisable()
self:UnbindAllGrids()
end
return InfinityTowerRewardList