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:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
+222
View File
@@ -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