Files
StellaSora_DataLua/lua/game/ui/consumable/randomitemselect.lua
T
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

131 lines
3.7 KiB
Lua

local RandomItemSelect = class("RandomItemSelect", BaseCtrl)
RandomItemSelect._mapNodeConfig = {
rtqQuantitySelector = {
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySelectorCtrl"
},
txtStock = {sComponentName = "TMP_Text"},
srItemList = {
sComponentName = "LoopScrollView"
},
ItemContent = {sComponentName = "Transform"},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
btnConfirm2 = {
sComponentName = "UIButton",
callback = "OnBtnClick_Confirm"
},
txtbtnConfirm = {
sComponentName = "TMP_Text",
sLanguageId = "ConsumeableSelectButtonConfirm"
},
txtTitleRandomItemSelect2 = {
sComponentName = "TMP_Text",
sLanguageId = "ConsumeableSelectRandomItemTitle"
},
TMPTitleItem = {
sComponentName = "TMP_Text",
sLanguageId = "ConsumeableSelectRandomItemInfo"
}
}
RandomItemSelect._mapEventConfig = {
ConsumableCancel = "OnBtnClick_Close"
}
RandomItemSelect._mapRedDotConfig = {}
function RandomItemSelect:Awake()
self._mapItemCtrl = {}
self.gameObject:SetActive(false)
self.animator = self.gameObject:GetComponent("Animator")
end
function RandomItemSelect:FadeIn()
end
function RandomItemSelect:FadeOut()
end
function RandomItemSelect:OnEnable()
end
function RandomItemSelect:OnDisable()
self:UnbindAllCtrl()
end
function RandomItemSelect:OnDestroy()
end
function RandomItemSelect:OnRelease()
end
function RandomItemSelect:UnbindAllCtrl()
for go, mapCtrl in pairs(self._mapItemCtrl) do
self:UnbindCtrlByNode(mapCtrl)
end
self._mapItemCtrl = {}
end
function RandomItemSelect:OpenPanel(nTid, nItemCount)
self.gameObject:SetActive(true)
self.animator:Play("t_window_04_t_in")
if nItemCount == 0 then
return
end
self._tbItem = {}
self.nUseItemTid = nTid
local mapItemCfgData = ConfigTable.GetData_Item(nTid)
local mapItemUseCfg = decodeJson(mapItemCfgData.UseArgs)
if mapItemCfgData ~= nil then
for sTid, _ in pairs(mapItemUseCfg) do
local nItemTid = tonumber(sTid)
if nItemTid ~= nil then
local tbDropShowData = PlayerData.Item:GetDropItemShow(nItemTid)
if tbDropShowData ~= nil then
for _, mapData in ipairs(tbDropShowData) do
table.insert(self._tbItem, {
mapData.ItemId,
mapData.ItemQty
})
end
end
end
end
end
self.useCount = 1
self.nItemCount = nItemCount
local callback = function(nCount)
self.useCount = nCount
end
if 0 < #self._tbItem then
self._mapNode.srItemList:SetAnim(0.1)
self._mapNode.srItemList:Init(#self._tbItem, self, self.OnGridRefresh, self.OnGridBtnClick, true)
end
NovaAPI.SetTMPText(self._mapNode.txtStock, orderedFormat(ConfigTable.GetUIText("ConsumableQtySelectorTitle"), self.nItemCount))
self._mapNode.rtqQuantitySelector:Init(callback, 1, self.nItemCount)
end
function RandomItemSelect:OnGridRefresh(goGrid, gridIndex)
if self._mapItemCtrl[goGrid] == nil then
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.TemplateEx.TemplateItemCtrl")
self._mapItemCtrl[goGrid] = mapCtrl
end
local nIdx = gridIndex
if nIdx ~= nil then
nIdx = nIdx + 1
else
return
end
local nItemTid = self._tbItem[nIdx][1]
local nItemCount = self._tbItem[nIdx][2]
self._mapItemCtrl[goGrid]:SetItem(nItemTid, nil, nItemCount)
end
function RandomItemSelect:OnGridBtnClick(goGrid, gridIndex)
local nIdx = gridIndex
if nIdx ~= nil then
nIdx = nIdx + 1
else
return
end
local rtBtn = goGrid.transform:Find("btnGrid")
UTILS.ClickItemGridWithTips(self._tbItem[nIdx][1], rtBtn, true, true, false)
end
function RandomItemSelect:OnBtnClick_Close(btn)
EventManager.Hit("CancelUseItem")
self.animator:Play("t_window_04_t_out")
end
function RandomItemSelect:OnBtnClick_Confirm(btn)
EventManager.Hit("ConfirmUseItem", self.nUseItemTid, self.useCount)
end
return RandomItemSelect