Files
StellaSora_DataLua/lua/game/ui/mall/mallmonthlycardctrl.lua
T
SL1900 46f967a584 Update - 1.6.0.84
EN: 1.6.0.84
CN: 1.6.0.87
JP: 1.6.0.88
KR: 1.6.0.91
2026-02-04 13:00:00 +09:00

107 lines
4.4 KiB
Lua

local MallMonthlyCardCtrl = class("MallMonthlyCardCtrl", BaseCtrl)
MallMonthlyCardCtrl._mapNodeConfig = {
cgBg = {
sNodeName = "imgMonthlyBg",
sComponentName = "CanvasGroup"
},
Card = {nCount = 2}
}
MallMonthlyCardCtrl._mapEventConfig = {
MallOrderClear = "OnEvent_OrderClear"
}
function MallMonthlyCardCtrl:Refresh()
if self._panel.nCurTog ~= AllEnum.MallToggle.MonthlyCard then
return
end
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgBg, 0)
local callback = function(mapData)
self.tbMonthlyCard = mapData
self:RefreshList()
NovaAPI.SetCanvasGroupAlpha(self._mapNode.cgBg, 1)
end
PlayerData.Mall:SendMallMonthlyCardListReq(callback)
end
function MallMonthlyCardCtrl:RefreshList()
for i = 1, 2 do
self:RefreshCard(self.tbMonthlyCard[i], i)
end
end
function MallMonthlyCardCtrl:RefreshCard(cardData, cardIndex)
if cardData == nil then
return
end
local card = self._mapNode.Card[cardIndex].transform
local mapCfg = ConfigTable.GetData("MallMonthlyCard", cardData.Id)
if mapCfg == nil then
return
end
local txtName = card:Find("txtName"):GetComponent("TMP_Text")
local txtPrice = card:Find("txtPrice"):GetComponent("TMP_Text")
local txtRemainDay = card:Find("txtRemainDay"):GetComponent("TMP_Text")
local txtTip1 = card:Find("txtTip1"):GetComponent("TMP_Text")
local txtTip2 = card:Find("txtTip2"):GetComponent("TMP_Text")
local txtTip3 = card:Find("txtTip3"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txtName, mapCfg.Name)
NovaAPI.SetTMPText(txtPrice, tostring(mapCfg.ShowPrice))
local sState = cardData.Received and ConfigTable.GetUIText("Mall_MonthlyCard_Received") or ConfigTable.GetUIText("Mall_MonthlyCard_Unreceived")
NovaAPI.SetTMPText(txtRemainDay, orderedFormat(ConfigTable.GetUIText("Mall_MonthlyCard_RemainDay"), cardData.Remaining, sState))
NovaAPI.SetTMPText(txtTip1, ConfigTable.GetUIText("Mall_MonthlyCard_BuyImmediately"))
NovaAPI.SetTMPText(txtTip2, ConfigTable.GetUIText("Mall_MonthlyCard_Daily"))
NovaAPI.SetTMPText(txtTip3, ConfigTable.GetUIText("Mall_MonthlyCard_LimitTime" .. mapCfg.MonthlyCardId))
local img_baseItem = card:Find("imgItem1/imgItemIcon"):GetComponent("Image")
local txt_baseItemCount = card:Find("imgItem1/txtItemCount"):GetComponent("TMP_Text")
self:SetPngSprite(img_baseItem, ConfigTable.GetData_Item(mapCfg.BaseItemId).Icon2)
NovaAPI.SetTMPText(txt_baseItemCount, mapCfg.BaseItemQty)
local mapMonthlyCard = ConfigTable.GetData("MonthlyCard", mapCfg.MonthlyCardId * 100 + 1)
local imgItemIcon1 = card:Find("imgItem2/imgItemIcon"):GetComponent("Image")
local txtItemCount1 = card:Find("imgItem2/txtItemCount"):GetComponent("TMP_Text")
if mapMonthlyCard.RewardId1 ~= 0 then
self:SetPngSprite(imgItemIcon1, ConfigTable.GetData_Item(mapMonthlyCard.RewardId1).Icon2)
NovaAPI.SetTMPText(txtItemCount1, mapMonthlyCard.RewardNum1)
end
local imgItemIcon2 = card:Find("imgItem3/imgItemIcon"):GetComponent("Image")
local txtItemCount2 = card:Find("imgItem3/txtItemCount"):GetComponent("TMP_Text")
if mapMonthlyCard.RewardId2 ~= 0 then
self:SetPngSprite(imgItemIcon2, ConfigTable.GetData_Item(mapMonthlyCard.RewardId2).Icon2)
NovaAPI.SetTMPText(txtItemCount2, mapMonthlyCard.RewardNum2)
end
local btnBuy = card:Find("btnBuy"):GetComponent("UIButton")
local txtBuy = card:Find("btnBuy/AnimRoot/txtBtnBuy"):GetComponent("TMP_Text")
btnBuy.onClick:RemoveAllListeners()
btnBuy.onClick:AddListener(function()
self:OnBtnClick_Buy(cardIndex)
end)
NovaAPI.SetTMPText(txtBuy, ConfigTable.GetUIText("Mall_Btn_Buy"))
local btnRule = card:Find("btnRule"):GetComponent("UIButton")
btnRule.onClick:RemoveAllListeners()
btnRule.onClick:AddListener(function()
local msg = {
nType = AllEnum.MessageBox.Desc,
sContent = mapCfg.Desc
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end)
end
function MallMonthlyCardCtrl:Awake()
end
function MallMonthlyCardCtrl:OnEnable()
end
function MallMonthlyCardCtrl:OnDisable()
end
function MallMonthlyCardCtrl:OnDestroy()
end
function MallMonthlyCardCtrl:OnBtnClick_Buy(cardIndex)
local cardData = self.tbMonthlyCard[cardIndex]
local mapCfg = ConfigTable.GetData("MallMonthlyCard", cardData.Id)
if cardData.Remaining > mapCfg.MaxDays then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Mall_MaxDay"))
return
end
PlayerData.Mall:BuyMonthlyCard(cardData.Id, mapCfg.StatisticalGroup)
end
function MallMonthlyCardCtrl:OnEvent_OrderClear()
PopUpManager.OpenPopUpPanelByType(GameEnum.PopUpSeqType.MonthlyCard)
self:Refresh()
end
return MallMonthlyCardCtrl