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,222 @@
|
||||
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
|
||||
Reference in New Issue
Block a user