5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
223 lines
6.8 KiB
Lua
223 lines
6.8 KiB
Lua
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||
local ExChangeCtrl = class("ExChangeCtrl", BaseCtrl)
|
||
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
|
||
local MAX_EXCHANGE_COUNT = 999999
|
||
ExChangeCtrl._mapNodeConfig = {
|
||
txtWindowTitle = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Exchange_Title"
|
||
},
|
||
btnsnapshot = {
|
||
sNodeName = "snapshot",
|
||
sComponentName = "Button",
|
||
callback = "OnBtnClick_Close"
|
||
},
|
||
aniDetail = {
|
||
sNodeName = "---Detail---",
|
||
sComponentName = "Animator"
|
||
},
|
||
imgItem1 = {sNodeName = "imgItem1", sComponentName = "Image"},
|
||
imgItem2 = {sNodeName = "imgItem2", sComponentName = "Image"},
|
||
btnClose = {
|
||
sNodeName = "btnClose",
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Close"
|
||
},
|
||
btnBuy = {
|
||
sNodeName = "btnBuy",
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Buy"
|
||
},
|
||
txtBtnExchange = {
|
||
nCount = 2,
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Exchange_Btn"
|
||
},
|
||
txtConsunNum = {
|
||
sNodeName = "txtConsumNum",
|
||
sComponentName = "TMP_Text"
|
||
},
|
||
rectConsunNum = {
|
||
sNodeName = "txtConsumNum",
|
||
sComponentName = "RectTransform"
|
||
},
|
||
imgimgConsumItem = {
|
||
sNodeName = "imgConsumItem",
|
||
sComponentName = "Image"
|
||
},
|
||
got_fullscreen_blur_blue = {
|
||
sNodeName = "t_fullscreen_blur_blue",
|
||
sComponentName = "GameObject"
|
||
},
|
||
ctlTopBarPanel = {
|
||
sNodeName = "TopBarPanel",
|
||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||
},
|
||
gobtnBuyGray = {sNodeName = "btnBuyGray", sComponentName = "GameObject"},
|
||
btnBuyGray = {
|
||
sNodeName = "btnBuyGray",
|
||
sComponentName = "UIButton",
|
||
callback = "OnBtnClick_Buy"
|
||
},
|
||
txtItemName1 = {
|
||
sNodeName = "txtItemName1",
|
||
sComponentName = "TMP_Text"
|
||
},
|
||
txtItemName2 = {
|
||
sNodeName = "txtItemName2",
|
||
sComponentName = "TMP_Text"
|
||
},
|
||
rectTransgoConsumCount = {
|
||
sNodeName = "goConsumCount",
|
||
sComponentName = "RectTransform"
|
||
},
|
||
imgMask = {sNodeName = "Mask", sComponentName = "Image"},
|
||
txtStock = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Exchange_Count"
|
||
},
|
||
txtConsum = {
|
||
sComponentName = "TMP_Text",
|
||
sLanguageId = "Exchange_Consume"
|
||
},
|
||
goQuantitySelector = {
|
||
sNodeName = "tc_quantity_selector",
|
||
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySelectorCtrl"
|
||
}
|
||
}
|
||
ExChangeCtrl._mapEventConfig = {}
|
||
function ExChangeCtrl:Awake()
|
||
local tbParam = self:GetPanelParam()
|
||
if type(tbParam) == "table" and 0 < #tbParam then
|
||
local data = tbParam[1]
|
||
if data.id1 ~= nil then
|
||
self.exchangeId1 = data.id1
|
||
else
|
||
self.exchangeId1 = AllEnum.CoinItemId.STONE
|
||
end
|
||
if data.id2 ~= nil then
|
||
self.exchangeId2 = data.id2
|
||
else
|
||
self.exchangeId2 = AllEnum.CoinItemId.Jade
|
||
end
|
||
if data.exchangeCount ~= nil then
|
||
self.curExChangeCount = data.exchangeCount
|
||
else
|
||
self.curExChangeCount = 1
|
||
end
|
||
if data.rate ~= nil then
|
||
self.exchangeRate = data.rate
|
||
else
|
||
self.exchangeRate = 1
|
||
end
|
||
if data.alpha ~= nil then
|
||
self.maskAlpha = data.alpha
|
||
else
|
||
self.maskAlpha = 0.35
|
||
end
|
||
else
|
||
self.exchangeId1 = AllEnum.CoinItemId.STONE
|
||
self.exchangeId2 = AllEnum.CoinItemId.Jade
|
||
self.exchangeRate = 1
|
||
self.maskAlpha = 0.35
|
||
self.curExChangeCount = 1
|
||
end
|
||
self.bExChanging = false
|
||
end
|
||
function ExChangeCtrl:OnEnable()
|
||
self:RefreshPanel()
|
||
self._mapNode.aniDetail:Play("t_window_04_t_in")
|
||
self._mapNode.got_fullscreen_blur_blue:SetActive(true)
|
||
end
|
||
function ExChangeCtrl:RefreshPanel()
|
||
NovaAPI.SetTMPText(self._mapNode.txtConsunNum, self.curExChangeCount)
|
||
NovaAPI.SetTMPText(self._mapNode.txtItemName1, ConfigTable.GetData_Item(self.exchangeId1).Title .. " ×1")
|
||
NovaAPI.SetTMPText(self._mapNode.txtItemName2, ConfigTable.GetData_Item(self.exchangeId2).Title .. " ×1")
|
||
self:SetPngSprite(self._mapNode.imgItem1, ConfigTable.GetData_Item(self.exchangeId1).Icon)
|
||
self:SetPngSprite(self._mapNode.imgItem2, ConfigTable.GetData_Item(self.exchangeId2).Icon)
|
||
self:SetPngSprite(self._mapNode.imgimgConsumItem, ConfigTable.GetData_Item(self.exchangeId1).Icon2)
|
||
local owenCount = self:GetOwenItemCount()
|
||
local maxCount = owenCount
|
||
if owenCount > MAX_EXCHANGE_COUNT then
|
||
maxCount = MAX_EXCHANGE_COUNT
|
||
elseif owenCount == 0 then
|
||
maxCount = 1
|
||
end
|
||
local callback = function(nCount)
|
||
self.curExChangeCount = nCount
|
||
self:RefreshConsumCount()
|
||
end
|
||
self._mapNode.goQuantitySelector:Init(callback, self.curExChangeCount, maxCount)
|
||
self:RefreshConsumCount()
|
||
local color = NovaAPI.GetImageColor(self._mapNode.imgMask)
|
||
color.a = self.maskAlpha
|
||
NovaAPI.SetImageColor(self._mapNode.imgMask, color)
|
||
end
|
||
function ExChangeCtrl:RefreshConsumCount()
|
||
self._mapNode.gobtnBuyGray:SetActive(false)
|
||
self._mapNode.btnBuy.gameObject:SetActive(true)
|
||
NovaAPI.SetTMPText(self._mapNode.txtConsunNum, self.curExChangeCount)
|
||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.rectConsunNum)
|
||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.rectTransgoConsumCount)
|
||
end
|
||
function ExChangeCtrl:OnClosePanel()
|
||
EventManager.Hit(EventId.ClosePanel, PanelId.ExChangePanel)
|
||
end
|
||
function ExChangeCtrl:GetOwenItemCount()
|
||
local count = PlayerData.Item:GetItemCountByID(self.exchangeId1)
|
||
if self.exchangeId1 == AllEnum.CoinItemId.STONE then
|
||
count = count + PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.FREESTONE)
|
||
end
|
||
return count
|
||
end
|
||
function ExChangeCtrl:OnBtnClick_Buy()
|
||
local owenCount = self:GetOwenItemCount()
|
||
if owenCount <= 0 or owenCount < self.curExChangeCount then
|
||
local msg = {
|
||
nType = AllEnum.MessageBox.Confirm,
|
||
sContent = orderedFormat(ConfigTable.GetUIText("Recruit_Charge") or "", ConfigTable.GetData_Item(AllEnum.CoinItemId.STONE).Id),
|
||
callbackConfirm = function()
|
||
self:OnClosePanel()
|
||
local nState = ConfigTable.GetConfigNumber("IsShowComBtn")
|
||
if nState == 1 then
|
||
EventManager.Hit(EventId.OpenPanel, PanelId.Mall, AllEnum.MallToggle.Gem)
|
||
else
|
||
local sContent = ConfigTable.GetUIText("Function_NotAvailable")
|
||
EventManager.Hit(EventId.OpenMessageBox, sContent)
|
||
end
|
||
end,
|
||
bBlur = false
|
||
}
|
||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||
EventManager.Hit("TopRes", true, self._mapNode.ctlTopBarPanel.gameObject:GetInstanceID(), {
|
||
AllEnum.CoinItemId.Jade,
|
||
AllEnum.CoinItemId.STONE
|
||
})
|
||
return
|
||
end
|
||
local exchangeSuccessCallBack = function(mapData)
|
||
self.bExChanging = false
|
||
self:OnClosePanel()
|
||
end
|
||
local confirmCallback = function()
|
||
if self.bExChanging == true then
|
||
return
|
||
end
|
||
self.bExChanging = true
|
||
PlayerData.Coin:SendGemConvertReqReq(self.curExChangeCount, exchangeSuccessCallBack)
|
||
end
|
||
local sTips = orderedFormat(ConfigTable.GetUIText("Shop_BuyComfirm"), self.curExChangeCount, ConfigTable.GetData_Item(self.exchangeId1).Title, ConfigTable.GetData_Item(self.exchangeId2).Title)
|
||
local msg = {
|
||
nType = AllEnum.MessageBox.Confirm,
|
||
sContent = sTips,
|
||
callbackConfirm = confirmCallback,
|
||
bBlur = false
|
||
}
|
||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||
end
|
||
function ExChangeCtrl:OnBtnClick_Close()
|
||
self._mapNode.aniDetail:Play("t_window_04_t_out")
|
||
self:AddTimer(1, 0.2, "OnClosePanel", true, true, true)
|
||
end
|
||
return ExChangeCtrl
|