5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
90 lines
2.6 KiB
Lua
90 lines
2.6 KiB
Lua
local OptionDynamicCtrl = class("OptionDynamicCtrl", BaseCtrl)
|
|
OptionDynamicCtrl._mapNodeConfig = {
|
|
Choose = {},
|
|
trChoose = {sComponentName = "Transform"},
|
|
txtOptionTitle = {sComponentName = "TMP_Text"}
|
|
}
|
|
OptionDynamicCtrl._mapEventConfig = {}
|
|
function OptionDynamicCtrl:SetText(sTitle, tbChoose)
|
|
NovaAPI.SetTMPText(self._mapNode.txtOptionTitle, sTitle)
|
|
for i = 1, self.nCount do
|
|
NovaAPI.SetTMPText(self.txtChoose[i], tbChoose[i])
|
|
end
|
|
end
|
|
function OptionDynamicCtrl:Init(callback, nIndex, nCount, sConfirm, bIsVoLan)
|
|
self.nIndex = nIndex
|
|
self.callback = callback
|
|
self.nCount = nCount
|
|
self.sConfirm = sConfirm
|
|
self.txtChoose = {}
|
|
self.Checkmark = {}
|
|
self.Mask = {}
|
|
self.bIsVoLan = bIsVoLan == true
|
|
delChildren(self._mapNode.trChoose)
|
|
for i = 1, nCount do
|
|
local goItemObj = instantiate(self._mapNode.Choose, self._mapNode.trChoose)
|
|
goItemObj:SetActive(true)
|
|
local txtChoose = goItemObj.transform:Find("btnChoose/txtChoose"):GetComponent("TMP_Text")
|
|
local Checkmark = goItemObj.transform:Find("btnChoose/Background/Checkmark"):GetComponent("Animator")
|
|
local Mask = goItemObj.transform:Find("btnChoose/Mask").gameObject
|
|
table.insert(self.txtChoose, txtChoose)
|
|
table.insert(self.Checkmark, Checkmark)
|
|
table.insert(self.Mask, Mask)
|
|
local btn = goItemObj.transform:Find("btnChoose"):GetComponent("UIButton")
|
|
local func_Handler = ui_handler(self, self.OnBtnClick_Choose, goItemObj, i)
|
|
btn.onClick:AddListener(func_Handler)
|
|
if i == self.nIndex then
|
|
Checkmark:Play("checkmark_in", -1, 1)
|
|
else
|
|
Checkmark:Play("checkmark_out", -1, 1)
|
|
end
|
|
end
|
|
end
|
|
function OptionDynamicCtrl:SetGray(tbGrayIndex, sTip)
|
|
self.tbGrayIndex = tbGrayIndex
|
|
self.sTip = sTip
|
|
for i = 1, self.nCount do
|
|
self.Mask[i]:SetActive(tbGrayIndex and tbGrayIndex[i])
|
|
end
|
|
end
|
|
function OptionDynamicCtrl:OnBtnClick_Choose(btn, index)
|
|
if self.nIndex == index then
|
|
return
|
|
end
|
|
if self.tbGrayIndex and self.tbGrayIndex[index] then
|
|
EventManager.Hit(EventId.OpenMessageBox, self.sTip or "")
|
|
return
|
|
end
|
|
local change = function()
|
|
self.Checkmark[self.nIndex]:SetTrigger("PlayCheckmarkHide")
|
|
self.Checkmark[index]:SetTrigger("PlayCheckmarkShow")
|
|
self.nIndex = index
|
|
self.callback(self.nIndex)
|
|
end
|
|
local checkConfirm = function()
|
|
if self.sConfirm then
|
|
local msg = {
|
|
nType = AllEnum.MessageBox.Confirm,
|
|
sContent = self.sConfirm,
|
|
callbackConfirm = function()
|
|
change()
|
|
end,
|
|
bBlur = false
|
|
}
|
|
EventManager.Hit(EventId.OpenMessageBox, msg)
|
|
else
|
|
change()
|
|
end
|
|
end
|
|
if self.bIsVoLan == true then
|
|
if index == 2 then
|
|
checkConfirm()
|
|
else
|
|
change()
|
|
end
|
|
else
|
|
checkConfirm()
|
|
end
|
|
end
|
|
return OptionDynamicCtrl
|