Files
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

133 lines
4.4 KiB
Lua

local EnergyBuyItemCtrl = class("EnergyBuyItemCtrl", BaseCtrl)
EnergyBuyItemCtrl._mapNodeConfig = {
btnUse = {
sComponentName = "UIButton",
callback = "OnBtnClick_Use"
},
txtBtnUse = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Buy_Item_Use"
},
btnUseGray = {
sComponentName = "UIButton",
callback = "OnBtnClick_Use"
},
txtBtnUseGray = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Buy_Item_Use"
},
txtLeftTime = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Item_Left_Time"
},
txtLeftTimeValue = {sComponentName = "TMP_Text"},
imgLeftTimeBg = {},
imgLeftTime = {nCount = 3, sComponentName = "GameObject"},
txtPermanent = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Item_Permanent_Time"
},
txtHaveCount = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Item_Count_Text"
},
txtHaveCountValue = {sComponentName = "TMP_Text"},
ctrlItem = {
sNodeName = "goEnergyItem",
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
},
btnItem = {
sComponentName = "UIButton",
callback = "OnBtnClick_Item"
},
txtItemName = {sComponentName = "TMP_Text"},
txtEnergyValue = {sComponentName = "TMP_Text"}
}
EnergyBuyItemCtrl._mapEventConfig = {}
function EnergyBuyItemCtrl:SetItem(mapItemData)
self.mapItemData = mapItemData
NovaAPI.SetTMPText(self._mapNode.txtHaveCountValue, mapItemData.nCount)
NovaAPI.SetTMPText(self._mapNode.txtEnergyValue, "+" .. mapItemData.nEnergyValue)
local nExpire = mapItemData.nExpire
self._mapNode.imgLeftTimeBg.gameObject:SetActive(0 < nExpire)
self._mapNode.txtPermanent.gameObject:SetActive(nExpire == 0 and mapItemData.nCount > 0)
self._mapNode.btnUseGray.gameObject:SetActive(mapItemData.nCount == 0)
self._mapNode.btnUse.gameObject:SetActive(mapItemData.nCount > 0)
if 0 < nExpire then
local sTimeStr = ""
local curTime = CS.ClientManager.Instance.serverTimeStamp
local remainTime = nExpire - curTime
if 86400 <= remainTime then
local day = math.floor(remainTime / 86400)
local hour = math.floor((remainTime - day * 86400) / 3600)
if hour == 0 then
day = day - 1
hour = 24
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Energy_LeftTime_Day"), day, hour)
elseif 3600 <= remainTime then
local hour = math.floor(remainTime / 3600)
local min = math.floor((remainTime - hour * 3600) / 60)
if min == 0 then
hour = hour - 1
min = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Energy_LeftTime_Hour"), hour, min)
else
sTimeStr = ConfigTable.GetUIText("Energy_LeftTime_LessThenHour")
end
NovaAPI.SetTMPText(self._mapNode.txtLeftTimeValue, sTimeStr)
self._mapNode.imgLeftTime[1]:SetActive(86400 <= remainTime)
self._mapNode.imgLeftTime[2]:SetActive(remainTime < 86400 and 3600 <= remainTime)
self._mapNode.imgLeftTime[3]:SetActive(remainTime < 3600)
end
local itemId = mapItemData.nTid
local mapItemCfg = ConfigTable.GetData_Item(itemId)
self._mapNode.ctrlItem:SetItem(itemId, nil, nil, nil, nil, nil, nil, true, nil, true)
NovaAPI.SetTMPText(self._mapNode.txtItemName, mapItemCfg.Title)
end
function EnergyBuyItemCtrl:OnBtnClick_Use()
if self.mapItemData.nCount == 0 then
EventManager.Hit(EventId.OpenMessageBox, {
nType = AllEnum.MessageBox.Tips,
sContent = ConfigTable.GetUIText("Energy_Use_Tip_5"),
bBlur = false
})
return
end
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
local nMaxEnergy = ConfigTable.GetConfigNumber("EnergyObtainLimit")
if nCurEnergy >= nMaxEnergy then
local sTip = ConfigTable.GetUIText("Energy_Use_Tip_2")
EventManager.Hit(EventId.OpenMessageBox, {
nType = AllEnum.MessageBox.Tips,
sContent = sTip,
bBlur = false
})
return
end
local nExpire = self.mapItemData.nExpire
local curTime = CS.ClientManager.Instance.serverTimeStamp
local remainTime = nExpire - curTime
if remainTime < 0 and 0 < nExpire then
EventManager.Hit(EventId.OpenMessageBox, {
nType = AllEnum.MessageBox.Tips,
sContent = ConfigTable.GetUIText("Energy_Use_Tip_4"),
bBlur = false
})
EventManager.Hit(EventId.ClosePanel, PanelId.EnergyBuy)
return
end
self._panel.mapItemData = self.mapItemData
EventManager.Hit("ChangeEnergyBuyPanel", AllEnum.EnergyPanelType.ItemUse)
end
function EnergyBuyItemCtrl:OnBtnClick_Item(btn)
local mapData = {
nTid = self.mapItemData.nTid,
bShowDepot = true,
bShowJumpto = false
}
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
end
return EnergyBuyItemCtrl