local FriendTitleCtrl = class("FriendTitleCtrl", BaseCtrl) FriendTitleCtrl._mapNodeConfig = { txtWindowTitle = { sComponentName = "TMP_Text", sLanguageId = "Friend_ChangeTitle" }, btnClose = { sComponentName = "UIButton", callback = "OnBtnClick_Cancel" }, btnCancel = { sComponentName = "UIButton", callback = "OnBtnClick_Cancel" }, btnConfirm1 = { sComponentName = "UIButton", callback = "OnBtnClick_Confirm" }, txtBtnConfirm = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Confirm" }, txtBtnCancel = { sComponentName = "TMP_Text", sLanguageId = "Friend_Btn_Cancel" }, txtSelect = {nCount = 2, sComponentName = "TMP_Text"}, sv = { nCount = 2, sComponentName = "LoopScrollView" } } FriendTitleCtrl._mapEventConfig = {} function FriendTitleCtrl:Open() self:Refresh() self:PlayInAni() end function FriendTitleCtrl:Refresh() local nPre, nSuf = PlayerData.Base:GetPlayerTitle() NovaAPI.SetTMPText(self._mapNode.txtSelect[1], nPre == 0 and "" or ConfigTable.GetData("Title", nPre).Desc) NovaAPI.SetTMPText(self._mapNode.txtSelect[2], nSuf == 0 and "" or ConfigTable.GetData("Title", nSuf).Desc) self.tbPrefix, self.tbSuffix = PlayerData.Base:GetPlayerAllTitle() local nNumPre = #self.tbPrefix self._mapNode.sv[1].gameObject:SetActive(0 < nNumPre) if 0 < nNumPre then self.nPrefixIndex = 1 for k, v in pairs(self.tbPrefix) do if v.nId == nPre then self.nPrefixIndex = k end end self._mapNode.sv[1]:Init(nNumPre, self, self.OnPrefixGridRefresh, self.OnPrefixGridClick) end local nNumSuf = #self.tbSuffix self._mapNode.sv[2].gameObject:SetActive(0 < nNumSuf) if 0 < nNumSuf then self.nSuffixIndex = 1 for k, v in pairs(self.tbSuffix) do if v.nId == nSuf then self.nSuffixIndex = k end end self._mapNode.sv[2]:Init(nNumSuf, self, self.OnSuffixGridRefresh, self.OnSuffixGridClick) end end function FriendTitleCtrl:OnPrefixGridRefresh(goGrid, gridIndex) local nIndex = gridIndex + 1 local mapData = self.tbPrefix[nIndex] local imgSelect = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject local txtPlayerTitle = goGrid.transform:Find("btnGrid/AnimRoot/txtPlayerTitle"):GetComponent("TMP_Text") local redDot = goGrid.transform:Find("btnGrid/AnimRoot/redDot").gameObject RedDotManager.RegisterNode(RedDotDefine.Friend_Title_Item, mapData.nId, redDot, nil, nil, true) imgSelect:SetActive(self.nPrefixIndex == nIndex) NovaAPI.SetTMPText(txtPlayerTitle, mapData.sDesc) end function FriendTitleCtrl:OnPrefixGridClick(goGrid, gridIndex) local nIndex = gridIndex + 1 if self.nPrefixIndex == nIndex then return end local mapData = self.tbPrefix[nIndex] if self.nPrefixIndex then local goSelect = self._mapNode.sv[1].transform:Find("Viewport/Content/" .. self.nPrefixIndex - 1) if goSelect then local imgSelect = goSelect.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject imgSelect:SetActive(false) end end local imgSelect = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject imgSelect:SetActive(true) self.nPrefixIndex = nIndex NovaAPI.SetTMPText(self._mapNode.txtSelect[1], mapData.sDesc) RedDotManager.SetValid(RedDotDefine.Friend_Title_Item, mapData.nId, false) end function FriendTitleCtrl:OnSuffixGridRefresh(goGrid, gridIndex) local nIndex = gridIndex + 1 local mapData = self.tbSuffix[nIndex] local imgSelect = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject local txtPlayerTitle = goGrid.transform:Find("btnGrid/AnimRoot/txtPlayerTitle"):GetComponent("TMP_Text") local redDot = goGrid.transform:Find("btnGrid/AnimRoot/redDot").gameObject RedDotManager.RegisterNode(RedDotDefine.Friend_Title_Item, mapData.nId, redDot, nil, nil, true) imgSelect:SetActive(self.nSuffixIndex == nIndex) NovaAPI.SetTMPText(txtPlayerTitle, mapData.sDesc) end function FriendTitleCtrl:OnSuffixGridClick(goGrid, gridIndex) local nIndex = gridIndex + 1 if self.nSuffixIndex == nIndex then return end local mapData = self.tbSuffix[nIndex] if self.nSuffixIndex then local goSelect = self._mapNode.sv[2].transform:Find("Viewport/Content/" .. self.nSuffixIndex - 1) if goSelect then local imgSelect = goSelect.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject imgSelect:SetActive(false) end end local imgSelect = goGrid.transform:Find("btnGrid/AnimRoot/imgSelect").gameObject imgSelect:SetActive(true) self.nSuffixIndex = nIndex NovaAPI.SetTMPText(self._mapNode.txtSelect[2], mapData.sDesc) RedDotManager.SetValid(RedDotDefine.Friend_Title_Item, mapData.nId, false) end function FriendTitleCtrl:PlayInAni() self.gameObject:SetActive(true) self.ani:Play("t_window_04_t_in") EventManager.Hit(EventId.TemporaryBlockInput, 0.3) end function FriendTitleCtrl:PlayOutAni() self.ani:Play("t_window_04_t_out") self:AddTimer(1, 0.2, "Close", true, true, true) end function FriendTitleCtrl:Close() for _, v in ipairs(self.tbPrefix) do RedDotManager.SetValid(RedDotDefine.Friend_Title_Item, v.nId, false) end for _, v in ipairs(self.tbSuffix) do RedDotManager.SetValid(RedDotDefine.Friend_Title_Item, v.nId, false) end self.gameObject:SetActive(false) end function FriendTitleCtrl:Awake() self.ani = self.gameObject.transform:GetComponent("Animator") end function FriendTitleCtrl:OnEnable() end function FriendTitleCtrl:OnDisable() end function FriendTitleCtrl:OnDestroy() end function FriendTitleCtrl:OnBtnClick_Cancel(btn) EventManager.Hit("FriendClosePop") end function FriendTitleCtrl:OnBtnClick_Confirm(btn) local callback = function() EventManager.Hit("FriendClosePop") EventManager.Hit("FriendRefreshTitle") end PlayerData.Base:SendPlayerTitleEditReq(self.tbPrefix[self.nPrefixIndex].nId, self.tbSuffix[self.nSuffixIndex].nId, callback) end return FriendTitleCtrl