5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
551 lines
16 KiB
Lua
551 lines
16 KiB
Lua
local Avg_7_ChoiceCtrl = class("Avg_7_ChoiceCtrl", BaseCtrl)
|
|
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
|
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
|
Avg_7_ChoiceCtrl._mapNodeConfig = {
|
|
imgMask = {sComponentName = "Image"},
|
|
canvasGroup = {
|
|
sNodeName = "----root----",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
anim = {
|
|
sNodeName = "----main_role_choice----",
|
|
sComponentName = "Animator"
|
|
},
|
|
trMainRole = {sNodeName = "goMainRole", sComponentName = "Transform"},
|
|
rubyTmp_Choice_OS = {
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
goM = {sNodeName = "--M--"},
|
|
tbTMPLayout_M = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_Layout_M_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
tbRT_M = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_M_",
|
|
sComponentName = "RectTransform"
|
|
},
|
|
tbCG_M = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_M_",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
tbBtn_M = {
|
|
nCount = 4,
|
|
sNodeName = "btn_M_",
|
|
sComponentName = "NaviButton",
|
|
callback = "OnBtnClick_Choice"
|
|
},
|
|
tbTMP_M = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_M_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
goSelect_M = {
|
|
nCount = 4,
|
|
sNodeName = "goSelect_M_"
|
|
},
|
|
goR = {sNodeName = "--R--"},
|
|
tbTMPLayout_R = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_Layout_R_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
tbRT_R = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_R_",
|
|
sComponentName = "RectTransform"
|
|
},
|
|
tbCG_R = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_R_",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
tbBtn_R = {
|
|
nCount = 4,
|
|
sNodeName = "btn_R_",
|
|
sComponentName = "NaviButton",
|
|
callback = "OnBtnClick_Choice"
|
|
},
|
|
tbGoSelected_R = {
|
|
nCount = 4,
|
|
sNodeName = "goSelected_R_"
|
|
},
|
|
tbGoUnselected_R = {
|
|
nCount = 4,
|
|
sNodeName = "goUnselected_R_"
|
|
},
|
|
tbTMP_R = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_R_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
goSelect_R = {
|
|
nCount = 4,
|
|
sNodeName = "goSelect_R_"
|
|
},
|
|
goL = {sNodeName = "--L--"},
|
|
tbTMPLayout_L = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_Layout_L_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
tbRT_L = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_L_",
|
|
sComponentName = "RectTransform"
|
|
},
|
|
tbCG_L = {
|
|
nCount = 4,
|
|
sNodeName = "anim_root_L_",
|
|
sComponentName = "CanvasGroup"
|
|
},
|
|
tbBtn_L = {
|
|
nCount = 4,
|
|
sNodeName = "btn_L_",
|
|
sComponentName = "NaviButton",
|
|
callback = "OnBtnClick_Choice"
|
|
},
|
|
tbGoSelected_L = {
|
|
nCount = 4,
|
|
sNodeName = "goSelected_L_"
|
|
},
|
|
tbGoUnselected_L = {
|
|
nCount = 4,
|
|
sNodeName = "goUnselected_L_"
|
|
},
|
|
tbTMP_L = {
|
|
nCount = 4,
|
|
sNodeName = "rubyTmp_L_",
|
|
sComponentName = "RubyTextMeshProUGUI"
|
|
},
|
|
goSelect_L = {
|
|
nCount = 4,
|
|
sNodeName = "goSelect_L_"
|
|
}
|
|
}
|
|
Avg_7_ChoiceCtrl._mapEventConfig = {
|
|
GamepadUIChange = "OnEvent_GamepadUIChange",
|
|
[EventId.AvgSpeedUp] = "OnEvent_AvgSpeedUp"
|
|
}
|
|
function Avg_7_ChoiceCtrl:Awake()
|
|
self.tbChoiceData = {}
|
|
self.tbTotalChoiceCount = {}
|
|
self.sCurChoiceGroupId = nil
|
|
self.nType = nil
|
|
NovaAPI.SetImageColor(self._mapNode.imgMask, Color(0, 0, 0, 0))
|
|
NovaAPI.SetCanvasGroupInteractable(self._mapNode.canvasGroup, false)
|
|
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.canvasGroup, false)
|
|
self._mapNode.canvasGroup.gameObject:SetActive(false)
|
|
for i = 1, 4 do
|
|
self._mapNode.tbTMPLayout_M[i].gameObject:SetActive(false)
|
|
self._mapNode.tbTMPLayout_R[i].gameObject:SetActive(false)
|
|
self._mapNode.tbTMPLayout_L[i].gameObject:SetActive(false)
|
|
end
|
|
self._mapNode.goM:SetActive(false)
|
|
self._mapNode.goR:SetActive(false)
|
|
self._mapNode.goL:SetActive(false)
|
|
self.tbLogData = {}
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnEnable()
|
|
self:AddGamepadUINode()
|
|
self:BindSelect()
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnDisable()
|
|
self:UnbindSelect()
|
|
end
|
|
function Avg_7_ChoiceCtrl:_SetMask(bVisible)
|
|
NovaAPI.ImageDoFade(self._mapNode.imgMask, bVisible == true and 0.5 or 0, 0.2, true)
|
|
end
|
|
function Avg_7_ChoiceCtrl:_Set(nIndex, bVisible, bSelected, sContent, nExtraDelay)
|
|
local tbTxtLayout, tbRT, tbCG, tbTxt
|
|
if self.nType == 0 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_M
|
|
tbRT = self._mapNode.tbRT_M
|
|
tbCG = self._mapNode.tbCG_M
|
|
tbTxt = self._mapNode.tbTMP_M
|
|
elseif self.nType == 1 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_R
|
|
tbRT = self._mapNode.tbRT_R
|
|
tbCG = self._mapNode.tbCG_R
|
|
tbTxt = self._mapNode.tbTMP_R
|
|
elseif self.nType == 2 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_L
|
|
tbRT = self._mapNode.tbRT_L
|
|
tbCG = self._mapNode.tbCG_L
|
|
tbTxt = self._mapNode.tbTMP_L
|
|
end
|
|
local txtLayout = tbTxtLayout[nIndex]
|
|
local rt = tbRT[nIndex]
|
|
local canvasGroup = tbCG[nIndex]
|
|
local txt = tbTxt[nIndex]
|
|
local goChoice = txtLayout.gameObject
|
|
goChoice:SetActive(bVisible)
|
|
self:SetSelectBtnObj(nIndex, bVisible, bSelected)
|
|
if bVisible == false then
|
|
return
|
|
end
|
|
NovaAPI.SetCanvasGroupAlpha(canvasGroup, 0)
|
|
local nOffsetX = 0
|
|
if self.nType == 2 then
|
|
nOffsetX = -72 * (nIndex - 1)
|
|
end
|
|
rt.anchoredPosition = Vector2(500 + nOffsetX, 0)
|
|
rt.localScale = Vector3(0.5, 0.5, 1)
|
|
if self.nType == 1 then
|
|
self._mapNode.tbGoSelected_R[nIndex]:SetActive(bSelected == true)
|
|
self._mapNode.tbGoUnselected_R[nIndex]:SetActive(bSelected == false)
|
|
elseif self.nType == 2 then
|
|
self._mapNode.tbGoSelected_L[nIndex]:SetActive(bSelected == true)
|
|
self._mapNode.tbGoUnselected_L[nIndex]:SetActive(bSelected == false)
|
|
end
|
|
local sColor = "#264278"
|
|
if bSelected == true then
|
|
sColor = "#6E8297"
|
|
end
|
|
NovaAPI.SetTextColor_RubyTMP(txt, sColor)
|
|
sContent = ProcAvgTextContent(sContent, self._panel.nCurLanguageIdx)
|
|
NovaAPI.SetText_RubyTMP(txtLayout, sContent)
|
|
NovaAPI.SetText_RubyTMP(txt, sContent)
|
|
local nDelay = nIndex * 0.03
|
|
if nExtraDelay ~= nil then
|
|
nDelay = nDelay + nExtraDelay
|
|
end
|
|
canvasGroup:DOFade(1, 0.2):SetUpdate(true):SetDelay(nDelay)
|
|
rt:DOAnchorPosX(0 + nOffsetX, 0.2):SetUpdate(true):SetDelay(nDelay)
|
|
local sequence = DOTween.Sequence()
|
|
sequence:AppendInterval(nDelay)
|
|
sequence:Append(rt:DOScale(1.03, 0.2):SetUpdate(true):SetEase(Ease.OutQuint))
|
|
sequence:Append(rt:DOScale(0.99, 0.1):SetUpdate(true):SetEase(Ease.InCubic))
|
|
sequence:Append(rt:DOScale(1, 0.1):SetUpdate(true))
|
|
sequence:SetUpdate(true)
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnBtnClick_Choice(uiBtn)
|
|
self:ClearSelect()
|
|
local nIndex
|
|
if self.nType == 0 then
|
|
nIndex = table.indexof(self._mapNode.tbBtn_M, uiBtn)
|
|
elseif self.nType == 1 then
|
|
nIndex = table.indexof(self._mapNode.tbBtn_R, uiBtn)
|
|
elseif self.nType == 2 then
|
|
nIndex = table.indexof(self._mapNode.tbBtn_L, uiBtn)
|
|
end
|
|
if nIndex == nil then
|
|
return
|
|
end
|
|
if 0 >= table.indexof(self.tbChoiceData[self.sCurChoiceGroupId], nIndex) then
|
|
table.insert(self.tbChoiceData[self.sCurChoiceGroupId], nIndex)
|
|
end
|
|
local tbTxtLayout, tbRT, tbCG, tbTxt
|
|
if self.nType == 0 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_M
|
|
tbRT = self._mapNode.tbRT_M
|
|
tbCG = self._mapNode.tbCG_M
|
|
tbTxt = self._mapNode.tbTMP_M
|
|
elseif self.nType == 1 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_R
|
|
tbRT = self._mapNode.tbRT_R
|
|
tbCG = self._mapNode.tbCG_R
|
|
tbTxt = self._mapNode.tbTMP_R
|
|
elseif self.nType == 2 then
|
|
tbTxtLayout = self._mapNode.tbTMPLayout_L
|
|
tbRT = self._mapNode.tbRT_L
|
|
tbCG = self._mapNode.tbCG_L
|
|
tbTxt = self._mapNode.tbTMP_L
|
|
end
|
|
for i = 1, 4 do
|
|
local goChoice = tbTxtLayout[i].gameObject
|
|
local rt = tbRT[i]
|
|
local canvasGroup = tbCG[i]
|
|
if goChoice.activeSelf == true then
|
|
if i == nIndex then
|
|
canvasGroup:DOFade(0, 0.2):SetUpdate(true):SetDelay(0.2)
|
|
rt:DOScale(1.1, 0.2):SetUpdate(true):SetDelay(0.1):SetEase(Ease.OutQuart)
|
|
else
|
|
canvasGroup:DOFade(0, 0.2):SetUpdate(true):SetDelay(0.1)
|
|
rt:DOScale(0.3, 0.2):SetUpdate(true):SetDelay(0.1):SetEase(Ease.InQuart)
|
|
end
|
|
end
|
|
end
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
|
NovaAPI.SetCanvasGroupInteractable(self._mapNode.canvasGroup, false)
|
|
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.canvasGroup, false)
|
|
self:AddTimer(1, 0.4, "_RunNextCmd", true, true, true, nIndex)
|
|
self:_SetMask(false)
|
|
local sReplyContent = NovaAPI.GetText_RubyTMP(tbTxt[nIndex])
|
|
if self.nType == 1 then
|
|
EventManager.Hit(EventId.AvgChoiceToReplyPhoneMessage, sReplyContent)
|
|
end
|
|
if self.bShowMainRole == true then
|
|
self._mapNode.anim:SetTrigger("tOut")
|
|
end
|
|
WwiseAudioMgr:PlaySound("ui_choice_click")
|
|
self.tbLogData.nType = AllEnum.AvgLogType.Choice
|
|
self.tbLogData.sAvgId = nil
|
|
self.tbLogData.sContent = sReplyContent
|
|
self.tbLogData.sVoice = nil
|
|
EventManager.Hit(EventId.AvgMarkLog, self.tbLogData)
|
|
end
|
|
function Avg_7_ChoiceCtrl:_RunNextCmd(timer, nIndex)
|
|
if self:GetPanelId() == PanelId.AvgST then
|
|
if self.bShowMainRole == true then
|
|
EventManager.Hit(EventId.AvgChoiceMainRoleOS_Out)
|
|
end
|
|
self.bShowMainRole = nil
|
|
self._mapNode.canvasGroup.gameObject:SetActive(false)
|
|
self._panel:SetChoiceJumpTo(self.sCurChoiceGroupId, nIndex)
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnEvent_AvgSpeedUp(nRate)
|
|
if self:GetPanelId() ~= PanelId.AvgST then
|
|
return
|
|
end
|
|
self:OnEvent_AvgSpeedUp_Timer(nRate)
|
|
NovaAPI.SetAnimatorSpeed(self._mapNode.anim, nRate)
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetChoiceBegin(tbParam)
|
|
EventManager.Hit(EventId.AvgAllMenuBtnEnable, false)
|
|
local sChoiceGroupId = tbParam[1]
|
|
local bMaskVisible = tbParam[2] == 0
|
|
local tbVisibleType = tbParam[3]
|
|
local tbContent_CN_F = tbParam[4]
|
|
local tbContent_CN_M = tbParam[11]
|
|
local tbContent_JP_F = tbParam[13] or {}
|
|
local tbContent_JP_M = tbParam[14] or {}
|
|
local tbContent = {}
|
|
local _sContent
|
|
for i = 1, 4 do
|
|
if self._panel.sTxtLan == AllEnum.Language.CN then
|
|
_sContent = tbContent_CN_F[i]
|
|
if self._panel.sVoLan == AllEnum.Language.JP and type(tbContent_JP_F[i]) == "string" and tbContent_JP_F[i] ~= "" then
|
|
_sContent = tbContent_JP_F[i]
|
|
end
|
|
table.insert(tbContent, _sContent)
|
|
else
|
|
_sContent = tbContent_JP_F[i]
|
|
if self._panel.bIsPlayerMale == true and type(tbContent_JP_M[i]) == "string" and tbContent_JP_M[i] ~= "" then
|
|
_sContent = tbContent_JP_M[i]
|
|
end
|
|
if self._panel.sVoLan == AllEnum.Language.CN then
|
|
if type(tbContent_CN_F[i]) == "string" and tbContent_CN_F[i] ~= "" then
|
|
_sContent = tbContent_CN_F[i]
|
|
end
|
|
if self._panel.bIsPlayerMale == true and type(tbContent_CN_M[i]) == "string" and tbContent_CN_M[i] ~= "" then
|
|
_sContent = tbContent_CN_M[i]
|
|
end
|
|
end
|
|
table.insert(tbContent, _sContent)
|
|
end
|
|
end
|
|
local nType = tbParam[5]
|
|
self.bShowMainRole = tbParam[6] == 1
|
|
local sBody = tbParam[7]
|
|
local sFace = tbParam[8]
|
|
local sEmoji = tbParam[9]
|
|
local sContentOS = tbParam[10]
|
|
self.sCurChoiceGroupId = sChoiceGroupId
|
|
self.nType = nType
|
|
self._mapNode.goM:SetActive(self.nType == 0)
|
|
self._mapNode.goR:SetActive(self.nType == 1)
|
|
self._mapNode.goL:SetActive(self.nType == 2)
|
|
self:_SetMask(bMaskVisible)
|
|
self._mapNode.canvasGroup.gameObject:SetActive(true)
|
|
NovaAPI.SetCanvasGroupInteractable(self._mapNode.canvasGroup, true)
|
|
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.canvasGroup, true)
|
|
self:ResetGamepadUI()
|
|
if self.tbChoiceData[sChoiceGroupId] == nil then
|
|
self.tbChoiceData[sChoiceGroupId] = {}
|
|
end
|
|
local tbData = self.tbChoiceData[sChoiceGroupId]
|
|
local nBlockTime = 0.4
|
|
local nChoiceCount = 0
|
|
local nExtraDelay
|
|
if self.bShowMainRole == true then
|
|
nExtraDelay = 0.2
|
|
end
|
|
for i = 1, 4 do
|
|
local bVisible = true
|
|
local sContent = tbContent[i]
|
|
if sContent == "" then
|
|
bVisible = false
|
|
else
|
|
nChoiceCount = nChoiceCount + 1
|
|
local _type = tbVisibleType[i]
|
|
if _type == 0 then
|
|
bVisible = true
|
|
elseif _type == 1 then
|
|
bVisible = 0 < table.indexof(tbData, i - 1)
|
|
elseif _type == 2 then
|
|
for j = 1, 4 do
|
|
if j ~= i and 0 >= table.indexof(tbData, j) then
|
|
bVisible = false
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self:_Set(i, bVisible, 0 < table.indexof(tbData, i), sContent, nExtraDelay)
|
|
if bVisible == true then
|
|
nBlockTime = nBlockTime + 0.03
|
|
end
|
|
end
|
|
GamepadUIManager.SetNavigation(self.tbSelectBtnObj, false)
|
|
self:SelectChoiceBtn()
|
|
self.tbTotalChoiceCount[sChoiceGroupId] = nChoiceCount
|
|
EventManager.Hit(EventId.TemporaryBlockInput, nBlockTime)
|
|
if self.bShowMainRole == true then
|
|
sContentOS = ProcAvgTextContent(sContentOS, self._panel.nCurLanguageIdx)
|
|
NovaAPI.SetText_RubyTMP(self._mapNode.rubyTmp_Choice_OS, sContentOS)
|
|
EventManager.Hit(EventId.AvgChoiceMainRoleOS_In, self._mapNode.trMainRole, sBody, sFace, sEmoji)
|
|
self._mapNode.anim:SetTrigger("tIn")
|
|
end
|
|
NovaAPI.SetScreenSleepTimeout(false)
|
|
return -1
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetChoiceJumpTo(tbParam)
|
|
EventManager.Hit(EventId.AvgAllMenuBtnEnable, true)
|
|
EventManager.Hit("AvgCheckAutoOnOff")
|
|
return 0
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetChoiceRollback(tbParam)
|
|
local sGroupId = tbParam[1]
|
|
local nRollBackType = tbParam[2]
|
|
if nRollBackType == 1 then
|
|
local tbData = self.tbChoiceData[sGroupId]
|
|
if #tbData >= self.tbTotalChoiceCount[sGroupId] then
|
|
self._panel:SetChoiceRollover(sGroupId)
|
|
else
|
|
self._panel:SetChoiceRollback(sGroupId)
|
|
end
|
|
else
|
|
self._panel:SetChoiceRollback(sGroupId)
|
|
end
|
|
return 0
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetChoiceRollover(tbParam)
|
|
self._panel:SetChoiceRollover(tbParam[1])
|
|
return 0
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetChoiceEnd(tbParam)
|
|
return 0
|
|
end
|
|
function Avg_7_ChoiceCtrl:RestoreAll(bActive)
|
|
self.gameObject:SetActive(bActive)
|
|
end
|
|
function Avg_7_ChoiceCtrl:AddGamepadUINode()
|
|
GamepadUIManager.AddGamepadUINode("AVG", self:GetGamepadUINode())
|
|
end
|
|
function Avg_7_ChoiceCtrl:BindSelect()
|
|
self.handlerBtn_M, self.handlerBtn_R, self.handlerBtn_L = {}, {}, {}
|
|
for k, v in ipairs(self._mapNode.tbBtn_M) do
|
|
self.handlerBtn_M[k] = ui_handler(self, self.OnBtnSelect_Choice, v, k)
|
|
v.onSelect:AddListener(self.handlerBtn_M[k])
|
|
end
|
|
for k, v in ipairs(self._mapNode.tbBtn_R) do
|
|
self.handlerBtn_R[k] = ui_handler(self, self.OnBtnSelect_Choice, v, k)
|
|
v.onSelect:AddListener(self.handlerBtn_R[k])
|
|
end
|
|
for k, v in ipairs(self._mapNode.tbBtn_L) do
|
|
self.handlerBtn_L[k] = ui_handler(self, self.OnBtnSelect_Choice, v, k)
|
|
v.onSelect:AddListener(self.handlerBtn_L[k])
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:UnbindSelect()
|
|
for k, v in ipairs(self._mapNode.tbBtn_M) do
|
|
v.onSelect:RemoveListener(self.handlerBtn_M[k])
|
|
end
|
|
for k, v in ipairs(self._mapNode.tbBtn_R) do
|
|
v.onSelect:RemoveListener(self.handlerBtn_R[k])
|
|
end
|
|
for k, v in ipairs(self._mapNode.tbBtn_L) do
|
|
v.onSelect:RemoveListener(self.handlerBtn_L[k])
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:GetSelectList()
|
|
local tbSelect
|
|
if self.nType == 0 then
|
|
tbSelect = self._mapNode.goSelect_M
|
|
elseif self.nType == 1 then
|
|
tbSelect = self._mapNode.goSelect_R
|
|
elseif self.nType == 2 then
|
|
tbSelect = self._mapNode.goSelect_L
|
|
end
|
|
return tbSelect
|
|
end
|
|
function Avg_7_ChoiceCtrl:GetBtnList()
|
|
local tbBtn
|
|
if self.nType == 0 then
|
|
tbBtn = self._mapNode.tbBtn_M
|
|
elseif self.nType == 1 then
|
|
tbBtn = self._mapNode.tbBtn_R
|
|
elseif self.nType == 2 then
|
|
tbBtn = self._mapNode.tbBtn_L
|
|
end
|
|
return tbBtn
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnBtnSelect_Choice(btn, nIndex)
|
|
if self.nSelectIndex == nIndex then
|
|
return
|
|
end
|
|
local tbSelect = self:GetSelectList()
|
|
for k, v in ipairs(tbSelect) do
|
|
if k == nIndex then
|
|
if GamepadUIManager.GetCurUIType() ~= AllEnum.GamepadUIType.Other and GamepadUIManager.GetCurUIType() ~= AllEnum.GamepadUIType.Mouse then
|
|
v:SetActive(true)
|
|
else
|
|
v:SetActive(false)
|
|
end
|
|
elseif k == self.nSelectIndex then
|
|
v:SetActive(false)
|
|
end
|
|
end
|
|
self.nSelectIndex = nIndex
|
|
end
|
|
function Avg_7_ChoiceCtrl:SetSelectBtnObj(nIndex, bVisible, bSelected)
|
|
if bVisible then
|
|
if next(self.tbSelectBtnObj) == nil then
|
|
self.nSelectIndex = nIndex
|
|
end
|
|
local tbBtn = self:GetBtnList()
|
|
table.insert(self.tbSelectBtnObj, tbBtn[nIndex])
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:SelectChoiceBtn()
|
|
local tbSelect = self:GetSelectList()
|
|
local tbBtn = self:GetBtnList()
|
|
local nUIType = GamepadUIManager.GetCurUIType()
|
|
if nUIType ~= AllEnum.GamepadUIType.Other and nUIType ~= AllEnum.GamepadUIType.Mouse then
|
|
if self.nSelectIndex and self.nSelectIndex ~= 0 then
|
|
tbSelect[self.nSelectIndex]:SetActive(true)
|
|
GamepadUIManager.SetSelectedUI(tbBtn[self.nSelectIndex].gameObject)
|
|
end
|
|
else
|
|
for k, _ in ipairs(tbBtn) do
|
|
tbSelect[k]:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:ResetGamepadUI()
|
|
self._panel.sCurGamepadUI = "Choice"
|
|
GamepadUIManager.ClearSelectedUI()
|
|
self.tbSelectBtnObj = {}
|
|
self.nSelectIndex = 0
|
|
local tbSelect = self:GetSelectList()
|
|
for _, v in ipairs(tbSelect) do
|
|
v:SetActive(false)
|
|
end
|
|
end
|
|
function Avg_7_ChoiceCtrl:ClearSelect()
|
|
GamepadUIManager.ClearSelectedUI()
|
|
self.nSelectIndex = 0
|
|
self._panel.sCurGamepadUI = nil
|
|
end
|
|
function Avg_7_ChoiceCtrl:OnEvent_GamepadUIChange(sName, nBeforeType, nAfterType)
|
|
if sName ~= "AVG" or self._panel.sCurGamepadUI ~= "Choice" then
|
|
return
|
|
end
|
|
self:SelectChoiceBtn()
|
|
end
|
|
return Avg_7_ChoiceCtrl
|