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
This commit is contained in:
@@ -0,0 +1,240 @@
|
||||
local EnergyItemUseCtrl = class("EnergyItemUseCtrl", BaseCtrl)
|
||||
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
|
||||
EnergyItemUseCtrl._mapNodeConfig = {
|
||||
goWindow = {},
|
||||
animWindow = {sNodeName = "goWindow", sComponentName = "Animator"},
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Energy_Item_Use_Title"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Item"
|
||||
},
|
||||
ctrlItem = {
|
||||
sNodeName = "goItem",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
txtItemName = {sComponentName = "TMP_Text"},
|
||||
txtItemDesc = {sComponentName = "TMP_Text"},
|
||||
txtHaveCount = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Energy_Item_Count_Text"
|
||||
},
|
||||
txtHaveCountValue = {sComponentName = "TMP_Text"},
|
||||
txtAddValue = {sComponentName = "TMP_Text"},
|
||||
txtLeftTime = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Energy_Item_Left_Time"
|
||||
},
|
||||
txtLeftTimeValue = {sComponentName = "TMP_Text"},
|
||||
imgLeftTime = {sComponentName = "GameObject", nCount = 3},
|
||||
txtPermanent = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Energy_Item_Permanent_Time"
|
||||
},
|
||||
txtStock = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Energy_Item_Use_Count"
|
||||
},
|
||||
goQuantitySelector = {
|
||||
sNodeName = "tc_quantity_selector",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySelectorCtrl"
|
||||
},
|
||||
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"
|
||||
}
|
||||
}
|
||||
EnergyItemUseCtrl._mapEventConfig = {}
|
||||
function EnergyItemUseCtrl:Awake()
|
||||
end
|
||||
function EnergyItemUseCtrl:OnEnable()
|
||||
end
|
||||
function EnergyItemUseCtrl:ShowPanel()
|
||||
self.mapItemData = self._panel.mapItemData
|
||||
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:RefreshItem()
|
||||
local callback = function(nCount)
|
||||
self.nUseCount = nCount
|
||||
self:RefreshAddCount()
|
||||
end
|
||||
self._mapNode.goQuantitySelector:Init(callback, self.nUseCount, self.nUseCountLimit)
|
||||
self:RefreshAddCount()
|
||||
end
|
||||
function EnergyItemUseCtrl:OnDisable()
|
||||
end
|
||||
function EnergyItemUseCtrl:OnDestroy()
|
||||
end
|
||||
function EnergyItemUseCtrl:RefreshItem()
|
||||
local itemId = self.mapItemData.nTid
|
||||
self._mapNode.ctrlItem:SetItem(itemId, nil, nil, nil, nil, nil, nil, true, nil, true)
|
||||
local mapItemCfg = ConfigTable.GetData_Item(itemId)
|
||||
if mapItemCfg then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtItemName, mapItemCfg.Title)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtItemDesc, mapItemCfg.Desc)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtHaveCountValue, self.mapItemData.nCount)
|
||||
self.nMaxCount = self.mapItemData.nCount
|
||||
NovaAPI.SetTMPText(self._mapNode.txtAddValue, string.format("+%s", self.mapItemData.nEnergyValue))
|
||||
local nExpire = self.mapItemData.nExpire
|
||||
self._mapNode.txtLeftTimeValue.gameObject:SetActive(0 < nExpire)
|
||||
self._mapNode.txtPermanent.gameObject:SetActive(nExpire == 0)
|
||||
if nExpire ~= 0 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
|
||||
self.nUseCountLimit = 0
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
for i = 1, self.nMaxCount do
|
||||
nCurEnergy = nCurEnergy + self.mapItemData.nEnergyValue
|
||||
self.nUseCountLimit = i
|
||||
if nCurEnergy >= self._panel.nMaxEnergy then
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
function EnergyItemUseCtrl:RefreshAddCount()
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBeforeValue, nCurEnergy)
|
||||
local nAfterValue = nCurEnergy + self.mapItemData.nEnergyValue * 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 EnergyItemUseCtrl:Close()
|
||||
self._mapNode.animWindow:Play("t_window_04_t_out")
|
||||
EventManager.Hit("ConsumableUsed")
|
||||
end
|
||||
function EnergyItemUseCtrl:OnBtnClick_Close()
|
||||
EventManager.Hit("CloseEnergyBuyPanel")
|
||||
end
|
||||
function EnergyItemUseCtrl:OnBtnClick_Confirm()
|
||||
if self.nUseCount <= 0 then
|
||||
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")
|
||||
})
|
||||
EventManager.Hit("CloseEnergyBuyPanel")
|
||||
return
|
||||
end
|
||||
local itemList = {}
|
||||
local nUseCount = 0
|
||||
for id, count in pairs(self.mapItemData.mapId) do
|
||||
if nUseCount < self.nUseCount then
|
||||
local tbItem = {}
|
||||
tbItem.Tid = self.mapItemData.nTid
|
||||
tbItem.Id = id
|
||||
if nUseCount + count > self.nUseCount then
|
||||
tbItem.Qty = self.nUseCount - nUseCount
|
||||
else
|
||||
tbItem.Qty = count
|
||||
end
|
||||
table.insert(itemList, tbItem)
|
||||
else
|
||||
break
|
||||
end
|
||||
nUseCount = nUseCount + count
|
||||
end
|
||||
local nMaxCount = 0
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
for i = 1, self.nUseCount do
|
||||
nMaxCount = i
|
||||
nCurEnergy = nCurEnergy + self.mapItemData.nEnergyValue
|
||||
if nCurEnergy > self._panel.nMaxEnergy then
|
||||
break
|
||||
end
|
||||
end
|
||||
if nMaxCount < self.nUseCount then
|
||||
local sTip = ConfigTable.GetUIText("Energy_Use_Tip_2")
|
||||
EventManager.Hit(EventId.OpenMessageBox, {
|
||||
nType = AllEnum.MessageBox.Tips,
|
||||
sContent = sTip,
|
||||
bBlur = false
|
||||
})
|
||||
return
|
||||
end
|
||||
if nil ~= next(itemList) then
|
||||
local msgCallback = function()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ReceivePropsTips, {
|
||||
{
|
||||
id = AllEnum.CoinItemId.Energy,
|
||||
count = self.mapItemData.nEnergyValue * self.nUseCount
|
||||
}
|
||||
})
|
||||
EventManager.Hit("CloseEnergyBuyPanel")
|
||||
EventManager.Hit("RefreshEnergyItemList")
|
||||
end
|
||||
PlayerData.Item:SendUseItemMsg(itemList, msgCallback)
|
||||
end
|
||||
end
|
||||
function EnergyItemUseCtrl:OnBtnClick_Item(btn)
|
||||
local mapData = {
|
||||
nTid = self.mapItemData.nTid,
|
||||
bShowDepot = true,
|
||||
bShowJumpto = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
|
||||
end
|
||||
return EnergyItemUseCtrl
|
||||
Reference in New Issue
Block a user