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

148 lines
4.5 KiB
Lua

local EnergyBatteryUseCtrl = class("EnergyBatteryUseCtrl", BaseCtrl)
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
EnergyBatteryUseCtrl._mapNodeConfig = {
goWindow = {},
animWindow = {sNodeName = "goWindow", sComponentName = "Animator"},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Battery_Use_Title"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txtItemName = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Battery_Title"
},
txtItemDesc = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Battery_Desc"
},
txtHaveCount = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Item_Count_Text"
},
txtHaveCountValue = {sComponentName = "TMP_Text"},
txtBatteryUseTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Battery_Use_Amount"
},
txtBatteryUseValue = {sComponentName = "TMP_Text"},
goQuantitySlider = {
sNodeName = "tc_quantity_slider",
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySliderCtrl"
},
txtHave = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Buy_Confirm_Text"
},
imgArrow = {},
txtBeforeValue = {sComponentName = "TMP_Text"},
txtAfterValue = {sComponentName = "TMP_Text"},
goMaxValue = {},
txtMaxValue = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Count_Max"
},
rtCountBg = {
sNodeName = "imgCountBg",
sComponentName = "RectTransform"
},
btnConfirm2 = {
sComponentName = "UIButton",
callback = "OnBtnClick_Confirm"
},
txtConfirmBtn = {
sComponentName = "TMP_Text",
sLanguageId = "Energy_Item_Use_Btn_Text"
}
}
EnergyBatteryUseCtrl._mapEventConfig = {
[EventId.UpdateEnergyBattery] = "OnEvent_UpdateEnergyBattery"
}
function EnergyBatteryUseCtrl:Awake()
self.bEnable = false
end
function EnergyBatteryUseCtrl:OnEnable()
self.bEnable = true
end
function EnergyBatteryUseCtrl:ShowPanel()
self.bBlur = self._panel.bBlur
self.nUseCount = 1
self.nMaxCount = 0
self.nMinCount = 0
self._mapNode.animWindow:Play("t_window_04_t_in")
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
self:RefreshUseLimit()
local callback = function(nCount)
self.nUseCount = nCount
self:RefreshAddCount()
end
self._mapNode.goQuantitySlider:Init(callback, self.nUseCount, self.nMaxCount)
self:RefreshAddCount()
end
function EnergyBatteryUseCtrl:OnDisable()
self.bEnable = false
end
function EnergyBatteryUseCtrl:OnDestroy()
end
function EnergyBatteryUseCtrl:RefreshUseLimit()
local nCurEnergyBattery = PlayerData.Base:GetCurEnergyBattery().nEnergyBattery
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
local nMaxEnergy = ConfigTable.GetConfigNumber("EnergyObtainLimit")
local nMaxCount = nMaxEnergy - nCurEnergy
NovaAPI.SetTMPText(self._mapNode.txtHaveCountValue, nCurEnergyBattery)
self.nMaxCount = nCurEnergyBattery < nMaxCount and nCurEnergyBattery or nMaxCount
end
function EnergyBatteryUseCtrl:RefreshAddCount()
NovaAPI.SetTMPText(self._mapNode.txtBatteryUseValue, self.nUseCount)
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
NovaAPI.SetTMPText(self._mapNode.txtBeforeValue, nCurEnergy)
if self.nUseCount > self.nMaxCount then
self.nUseCount = self.nMaxCount
elseif self.nUseCount < 1 then
self.nUseCount = 1
end
local nAfterValue = nCurEnergy + self.nUseCount
NovaAPI.SetTMPText(self._mapNode.txtAfterValue, nAfterValue)
self._mapNode.imgArrow.gameObject:SetActive(self.nUseCount > 0)
self._mapNode.txtAfterValue.gameObject:SetActive(self.nUseCount > 0)
self._mapNode.goMaxValue.gameObject:SetActive(nAfterValue >= self._panel.nMaxEnergy)
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.rtCountBg)
end
function EnergyBatteryUseCtrl:Close()
self._mapNode.animWindow:Play("t_window_04_t_out")
EventManager.Hit("ConsumableUsed")
end
function EnergyBatteryUseCtrl:OnBtnClick_Close()
EventManager.Hit("CloseEnergyBuyPanel")
end
function EnergyBatteryUseCtrl:OnBtnClick_Confirm()
if self.nUseCount <= 0 then
return
end
if self.nUseCount > self.nMaxCount then
local sTip = ConfigTable.GetUIText("Energy_Use_Tip_2")
EventManager.Hit(EventId.OpenMessageBox, {
nType = AllEnum.MessageBox.Tips,
sContent = sTip,
bBlur = false
})
return
end
local msgCallback = function()
EventManager.Hit(EventId.OpenPanel, PanelId.ReceivePropsTips, {
{
id = AllEnum.CoinItemId.Energy,
count = self.nUseCount
}
})
EventManager.Hit("CloseEnergyBuyPanel")
end
PlayerData.Base:SendEnergyBatteryExtract(self.nUseCount, msgCallback)
end
function EnergyBatteryUseCtrl:OnEvent_UpdateEnergyBattery()
end
return EnergyBatteryUseCtrl