Files
StellaSora_DataLua/lua/game/ui/activity/mathparkour/mathparkourleveldetailctrl.lua
T
SL1900 08b515afd9 Major Update - 2.0.0.143
EN: 2.0.0.143
CN: 2.0.0.142
JP: 2.0.0.145
KR: 2.0.0.150
2026-10-20 13:00:00 +09:00

163 lines
5.6 KiB
Lua

local MathParkourLevelDetailCtrl = class("MathParkourLevelDetailCtrl", BaseCtrl)
local AssetPath = "UI_Activity/_400018/SpriteAtlas/"
MathParkourLevelDetailCtrl._mapNodeConfig = {
txt_LevelName = {sComponentName = "TMP_Text"},
txt_detailDesc = {sComponentName = "TMP_Text"},
txt_ScoreTitle = {
sComponentName = "TMP_Text",
sLanguageId = "MathParkour_ScoreTitle"
},
txt_MaxScore = {sComponentName = "TMP_Text"},
txt_Title1 = {
sComponentName = "TMP_Text",
sLanguageId = "MathParkour_Title1"
},
txt_Title2 = {
sComponentName = "TMP_Text",
sLanguageId = "MathParkour_Title2"
},
listReward = {
sComponentName = "LoopScrollView"
},
rtReward1 = {},
btn_item = {nCount = 4},
btn_firstPassItem = {sComponentName = "UIButton"},
firstPassItem = {
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
},
btn_threePassItem = {sComponentName = "UIButton"},
threePassItem = {
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
},
btn_Go = {
sComponentName = "UIButton",
callback = "OnBtnClick_Go"
},
txtBtnGo = {
sComponentName = "TMP_Text",
sLanguageId = "MathParkour_Go"
}
}
MathParkourLevelDetailCtrl._mapEventConfig = {}
MathParkourLevelDetailCtrl._mapRedDotConfig = {}
function MathParkourLevelDetailCtrl:Awake()
self.animator = self.gameObject:GetComponent("Animator")
end
function MathParkourLevelDetailCtrl:OnEnable()
end
function MathParkourLevelDetailCtrl:OnDisable()
end
function MathParkourLevelDetailCtrl:OnDestroy()
self:Clear()
end
function MathParkourLevelDetailCtrl:Clear()
if self.tbItemCtrl ~= nil then
for _, ctrl in pairs(self.tbItemCtrl) do
self:UnbindCtrlByNode(ctrl)
end
end
self.tbItemCtrl = {}
end
function MathParkourLevelDetailCtrl:ShowPanel(nActId, levelData)
self.nActId = nActId
self.levelData = levelData
local config = ConfigTable.GetData("MathParkourLevel", levelData.nId)
if config == nil then
return
end
NovaAPI.SetTMPText(self._mapNode.txt_LevelName, config.Title)
NovaAPI.SetTMPText(self._mapNode.txt_detailDesc, config.Desc)
NovaAPI.SetTMPText(self._mapNode.txt_MaxScore, levelData.nScore)
local buffItem = config.DropItemList
self._mapNode.listReward.gameObject:SetActive(4 < #buffItem)
self._mapNode.rtReward1.gameObject:SetActive(#buffItem <= 4)
if 4 < #buffItem then
self._mapNode.listReward:Init(#buffItem, self, self.OnGridRefresh, self.OnGridBtnClick, false)
else
for i = 1, 4 do
if i <= #buffItem then
local btn_item = self._mapNode.btn_item[i]
btn_item.gameObject:SetActive(true)
local itemId = buffItem[i]
local buffCfg = ConfigTable.GetData("MathParkourBuffItem", itemId)
if buffCfg ~= nil then
local imgIcon = btn_item.transform:Find("AnimRoot/item/AnimRoot/imgIcon"):GetComponent("Image")
if buffCfg.Icon ~= "" then
self:SetPngSprite(imgIcon, AssetPath .. buffCfg.Icon)
end
local btn = btn_item.gameObject:GetComponent("UIButton")
btn.onClick:RemoveAllListeners()
btn.onClick:AddListener(function()
local msgData = {
Title = buffCfg.Name,
Desc = {
buffCfg.Desc or ""
}
}
EventManager.Hit(EventId.OpenPanel, PanelId.DescTips, btn.transform, msgData)
end)
end
else
self._mapNode.btn_item[i].gameObject:SetActive(false)
end
end
end
self._mapNode.btn_firstPassItem.gameObject:SetActive(config.Reward1Id)
if config.Reward1Id > 0 then
self._mapNode.firstPassItem:SetItem(config.Reward1Id, nil, config.Reward1Count, false, 0 < levelData.nStar, true)
self._mapNode.btn_firstPassItem.onClick:RemoveAllListeners()
self._mapNode.btn_firstPassItem.onClick:AddListener(function()
UTILS.ClickItemGridWithTips(config.Reward1Id, self._mapNode.btn_firstPassItem.transform, true, true, false)
end)
end
self._mapNode.btn_threePassItem.gameObject:SetActive(config.Reward3Id)
if 0 < config.Reward3Id then
self._mapNode.threePassItem:SetItem(config.Reward3Id, nil, config.Reward3Count, false, levelData.nStar >= 3, false, true)
self._mapNode.btn_threePassItem.onClick:RemoveAllListeners()
self._mapNode.btn_threePassItem.onClick:AddListener(function()
UTILS.ClickItemGridWithTips(config.Reward3Id, self._mapNode.btn_threePassItem.transform, true, true, false)
end)
end
self.gameObject:SetActive(true)
if self.animator ~= nil then
self.animator:Play("LevelDetailsPanel_in")
end
end
function MathParkourLevelDetailCtrl:ClosePanel()
self.gameObject:SetActive(false)
self:Clear()
end
function MathParkourLevelDetailCtrl:OnGridRefresh(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
local item = goGrid.transform:Find("btn_itemTemp/AnimRoot/item")
if not self.tbItemCtrl[nInstanceId] then
self.tbItemCtrl[nInstanceId] = self:BindCtrlByNode(item, "Game.UI.TemplateEx.TemplateItemCtrl")
end
local config = ConfigTable.GetData("MathParkourLevel", self.levelData.nId)
if config == nil then
return
end
local itemId = config.DropItemList[nIndex]
self.tbItemCtrl[nInstanceId]:SetItem(itemId)
end
function MathParkourLevelDetailCtrl:OnGridBtnClick(go, nIndex)
local nIndex = nIndex + 1
local config = ConfigTable.GetData("MathParkourLevel", self.levelData.nId)
if config == nil then
return
end
local itemId = config.DropItemList[nIndex]
UTILS.ClickItemGridWithTips(itemId, go.transform, true, true, false)
end
function MathParkourLevelDetailCtrl:OnBtnClick_Go()
local param = {}
table.insert(param, tostring(self.nActId))
table.insert(param, tostring(self.levelData.nId))
table.insert(param, tostring(0))
CS.MiniGameHelper.SetMiniGameData(param)
NovaAPI.EnterModule("MathParkourModuleScene", true, 56)
EventManager.Hit(EventId.OpenPanel, PanelId.MathParkourPanel, self.nActId, self.levelData.nId)
end
return MathParkourLevelDetailCtrl