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,194 @@
|
||||
local BatchItemCtrl = class("BatchItemCtrl", BaseCtrl)
|
||||
BatchItemCtrl._mapNodeConfig = {
|
||||
rtqQuantitySelector = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateQuantitySelectorCtrl"
|
||||
},
|
||||
BatchItemTipsView = {
|
||||
sCtrlName = "Game.UI.Consumable.ConsumableItemTipsCtrl"
|
||||
},
|
||||
txtStock = {sComponentName = "TMP_Text"},
|
||||
srItemList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
ItemContent = {sComponentName = "Transform"},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnConfirm1 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Confirm"
|
||||
},
|
||||
txtBtnConfirm = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Confirm"
|
||||
},
|
||||
txtBatchItemTitle2 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "ConsumeableSelectItemTitle"
|
||||
},
|
||||
goNeed = {},
|
||||
txtNeedCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Consumable_NeedCount"
|
||||
},
|
||||
txtNeed = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
BatchItemCtrl._mapEventConfig = {
|
||||
ConsumableCancel = "OnBtnClick_Close"
|
||||
}
|
||||
BatchItemCtrl._mapRedDotConfig = {}
|
||||
function BatchItemCtrl:Awake()
|
||||
self._mapItemCtrl = {}
|
||||
self.gameObject:SetActive(false)
|
||||
self.animator = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
function BatchItemCtrl:FadeIn()
|
||||
end
|
||||
function BatchItemCtrl:FadeOut()
|
||||
end
|
||||
function BatchItemCtrl:OnEnable()
|
||||
end
|
||||
function BatchItemCtrl:OnDisable()
|
||||
self:UnbindAllCtrl()
|
||||
end
|
||||
function BatchItemCtrl:OnDestroy()
|
||||
end
|
||||
function BatchItemCtrl:OnRelease()
|
||||
end
|
||||
function BatchItemCtrl:UnbindAllCtrl()
|
||||
for go, mapCtrl in pairs(self._mapItemCtrl) do
|
||||
self:UnbindCtrlByNode(mapCtrl)
|
||||
end
|
||||
self._mapItemCtrl = {}
|
||||
end
|
||||
function BatchItemCtrl:OpenPanel(nTid, nItemCount, nSelectItemId, nNeedCount)
|
||||
self.gameObject:SetActive(true)
|
||||
self.animator:Play("t_window_04_t_in")
|
||||
if nItemCount == 0 then
|
||||
return
|
||||
end
|
||||
self._tbItem = {}
|
||||
self.nUseItemTid = nTid
|
||||
self.nSelectItemId = nSelectItemId
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nTid)
|
||||
local mapItemUseCfg = decodeJson(mapItemCfgData.UseArgs)
|
||||
if mapItemCfgData ~= nil then
|
||||
for sTid, nCount in pairs(mapItemUseCfg) do
|
||||
local nItemTid = tonumber(sTid)
|
||||
if nItemTid ~= nil then
|
||||
table.insert(self._tbItem, {nItemTid, nCount})
|
||||
end
|
||||
end
|
||||
end
|
||||
local sort = function(a, b)
|
||||
local mapItemCfgDataA = ConfigTable.GetData_Item(a[1])
|
||||
local mapItemCfgDataB = ConfigTable.GetData_Item(b[1])
|
||||
if mapItemCfgDataA.Rarity ~= mapItemCfgDataB.Rarity then
|
||||
return mapItemCfgDataA.Rarity < mapItemCfgDataB.Rarity
|
||||
end
|
||||
return a[1] < b[1]
|
||||
end
|
||||
table.sort(self._tbItem, sort)
|
||||
self.useCount = 1
|
||||
self.nCurSelectItem = 1
|
||||
for i, v in ipairs(self._tbItem) do
|
||||
if v[1] == nSelectItemId then
|
||||
self.nCurSelectItem = i
|
||||
break
|
||||
end
|
||||
end
|
||||
self.bShowNeed = nNeedCount and nSelectItemId
|
||||
self._mapNode.goNeed:SetActive(self.bShowNeed)
|
||||
local nHasCount = nSelectItemId and PlayerData.Item:GetItemCountByID(nSelectItemId) or 0
|
||||
if self.bShowNeed and nNeedCount > nHasCount then
|
||||
self.useCount = nNeedCount - nHasCount
|
||||
if nItemCount < self.useCount then
|
||||
self.useCount = nItemCount
|
||||
end
|
||||
end
|
||||
self:RefreshNeed(nHasCount, nNeedCount)
|
||||
self.nItemCount = nItemCount
|
||||
if 0 < #self._tbItem then
|
||||
self._mapNode.BatchItemTipsView:Refresh(self._tbItem[self.nCurSelectItem][1])
|
||||
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))
|
||||
local callback = function(nCount)
|
||||
self.useCount = nCount
|
||||
self:RefreshNeed(nHasCount, nNeedCount)
|
||||
end
|
||||
self._mapNode.rtqQuantitySelector:Init(callback, self.useCount, self.nItemCount)
|
||||
end
|
||||
function BatchItemCtrl: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)
|
||||
self._mapItemCtrl[goGrid]:SetSelect(nIdx == self.nCurSelectItem)
|
||||
end
|
||||
function BatchItemCtrl:OnGridBtnClick(goGrid, gridIndex)
|
||||
local nIdx = gridIndex
|
||||
if nIdx ~= nil then
|
||||
nIdx = nIdx + 1
|
||||
else
|
||||
return
|
||||
end
|
||||
if nIdx == self.nCurSelectItem then
|
||||
return
|
||||
end
|
||||
local rtItemBefore = self._mapNode.ItemContent:Find(tostring(self.nCurSelectItem - 1))
|
||||
if rtItemBefore ~= nil and self._mapItemCtrl[rtItemBefore.gameObject] ~= nil then
|
||||
self._mapItemCtrl[rtItemBefore.gameObject]:SetSelect(false)
|
||||
end
|
||||
if self._mapItemCtrl[goGrid] ~= nil then
|
||||
self._mapItemCtrl[goGrid]:SetSelect(true)
|
||||
end
|
||||
self._mapNode.BatchItemTipsView:Refresh(self._tbItem[nIdx][1])
|
||||
self._mapNode.goNeed:SetActive(self._tbItem[nIdx][1] == self.nSelectItemId and self.bShowNeed)
|
||||
self.nCurSelectItem = nIdx
|
||||
end
|
||||
function BatchItemCtrl:RefreshNeed(nHasCount, nNeedCount)
|
||||
if not self.bShowNeed then
|
||||
return
|
||||
end
|
||||
local nAfterCount = nHasCount + self.useCount
|
||||
if nNeedCount <= nAfterCount then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNeed, "<color=#264278>" .. nAfterCount .. "</color>/" .. nNeedCount)
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNeed, "<color=#BD3059>" .. nAfterCount .. "</color>/" .. nNeedCount)
|
||||
end
|
||||
end
|
||||
function BatchItemCtrl:OnBtnClick_Close(btn)
|
||||
EventManager.Hit("CancelUseItem")
|
||||
self.animator:Play("t_window_04_t_out")
|
||||
end
|
||||
function BatchItemCtrl:OnBtnClick_Confirm(btn)
|
||||
local nSelectItem = self._tbItem[self.nCurSelectItem][1]
|
||||
local nSelectCount = self._tbItem[self.nCurSelectItem][2] * self.useCount
|
||||
local nUseName = ConfigTable.GetData_Item(self.nUseItemTid).Title
|
||||
local nItemName = ConfigTable.GetData_Item(nSelectItem).Title
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Item,
|
||||
sContent = orderedFormat(ConfigTable.GetUIText("Consumable_ConfirmTipBatchItem"), self.useCount, nUseName, nSelectCount, nItemName),
|
||||
tbItem = {
|
||||
[1] = {nTid = nSelectItem, nCount = nSelectCount}
|
||||
},
|
||||
callbackConfirm = function()
|
||||
EventManager.Hit("ConfirmUseItem", self.nUseItemTid, self.useCount, nSelectItem)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
return BatchItemCtrl
|
||||
@@ -0,0 +1,189 @@
|
||||
local ConsumableCtrl = class("ConsumableCtrl", BaseCtrl)
|
||||
ConsumableCtrl._mapNodeConfig = {
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
aniBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnBlur = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Cancel"
|
||||
},
|
||||
BatchItem = {
|
||||
sCtrlName = "Game.UI.Consumable.BatchItemCtrl"
|
||||
},
|
||||
OutfitSelect = {
|
||||
sCtrlName = "Game.UI.Consumable.OutfitSelectCtrl"
|
||||
},
|
||||
RandomItemSelect = {
|
||||
sCtrlName = "Game.UI.Consumable.RandomItemSelect"
|
||||
}
|
||||
}
|
||||
ConsumableCtrl._mapEventConfig = {
|
||||
ConfirmUseItem = "OnEvent_ConfirmUseItem",
|
||||
CancelUseItem = "OnEvent_ClickCancel"
|
||||
}
|
||||
ConsumableCtrl._mapRedDotConfig = {}
|
||||
function ConsumableCtrl:Awake()
|
||||
end
|
||||
function ConsumableCtrl:FadeIn()
|
||||
end
|
||||
function ConsumableCtrl:FadeOut()
|
||||
end
|
||||
function ConsumableCtrl:OnEnable()
|
||||
self._mapNode.blur:SetActive(true)
|
||||
local tbParam = self:GetPanelParam()
|
||||
self.tbItems = tbParam[1]
|
||||
self.nCurIdx = 1
|
||||
if self.tbItems == nil then
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.Consumable)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
else
|
||||
local nItemId = self.tbItems[self.nCurIdx]
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nItemId)
|
||||
if mapItemCfgData ~= nil then
|
||||
do
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if mapItemCfgData.Stype == GameEnum.itemStype.OutfitCYO then
|
||||
self._mapNode.OutfitSelect:OpenPanel(nItemId)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.RandomPackage then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
self._mapNode.RandomItemSelect:OpenPanel(nItemId, nItemCount)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.ComCYO then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
local nSelectItemId = tbParam[2]
|
||||
local nNeedCount = tbParam[3]
|
||||
self._mapNode.BatchItem:OpenPanel(nItemId, nItemCount, nSelectItemId, nNeedCount)
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function ConsumableCtrl:OnDisable()
|
||||
end
|
||||
function ConsumableCtrl:OnDestroy()
|
||||
end
|
||||
function ConsumableCtrl:OnRelease()
|
||||
end
|
||||
function ConsumableCtrl:OnEvent_ConfirmUseItem(nItemId, nCount, nChooseTid)
|
||||
local tbItem = PlayerData.Item:GetItemSortByExpire(nItemId)
|
||||
if #tbItem == 0 then
|
||||
printError("没有可使用的道具:" .. nItemId)
|
||||
return
|
||||
end
|
||||
local tbUseItem = {}
|
||||
local nRemainCount = nCount
|
||||
if nChooseTid ~= nil then
|
||||
for _, tbItemCount in ipairs(tbItem) do
|
||||
if nRemainCount > tbItemCount[2] then
|
||||
table.insert(tbUseItem, {
|
||||
Id = tbItemCount[1],
|
||||
Tid = nItemId,
|
||||
SelectTid = nChooseTid,
|
||||
Qty = tbItemCount[2] == 1 and 0 or tbItemCount[2]
|
||||
})
|
||||
nRemainCount = nRemainCount - tbItemCount[2]
|
||||
else
|
||||
table.insert(tbUseItem, {
|
||||
Id = tbItemCount[1],
|
||||
Tid = nItemId,
|
||||
SelectTid = nChooseTid,
|
||||
Qty = nRemainCount == 1 and 0 or nRemainCount
|
||||
})
|
||||
nRemainCount = 0
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
for _, tbItemCount in ipairs(tbItem) do
|
||||
if 0 < nRemainCount then
|
||||
if nRemainCount > tbItemCount[2] then
|
||||
table.insert(tbUseItem, {
|
||||
Id = tbItemCount[1],
|
||||
Tid = nItemId,
|
||||
Qty = tbItemCount[2]
|
||||
})
|
||||
nRemainCount = nRemainCount - tbItemCount[2]
|
||||
else
|
||||
table.insert(tbUseItem, {
|
||||
Id = tbItemCount[1],
|
||||
Tid = nItemId,
|
||||
Qty = nRemainCount
|
||||
})
|
||||
nRemainCount = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local callback = function()
|
||||
EventManager.Hit("ConsumableUsed")
|
||||
self._mapNode.BatchItem.gameObject:SetActive(false)
|
||||
self._mapNode.OutfitSelect.gameObject:SetActive(false)
|
||||
self._mapNode.RandomItemSelect.gameObject:SetActive(false)
|
||||
if self.tbItems[self.nCurIdx + 1] ~= nil then
|
||||
self.nCurIdx = self.nCurIdx + 1
|
||||
local nItemId = self.tbItems[self.nCurIdx]
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nItemId)
|
||||
if mapItemCfgData ~= nil then
|
||||
if mapItemCfgData.Stype == GameEnum.itemStype.OutfitCYO then
|
||||
self._mapNode.OutfitSelect:OpenPanel(nItemId)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.RandomPackage then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
self._mapNode.RandomItemSelect:OpenPanel(nItemId, nItemCount)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.ComCYO then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
self._mapNode.BatchItem:OpenPanel(nItemId, nItemCount)
|
||||
end
|
||||
end
|
||||
else
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.Consumable)
|
||||
end
|
||||
end
|
||||
if nChooseTid ~= nil then
|
||||
PlayerData.Item:SendPickItemMsg(tbUseItem, callback, true)
|
||||
else
|
||||
PlayerData.Item:SendUseItemMsg(tbUseItem, callback, true)
|
||||
end
|
||||
end
|
||||
function ConsumableCtrl:OnEvent_ClickCancel()
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
local wait = function()
|
||||
self._mapNode.BatchItem.gameObject:SetActive(false)
|
||||
self._mapNode.OutfitSelect.gameObject:SetActive(false)
|
||||
self._mapNode.RandomItemSelect.gameObject:SetActive(false)
|
||||
if self.tbItems[self.nCurIdx + 1] ~= nil then
|
||||
self.nCurIdx = self.nCurIdx + 1
|
||||
local nItemId = self.tbItems[self.nCurIdx]
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nItemId)
|
||||
if mapItemCfgData ~= nil then
|
||||
if mapItemCfgData.Stype == GameEnum.itemStype.OutfitCYO then
|
||||
self._mapNode.OutfitSelect:OpenPanel(nItemId)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.RandomPackage then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
self._mapNode.RandomItemSelect:OpenPanel(nItemId, nItemCount)
|
||||
elseif mapItemCfgData.Stype == GameEnum.itemStype.ComCYO then
|
||||
local nItemCount = PlayerData.Item:GetItemCountByID(nItemId)
|
||||
self._mapNode.BatchItem:OpenPanel(nItemId, nItemCount)
|
||||
end
|
||||
end
|
||||
else
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.Consumable)
|
||||
end
|
||||
end
|
||||
self:AddTimer(1, 0.2, wait, true, true, true)
|
||||
end
|
||||
function ConsumableCtrl:OnBtnClick_Cancel()
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
EventManager.Hit("ConsumableCancel")
|
||||
end
|
||||
return ConsumableCtrl
|
||||
@@ -0,0 +1,73 @@
|
||||
local ConsumableItemTipsCtrl = class("ConsumableItemTipsCtrl", BaseCtrl)
|
||||
ConsumableItemTipsCtrl._mapNodeConfig = {
|
||||
TipsContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
TMPItemTitle = {sComponentName = "TMP_Text"},
|
||||
TMPItemCount = {sComponentName = "TMP_Text"},
|
||||
TMPSubTitle = {sComponentName = "TMP_Text"},
|
||||
TMPItemDesc = {sComponentName = "TMP_Text"},
|
||||
rtJumptoContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
goJumptoGrid = {},
|
||||
rtJumpTo = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
srDesc = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
rtDescContent = {
|
||||
sComponentName = "RectTransform"
|
||||
}
|
||||
}
|
||||
ConsumableItemTipsCtrl._mapEventConfig = {}
|
||||
function ConsumableItemTipsCtrl:Awake()
|
||||
end
|
||||
function ConsumableItemTipsCtrl:FadeIn()
|
||||
end
|
||||
function ConsumableItemTipsCtrl:FadeOut()
|
||||
end
|
||||
function ConsumableItemTipsCtrl:Refresh(nTid)
|
||||
self.mapData = {nTid = nTid, bShowDepot = true}
|
||||
self._mapJumpto = {}
|
||||
self._mapNode.goJumptoGrid:SetActive(false)
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(self.mapData.nTid)
|
||||
if mapItemCfgData == nil then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemTitle, mapItemCfgData.Title)
|
||||
if mapItemCfgData.Desc then
|
||||
if mapItemCfgData.Literary and mapItemCfgData.Literary ~= "" then
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, mapItemCfgData.Desc .. [[
|
||||
|
||||
<color=#5E89B4>]] .. mapItemCfgData.Literary .. "</color>")
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, mapItemCfgData.Desc)
|
||||
end
|
||||
elseif mapItemCfgData.Literary and mapItemCfgData.Literary ~= "" then
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, mapItemCfgData.Literary)
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemDesc, "")
|
||||
end
|
||||
if self.mapData.bShowDepot then
|
||||
local nItemDepotCount = 0
|
||||
if self.mapData.nTid == AllEnum.CoinItemId.FREESTONE or self.mapData.nTid == AllEnum.CoinItemId.STONE then
|
||||
nItemDepotCount = PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.FREESTONE) + PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.STONE)
|
||||
else
|
||||
nItemDepotCount = PlayerData.Item:GetItemCountByID(self.mapData.nTid)
|
||||
end
|
||||
self._mapNode.TMPItemCount.gameObject:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPItemCount, orderedFormat(ConfigTable.GetUIText("ItemTip_DepotCount"), nItemDepotCount))
|
||||
else
|
||||
self._mapNode.TMPItemCount.gameObject:SetActive(false)
|
||||
end
|
||||
local sLanguage = "ItemStype_" .. mapItemCfgData.Stype
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPSubTitle, ConfigTable.GetUIText(sLanguage) or "")
|
||||
self._mapNode.rtJumpTo.gameObject:SetActive(false)
|
||||
end
|
||||
function ConsumableItemTipsCtrl:OnDestroy()
|
||||
end
|
||||
function ConsumableItemTipsCtrl:OnRelease()
|
||||
end
|
||||
return ConsumableItemTipsCtrl
|
||||
@@ -0,0 +1,21 @@
|
||||
local ConsumablePanel = class("ConsumablePanel", BasePanel)
|
||||
ConsumablePanel._bIsMainPanel = false
|
||||
ConsumablePanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "ConsumablesPanel/ConsumablesPanel.prefab",
|
||||
sCtrlName = "Game.UI.Consumable.ConsumableCtrl"
|
||||
}
|
||||
}
|
||||
function ConsumablePanel:Awake()
|
||||
end
|
||||
function ConsumablePanel:OnEnable()
|
||||
end
|
||||
function ConsumablePanel:OnAfterEnter()
|
||||
end
|
||||
function ConsumablePanel:OnDisable()
|
||||
end
|
||||
function ConsumablePanel:OnDestroy()
|
||||
end
|
||||
function ConsumablePanel:OnRelease()
|
||||
end
|
||||
return ConsumablePanel
|
||||
@@ -0,0 +1,31 @@
|
||||
local ConsumableSelectItemCtrl = class("ConsumableSelectItemCtrl", BaseCtrl)
|
||||
ConsumableSelectItemCtrl._mapNodeConfig = {
|
||||
rtItem = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
imgSelect = {}
|
||||
}
|
||||
ConsumableSelectItemCtrl._mapEventConfig = {}
|
||||
ConsumableSelectItemCtrl._mapRedDotConfig = {}
|
||||
function ConsumableSelectItemCtrl:Awake()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:FadeIn()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:FadeOut()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:OnEnable()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:OnDisable()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:OnDestroy()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:OnRelease()
|
||||
end
|
||||
function ConsumableSelectItemCtrl:Refresh(nTid, nCount, bSelect)
|
||||
self._mapNode.rtItem:SetItem(nTid, nil, nCount, nil, nil, false, false, false, false)
|
||||
self._mapNode.imgSelect:SetActive(bSelect)
|
||||
end
|
||||
function ConsumableSelectItemCtrl:SetSelect(bSelect)
|
||||
self._mapNode.imgSelect:SetActive(bSelect)
|
||||
end
|
||||
return ConsumableSelectItemCtrl
|
||||
@@ -0,0 +1,47 @@
|
||||
local ConsumableSelectOutfitCtrl = class("ConsumableSelectOutfitCtrl", BaseCtrl)
|
||||
ConsumableSelectOutfitCtrl._mapNodeConfig = {
|
||||
imgOutfit = {sComponentName = "Image"},
|
||||
imgStar = {nCount = 5},
|
||||
imgSelect = {}
|
||||
}
|
||||
ConsumableSelectOutfitCtrl._mapEventConfig = {}
|
||||
ConsumableSelectOutfitCtrl._mapRedDotConfig = {}
|
||||
function ConsumableSelectOutfitCtrl:Awake()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:FadeIn()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:FadeOut()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:OnEnable()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:OnDisable()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:OnDestroy()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:OnRelease()
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:Refresh(nTid, bSelect)
|
||||
local mapOutfit = ConfigTable.GetData("Outfit", nTid)
|
||||
if mapOutfit == nil then
|
||||
self.gameObject:SetActive(false)
|
||||
printError("Outfit Data Missing:" .. nTid)
|
||||
return
|
||||
end
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nTid)
|
||||
if mapItemCfgData == nil then
|
||||
self.gameObject:SetActive(false)
|
||||
printError("Outfit Item Data Missing:" .. nTid)
|
||||
return
|
||||
end
|
||||
local sSpriteName = mapItemCfgData.Icon .. AllEnum.OutfitIconSurfix.OutInfo
|
||||
self:SetPngSprite(self._mapNode.imgOutfit, sSpriteName)
|
||||
local nRare = mapItemCfgData.Rarity
|
||||
for nIdx, objStar in ipairs(self._mapNode.imgStar) do
|
||||
objStar:SetActive(nIdx > 5 - nRare)
|
||||
end
|
||||
self._mapNode.imgSelect:SetActive(bSelect)
|
||||
end
|
||||
function ConsumableSelectOutfitCtrl:SetSelect(bSelect)
|
||||
self._mapNode.imgSelect:SetActive(bSelect)
|
||||
end
|
||||
return ConsumableSelectOutfitCtrl
|
||||
@@ -0,0 +1,432 @@
|
||||
local OutfitSelectCtrl = class("OutfitSelectCtrl", BaseCtrl)
|
||||
OutfitSelectCtrl._mapNodeConfig = {
|
||||
srOutfitList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
ItemContent = {sComponentName = "Transform"},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnCancel = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnConfirm1 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Confirm"
|
||||
},
|
||||
txtTitleOutfitSelect2 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "ConsumeableSelectOutfitTitle"
|
||||
},
|
||||
txtBtnbtnConfirm = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Confirm"
|
||||
},
|
||||
txtBtnCancel = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Cancel"
|
||||
},
|
||||
txtDiscName = {sComponentName = "TMP_Text"},
|
||||
goProperty = {
|
||||
nCount = 2,
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplatePropertyCtrl"
|
||||
},
|
||||
btnSample = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Sample"
|
||||
},
|
||||
imgDiscEET = {sComponentName = "Image"},
|
||||
imgTag = {nCount = 3},
|
||||
txtTag = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
DiscNote = {},
|
||||
DiscSkill = {},
|
||||
imgOn = {nCount = 2},
|
||||
imgOff = {nCount = 2},
|
||||
txtCoreSkill = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_Btn_MainSkill"
|
||||
},
|
||||
txtCommonSkill = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_Btn_SubSkill"
|
||||
},
|
||||
btnSkill = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Tab"
|
||||
},
|
||||
ScrollView = {sComponentName = "ScrollRect"},
|
||||
goMainSkill = {},
|
||||
txtMainSkillTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_MainSkill_Title"
|
||||
},
|
||||
txtMainSkillName = {sComponentName = "TMP_Text"},
|
||||
imgMainSkillIcon = {sComponentName = "Image"},
|
||||
imgMainSkillIconBg = {sComponentName = "Image"},
|
||||
goMainLevel = {sComponentName = "Image"},
|
||||
txtMainSkillDesc = {sComponentName = "TMP_Text"},
|
||||
TMP_Link1 = {
|
||||
sNodeName = "txtMainSkillDesc",
|
||||
sComponentName = "TMPHyperLink",
|
||||
callback = "OnLinkClick_Word"
|
||||
},
|
||||
goSubSkill = {},
|
||||
txtSubSkillTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_SubSkill_Title"
|
||||
},
|
||||
rtSubBg = {nCount = 2},
|
||||
txtSubSkillName = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
imgSubSkillIcon = {nCount = 2, sComponentName = "Image"},
|
||||
imgSubSkillIconBg = {nCount = 2, sComponentName = "Image"},
|
||||
txtSubSkillDesc = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
TMP_Link2 = {
|
||||
sNodeName = "txtSubSkillDesc1",
|
||||
sComponentName = "TMPHyperLink",
|
||||
callback = "OnLinkClick_Word"
|
||||
},
|
||||
TMP_Link3 = {
|
||||
sNodeName = "txtSubSkillDesc2",
|
||||
sComponentName = "TMPHyperLink",
|
||||
callback = "OnLinkClick_Word"
|
||||
},
|
||||
txtActiveNeed = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Disc_SubSkill_ActiveConditions"
|
||||
},
|
||||
txtSubSkillLevel = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
btnPrevLevel = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Prev"
|
||||
},
|
||||
btnNextLevel = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Next"
|
||||
},
|
||||
imgPrevOn = {nCount = 2},
|
||||
imgPrevOff = {nCount = 2},
|
||||
imgNextOn = {nCount = 2},
|
||||
imgNextOff = {nCount = 2},
|
||||
imgNeedNoteBg1_ = {nCount = 3},
|
||||
imgNeedNoteIcon1_ = {nCount = 3, sComponentName = "Image"},
|
||||
txtNeedNoteName1_ = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtNoteActiveLv1_ = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
imgNeedNoteBg2_ = {nCount = 3},
|
||||
imgNeedNoteIcon2_ = {nCount = 3, sComponentName = "Image"},
|
||||
txtNeedNoteName2_ = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtNoteActiveLv2_ = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
btnNote = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Note"
|
||||
},
|
||||
imgNoteCount = {nCount = 3, sComponentName = "Image"},
|
||||
imgNoteIcon = {nCount = 3, sComponentName = "Image"},
|
||||
txtNoteName = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtNoteLv = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtNoteDesc = {nCount = 3, sComponentName = "TMP_Text"}
|
||||
}
|
||||
OutfitSelectCtrl._mapEventConfig = {
|
||||
ConsumableCancel = "OnBtnClick_Close"
|
||||
}
|
||||
OutfitSelectCtrl._mapRedDotConfig = {}
|
||||
function OutfitSelectCtrl:Awake()
|
||||
self._mapItemCtrl = {}
|
||||
self.gameObject:SetActive(false)
|
||||
self.animator = self.gameObject:GetComponent("Animator")
|
||||
end
|
||||
function OutfitSelectCtrl:FadeIn()
|
||||
end
|
||||
function OutfitSelectCtrl:FadeOut()
|
||||
end
|
||||
function OutfitSelectCtrl:OnEnable()
|
||||
end
|
||||
function OutfitSelectCtrl:OnDisable()
|
||||
self:UnbindAllCtrl()
|
||||
end
|
||||
function OutfitSelectCtrl:OnDestroy()
|
||||
end
|
||||
function OutfitSelectCtrl:OnRelease()
|
||||
end
|
||||
function OutfitSelectCtrl:UnbindAllCtrl()
|
||||
for go, mapCtrl in pairs(self._mapItemCtrl) do
|
||||
self:UnbindCtrlByNode(mapCtrl)
|
||||
end
|
||||
self._mapItemCtrl = {}
|
||||
end
|
||||
function OutfitSelectCtrl:OpenPanel(nTid)
|
||||
self.gameObject:SetActive(true)
|
||||
self.animator:Play("t_window_04_t_in")
|
||||
self.nUseItemTid = nTid
|
||||
self._tbItem = {}
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nTid)
|
||||
if mapItemCfgData ~= nil then
|
||||
local mapItemUseCfg = decodeJson(mapItemCfgData.UseArgs)
|
||||
for sTid, nCount in pairs(mapItemUseCfg) do
|
||||
local nItemTid = tonumber(sTid)
|
||||
if nItemTid ~= nil then
|
||||
local mapDisc = PlayerData.Disc:GenerateLocalDiscData(nItemTid)
|
||||
table.insert(self._tbItem, mapDisc)
|
||||
end
|
||||
end
|
||||
end
|
||||
local sort = function(a, b)
|
||||
return a.nRarity < b.nRarity or a.nRarity == b.nRarity and a.nEET < b.nEET or a.nRarity == b.nRarity and a.nEET == b.nEET and a.nId < b.nId
|
||||
end
|
||||
table.sort(self._tbItem, sort)
|
||||
self.nCurSelectItem = 1
|
||||
if #self._tbItem > 0 then
|
||||
self._mapNode.srOutfitList:SetAnim(0.1)
|
||||
self._mapNode.srOutfitList:Init(#self._tbItem, self, self.OnGridRefresh, self.OnGridBtnClick, true)
|
||||
end
|
||||
self.nCurTab = 1
|
||||
for i = 1, 2 do
|
||||
self._mapNode.imgOn[i]:SetActive(i == self.nCurTab)
|
||||
self._mapNode.imgOff[i]:SetActive(i ~= self.nCurTab)
|
||||
end
|
||||
self:RefreshInfo(self._tbItem[self.nCurSelectItem])
|
||||
end
|
||||
function OutfitSelectCtrl:CloseAnim()
|
||||
self.animator:Play("t_window_04_t_out")
|
||||
end
|
||||
function OutfitSelectCtrl:OnGridRefresh(goGrid, gridIndex)
|
||||
if self._mapItemCtrl[goGrid] == nil then
|
||||
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.TemplateEx.TemplateDiscItemCtrl")
|
||||
self._mapItemCtrl[goGrid] = mapCtrl
|
||||
end
|
||||
local nIdx = gridIndex
|
||||
if nIdx ~= nil then
|
||||
nIdx = nIdx + 1
|
||||
else
|
||||
return
|
||||
end
|
||||
local nItemTid = self._tbItem[nIdx].nId
|
||||
local mapItemCfgData = ConfigTable.GetData_Item(nItemTid)
|
||||
if not mapItemCfgData then
|
||||
return
|
||||
end
|
||||
local nMaxStar = PlayerData.Disc:GetDiscMaxStar(mapItemCfgData.Rarity)
|
||||
self._mapItemCtrl[goGrid]:Refresh(nItemTid, 0, nMaxStar, self._tbItem[nIdx].nLevel, self._tbItem[nIdx].tbShowNote)
|
||||
self._mapItemCtrl[goGrid]:SetSelect(nIdx == self.nCurSelectItem)
|
||||
end
|
||||
function OutfitSelectCtrl:OnGridBtnClick(goGrid, gridIndex)
|
||||
local nIdx = gridIndex
|
||||
if nIdx ~= nil then
|
||||
nIdx = nIdx + 1
|
||||
else
|
||||
return
|
||||
end
|
||||
if nIdx == self.nCurSelectItem then
|
||||
return
|
||||
end
|
||||
local rtItemBefore = self._mapNode.ItemContent:Find(tostring(self.nCurSelectItem - 1))
|
||||
if rtItemBefore ~= nil and self._mapItemCtrl[rtItemBefore.gameObject] ~= nil then
|
||||
self._mapItemCtrl[rtItemBefore.gameObject]:SetSelect(false)
|
||||
end
|
||||
if self._mapItemCtrl[goGrid] ~= nil then
|
||||
self._mapItemCtrl[goGrid]:SetSelect(true)
|
||||
end
|
||||
self.nCurSelectItem = nIdx
|
||||
self:RefreshInfo(self._tbItem[nIdx])
|
||||
end
|
||||
function OutfitSelectCtrl:SwitchTab()
|
||||
self._mapNode.DiscSkill:SetActive(self.nCurTab == 1)
|
||||
self._mapNode.DiscNote:SetActive(self.nCurTab == 2)
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Close(btn)
|
||||
EventManager.Hit("CancelUseItem")
|
||||
self.animator:Play("t_window_04_t_out")
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Confirm(btn)
|
||||
local nItemId = self._tbItem[self.nCurSelectItem].nId
|
||||
local nUseName = ConfigTable.GetData_Item(self.nUseItemTid).Title
|
||||
local nItemName = ConfigTable.GetData_Item(nItemId).Title
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Item,
|
||||
sContent = orderedFormat(ConfigTable.GetUIText("Consumable_ConfirmTipDisc"), nUseName, nItemName),
|
||||
tbItem = {
|
||||
[1] = {nTid = nItemId, nCount = 1}
|
||||
},
|
||||
callbackConfirm = function()
|
||||
EventManager.Hit("ConfirmUseItem", self.nUseItemTid, 1, nItemId)
|
||||
end,
|
||||
bBlur = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Tab(btn, nIndex)
|
||||
if nIndex == self.nCurTab then
|
||||
return
|
||||
end
|
||||
for i = 1, 2 do
|
||||
self._mapNode.imgOn[i]:SetActive(i == nIndex)
|
||||
self._mapNode.imgOff[i]:SetActive(i ~= nIndex)
|
||||
end
|
||||
self.nCurTab = nIndex
|
||||
self:SwitchTab()
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Prev(btn, nIndex)
|
||||
if self.tbSubLayer and self.tbSubLayer[nIndex] == 1 then
|
||||
return
|
||||
end
|
||||
self.tbSubLayer[nIndex] = self.tbSubLayer[nIndex] - 1
|
||||
self:RefreshSubSkill()
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Next(btn, nIndex)
|
||||
if self.tbSubMaxLayer and self.tbSubLayer and self.tbSubLayer[nIndex] == self.tbSubMaxLayer[nIndex] then
|
||||
return
|
||||
end
|
||||
self.tbSubLayer[nIndex] = self.tbSubLayer[nIndex] + 1
|
||||
self:RefreshSubSkill()
|
||||
end
|
||||
function OutfitSelectCtrl:OnLinkClick_Word(link, sWordId)
|
||||
UTILS.ClickWordLink(link, sWordId)
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Note(btn, nIndex)
|
||||
local mapNote = self.mapSelectDisc.tbSubNoteSkills[nIndex]
|
||||
if not mapNote then
|
||||
return
|
||||
end
|
||||
local tbNote = {}
|
||||
for _, v in ipairs(self.mapSelectDisc.tbSubNoteSkills) do
|
||||
tbNote[v.nId] = v.nCount
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.NoteSkill, tbNote, mapNote.nId, false)
|
||||
end
|
||||
function OutfitSelectCtrl:OnBtnClick_Sample(btn)
|
||||
local tbId = {}
|
||||
for _, v in ipairs(self._tbItem) do
|
||||
table.insert(tbId, v.nId)
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSample, self.mapSelectDisc.nId, false, tbId)
|
||||
end
|
||||
function OutfitSelectCtrl:RefreshInfo(mapDisc)
|
||||
self.mapSelectDisc = mapDisc
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDiscName, self.mapSelectDisc.sName)
|
||||
local sName = AllEnum.ElementIconType.Icon .. self.mapSelectDisc.nEET
|
||||
self:SetAtlasSprite(self._mapNode.imgDiscEET, "12_rare", sName)
|
||||
for i = 1, 3 do
|
||||
local nTag = mapDisc.tbTag[i]
|
||||
if nTag then
|
||||
self._mapNode.imgTag[i]:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTag[i], ConfigTable.GetData("DiscTag", nTag).Title)
|
||||
else
|
||||
self._mapNode.imgTag[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
local tbAttr = self.mapSelectDisc.mapAttrBase
|
||||
local i = 1
|
||||
for _, mapAttachAttr in pairs(AllEnum.AttachAttr) do
|
||||
local mapAttr = tbAttr[mapAttachAttr.sKey]
|
||||
if mapAttr.Value > 0 then
|
||||
self._mapNode.goProperty[i]:SetItemProperty(mapAttr.Key, mapAttr.Value, nil, true)
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
self:RefreshSkill()
|
||||
self:SwitchTab()
|
||||
end
|
||||
function OutfitSelectCtrl:RefreshSkill()
|
||||
local nMainSkillId = self.mapSelectDisc.nMainSkillId
|
||||
if nMainSkillId then
|
||||
self._mapNode.goMainSkill:SetActive(true)
|
||||
local mapCfg = ConfigTable.GetData("MainSkill", nMainSkillId)
|
||||
if mapCfg then
|
||||
self:SetPngSprite(self._mapNode.imgMainSkillIcon, mapCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
self:SetPngSprite(self._mapNode.imgMainSkillIconBg, mapCfg.IconBg .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtMainSkillName, mapCfg.Name)
|
||||
self:SetAtlasSprite(self._mapNode.goMainLevel, "12_rare", AllEnum.FrameType_New.DiscLimitS .. AllEnum.FrameColor_New[self.mapSelectDisc.nRarity] .. "_0" .. self.mapSelectDisc.nStar + 1)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.goMainLevel)
|
||||
local sDesc = UTILS.ParseParamDesc(mapCfg.Desc, mapCfg)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtMainSkillDesc, sDesc)
|
||||
end
|
||||
else
|
||||
self._mapNode.goMainSkill:SetActive(false)
|
||||
end
|
||||
self.tbSubLayer = nil
|
||||
self.tbSubMaxLayer = nil
|
||||
self:RefreshSubSkill()
|
||||
for i = 1, 3 do
|
||||
self._mapNode.btnNote[i].gameObject:SetActive(self.mapSelectDisc.tbSubNoteSkills[i])
|
||||
if self.mapSelectDisc.tbSubNoteSkills[i] then
|
||||
local nImgCount = 2
|
||||
self:SetPngSprite(self._mapNode.imgNoteCount[i], "UI/big_sprites/zs_outfit_lv_" .. nImgCount)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgNoteCount[i])
|
||||
local mapNote = ConfigTable.GetData("SubNoteSkill", self.mapSelectDisc.tbSubNoteSkills[i].nId)
|
||||
if mapNote then
|
||||
self:SetPngSprite(self._mapNode.imgNoteIcon[i], mapNote.Icon)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNoteName[i], mapNote.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNoteDesc[i], mapNote.BriefDesc)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNoteLv[i], orderedFormat(ConfigTable.GetUIText("StarTower_Disc_Info_Level"), self.mapSelectDisc.tbSubNoteSkills[i].nCount))
|
||||
end
|
||||
end
|
||||
end
|
||||
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.ScrollView, 1)
|
||||
end
|
||||
function OutfitSelectCtrl:RefreshSubSkill()
|
||||
if not self.tbSubLayer then
|
||||
self.tbSubLayer = {}
|
||||
end
|
||||
if not self.tbSubMaxLayer then
|
||||
self.tbSubMaxLayer = {}
|
||||
end
|
||||
local tbSubSkillGroupId = self.mapSelectDisc.tbSubSkillGroupId
|
||||
self._mapNode.goSubSkill:SetActive(next(tbSubSkillGroupId))
|
||||
for i = 1, 2 do
|
||||
if tbSubSkillGroupId[i] then
|
||||
self._mapNode.rtSubBg[i]:SetActive(true)
|
||||
local tbGroup = CacheTable.GetData("_SecondarySkill", tbSubSkillGroupId[i])
|
||||
if tbGroup then
|
||||
if not self.tbSubLayer[i] then
|
||||
self.tbSubLayer[i] = 1
|
||||
end
|
||||
if not self.tbSubMaxLayer[i] then
|
||||
self.tbSubMaxLayer[i] = #tbGroup
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSubSkillLevel[i], orderedFormat(ConfigTable.GetUIText("Disc_SubSkill_Level"), self.tbSubLayer[i]))
|
||||
self._mapNode.imgPrevOn[i]:SetActive(self.tbSubLayer[i] > 1)
|
||||
self._mapNode.imgPrevOff[i]:SetActive(self.tbSubLayer[i] == 1)
|
||||
self._mapNode.imgNextOn[i]:SetActive(self.tbSubLayer[i] < self.tbSubMaxLayer[i])
|
||||
self._mapNode.imgNextOff[i]:SetActive(self.tbSubLayer[i] == self.tbSubMaxLayer[i])
|
||||
local mapCfg = tbGroup[self.tbSubLayer[i]]
|
||||
if mapCfg then
|
||||
self:SetPngSprite(self._mapNode.imgSubSkillIcon[i], mapCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
self:SetPngSprite(self._mapNode.imgSubSkillIconBg[i], mapCfg.IconBg .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSubSkillName[i], mapCfg.Name)
|
||||
local sDesc = UTILS.ParseParamDesc(mapCfg.Desc, mapCfg)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSubSkillDesc[i], sDesc)
|
||||
local tbActiveNote = decodeJson(mapCfg.NeedSubNoteSkills)
|
||||
local j = 1
|
||||
for nNeed = 1, 3 do
|
||||
self._mapNode["imgNeedNoteBg" .. i .. "_"][nNeed]:SetActive(false)
|
||||
end
|
||||
for k, v in pairs(tbActiveNote) do
|
||||
local nNoteId = tonumber(k)
|
||||
local nNoteCount = tonumber(v)
|
||||
if nNoteId then
|
||||
local mapNote = ConfigTable.GetData("SubNoteSkill", nNoteId)
|
||||
if mapNote then
|
||||
self._mapNode["imgNeedNoteBg" .. i .. "_"][j]:SetActive(true)
|
||||
self:SetPngSprite(self._mapNode["imgNeedNoteIcon" .. i .. "_"][j], mapNote.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
NovaAPI.SetTMPText(self._mapNode["txtNeedNoteName" .. i .. "_"][j], mapNote.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode["txtNoteActiveLv" .. i .. "_"][j], orderedFormat(ConfigTable.GetUIText("Disc_SubSkill_ActiveLevel"), nNoteCount))
|
||||
j = j + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
self._mapNode.rtSubBg[i]:SetActive(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
return OutfitSelectCtrl
|
||||
@@ -0,0 +1,130 @@
|
||||
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
|
||||
Reference in New Issue
Block a user